About

After earning two degrees in theoretical philosophy, in the so-called analytic tradition, I’m currently in the process of switching towards a more practical career. For that purpose, I’m pursuing a degree in Software Engineering. Apart from utilitarian considerations, this was also the consequence of a friend of mine who back then pursued a PhD at CMU. He recommended I should check out the classic CS textbook Structure and Interpretation of Computer Programs by Abelson and Sussman. I enjoyed it a lot, but the actual university curriculum I was subsequently exposed to grounded me in reality again.

While the standard languages and associated technologies I’ve learnt at university are rather firmly rooted in the mainstream (Java, C, C++, Python, Erlang), for better or worse, I use part of my spare time to focus on three overlapping areas of computer science: programming languages, functional programming (preferably in Haskell), and compilers. I’m doing this in a combination of supplementary university courses, MOOCs, and self-studies.

I very much enjoy online education offerings. I joined Khan Academy years ago to brush up on mathematics, and found the mode of instruction with short videos and interactive exercises superior to what I’ve experienced in the class room or at university. I don’t spend much time on Khan Academy these days, but as you can see in my profile, I managed to rack up a good 3 million “energy points”, which probably made me a power user back in the days. Among MOOC providers, Coursera (profile) and edX are my favorites, but I’ve also taken courses on Udacity and the Saylor Foundation. A collection of my MOOCs certificates is available on my github account. I think they nicely complement out the couple of college degrees I’ve earned.

I’m not overly active on social media platforms, viewing them mostly as a distraction, but I do have profiles on the following sites:

I have attempted to gather profiles in one place, like on BrandYourself and About.me, but that takes a bit too much time to keep up to date.

Feel free to connect on LinkedIn. I only add people I’ve met in real life on Facebook, though.

18 thoughts on “About

  1. Joseph Gabriella

    Thank you for your solutions. Very helpful to me as I endeavor to learn Java.

    Are you a professor? If so, where? I am a professor at Toyo University in Tokyo. Would be delighted to have you join my LinkedIn Network if you feel so inclined. I am particulary interested in knowing more about how you use Java / what you use it for.

    Thank you again for sharing your knowlege. Much appreciated.

    Joseph

    Reply
    1. Gregor Ulm Post author

      Hi Joseph,

      I’m glad that you’ve found those Java solutions helpful.

      I’m not a professor, but a student. I’ve mainly used Java for university projects. In total I’ve probably written over 10,000 lines of Java code, so I’d say I’m moderately competent in it. However, when I do have the choice, I prefer using other languages, preferably one with a strong static typing system, like Haskell or ML. Depending on your goals you might want to explore some other languages, too, since Java is very verbose, which will limit your productivity.

      You’re welcome to add me to your LinkedIn network. To do so you might need my email address, which is gregor (dot) ulm (at) gmail (dot) com.

      Reply
  2. Zachary Sims


    I really enjoy your site, very informative and helpful. It has aided me a lot in my path to becoming a software/computer engineer myself. Keep up the incredible work Greg.

    -Zach

    Reply
    1. Gregor Ulm Post author

      Apparently you like my site so much that you copy and paste my solutions to yours. Please note that mere replication does not qualify as “fair use”, which is why I would very much like you to remove my content from your site. Thank you very much.

      Reply
  3. Brandon

    I’m hoping you’ll have the time and patience to help a stranger. This is unrelated ,but I’m looking for an answer. I’m finishing my AA after the summer of 2015 ,and i want to pursue a major in computer science. My issue is that i’ll be taking classes unrelated to computer science until my AA is completed. If you were in my situation(taking yourself back to the beginning). Where would you start? what languages should i pursue to learn on my own time? I understand I’m far away from my goal of writing android apps ,but I’m not interested in a fast track ,but instead the right track. I apologize if this is’nt the correct way to contact you ,but it seemed the easiest for you to see. Looking to hear back from you. -Brandon

    Reply
    1. Gregor Ulm Post author

      For my view on which languages to learn, see this post:
      http://gregorulm.com/programming-languages-to-learn/
      Since your goal is to write Android apps, you’re probably best served by first learning imperative programming in Python, and then immediately moving on to Java. Of course you should eventually explore lower and higher levels of abstractions as well, and eventually spend some time and effort to learn C and Haskell.
      The most relevant courses in the CS curriculum are arguably Datastructures/Algorithms, and Discrete Mathematics. You’ll find excellent course materials online for free, so all it takes is spare time and determination. I recommend several relevant courses in this post:
      http://gregorulm.com/replicating-a-bsc-in-computer-science-through-moocs/

      Reply
  4. Marwan

    Hi Gregor,

    Do you have an email by chance for someone to get in touch with you? or I guess you can email me to my hidden email that I used for this post. I would love to talk to you about your experience and the whole switching career decision. I am going through the same process, and looking to get into computer security. I actually just took Coursera’s intro to programming with Python, and I am doing the second level class now.

    Looking forward to hearing from you,

    Cheers,

    Marwan

    Reply
    1. Gregor Ulm Post author

      Hi Marwan,

      my email address follows the pattern “firstname (dot) lastname (at) gmail.com”.

      Reply
  5. Molly Clifton

    i really appreciate the codingbat answers. my friend and i find them very helpful for if we get stuck on a problem for school. this is the most reliable codingbat website.

    Reply
  6. Lunnij I.

    Hi Gregor,

    Thank you so much for saving me hours of time for my Computer Science class. I appreciate all the work you did, and analyzing your solutions makes me feel more prepared for the AP Computer Science’s free response questions.

    Reply
  7. Henry

    Hey Gregor,

    I appreciate the time you’ve put into your website. Particularly helpful for me was the bit about your Bachelor Degree at GU.

    I am about to apply for it myself, but I am still in doubt about whether I should or not. I have decided I want to become a programmer and be able to develop my own projects in the future. While those do not take shape, however, I would like to develop Java apps or enter the game industry as a C++ (or similar) programmer. Do you think the GU Bachelor would prepare me for such? Also, how much math did you actually need to use throughout the program? I never had that many problems with it, but I haven’t studied it in more than 10 years, so I have forgotten a lot, if not most of it due to lack of practice.

    As you mentioned, first level English-taught options are scarce, so I would like to be sure of my choice seeing I feel somewhat old already. There is also this https://lnu.se/en/program/ngdpv/20162/61003/ at Linnaeus University. Have you ever heard of it?

    Thank you in advance for any tips.

    Reply
    1. Gregor Ulm Post author

      To briefly answer your questions:
      1) The Software Engineering Bachelor’s degree at GU certainly prepares you for a career as a mainstream Java programmer. If you want to work as a graphics engine developer in the games industry, you are probably better off with a degree in (applied) mathematics, supplemented with relevant computer science courses.
      2) In the Software Engineering program you’ll be able to get by with basic mathematics. Sadly, the more theoretical aspects of CS are often only glossed over or completely ignored, which is a reason why the more motivated students either read additional CS courses, or switch to CS, which is only an option if you speak Swedish, unfortunately.
      3) I took two mathematics courses at Linnaeus University via distance learning. Both were taught well. That particular degree program seems similar to the one at GU, so what I wrote in 1) presumably applies here as well.

      Reply
      1. Henry

        Thank you for your input, Gregor.

        I feel I should go for either of those two, instead of perhaps applying for the Uppsala bachelor in game design/programming. To be perfectly candid, I do not feel like I should study CS. I actually look forward to specializing in programming itself, focusing on a few languages. It’s a good thing there is not that much math involved, I have forgotten so much about it, even though I am now in the khan academy to brush up on it. I am also learning the basics of Java at Codecademy and I already know HTML/CSS. Right now, I think about focusing on Java, Python, C++ and C# to be able to work as a web developer front or back end, app developer, or game programmer (not heavily focused on 3D engines). What do you think about those languages? Are they appropriate from your experience?

        Reply
        1. Gregor Ulm Post author

          Based on what you wrote, I’d recommend picking Python and one of the other three languages. Java and C# are very similar. C++ is likewise object-oriented, but gives you direct memory access and more ways of shooting yourself in the foot. Why don’t you just keep an eye on your goal, and figure out what you need to know to get there? You mention four rather different areas of software development. Web front-end development has very little in common with backend development. Mobile app development contains front and backend development, of course using different technologies. I know very little about professional games development, but, if I’m not mistaken, C++ is still the language of choice whenever high performance is required. Otherwise, scripting languages are often used. Both Python and Lua are popular for that purpose.

          Reply
          1. Henry

            Yea, I am still somewhat lost about what I should pursue within programming. Truthfully, I find it quite hard to find clear information about programming/development that isn’t directed at people already in the area. For those laymen trying to gather information and understanding of the specifics about the education and the market is a bit tricky. If I could freely choose an area to work with, I’d prefer game development (not necessarily AAA). But since I can’t count on working with that, I’d like to have all (or most) bases covered and be able to work in most mainstream programming functions, i.e. web developing (it seems). Front or back end isn’t necessarily important, I’d pick the one with which I am most comfortable. I believe you when you say front and back-end are very different. Honestly I don’t know those two in sufficient detail to be able to make any proper assessment right now. I actually don’t really know how to home in on a more defined programming career. I feel like I need more information, but not only I don’t know where to get it, but I also don’t know what it is exactly I need. I am hoping that within GU’s program I am able to somehow gravitate towards this or that, based on what I manage to understand about it.

            On another note, I have also just received a disturbing e-mail from Linnaeus University, where the program coordinator told me they mostly teach Java, pretty much leaving all other languages out. How can that even be?! I was pretty shocked and less inclined to attend their program because of this.

  8. Gregor Ulm Post author

    Henry,
    it makes sense that Linnaeus University primarily uses Java. Other universities in Sweden are still teaching C++. You will find many more job offers for people competent in those languages than, for instance, Python. Computer science departments normally tell you that they teach you “programming” instead of a programming language, but employers, even though some proclaim the opposite, tend to look for people who are proficient in particular languages. In fact, based on my experience, I am tempted to say that being a demonstrable polyglot programmer can severely harm you when looking for a job. For instance, I once bombed a job interview by telling the guy that what he is asking for is a one-liner in Haskell, so I wrote it down, and then gave him the translation in Java. He was visibly uncomfortable with the Haskell syntax on the white board. Well, you live and learn.

    Reply
    1. Henry

      Yea, I guess you are right. Either way, I think I should figure out what to specialize in once I am in the program itself. It seems to provide all the bases required for me to pursue whatever I chose within programming in general.

      On a side note, do you remember what the minimum entry grades were when you applied? Or perhaps do you have a clue of where I could check that? I don’t want to make a whole set of plans then get rejected by the university.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Spammer prevention; the answer is an integer: * Time limit is exhausted. Please reload CAPTCHA.