Harvard Online Master’s Degree in Software Engineering

I’ve seen a lot of questions recently by programmers on Slashdot, Reddit and Stack Overflow basically asking:

I’m writing code, but I’m not very good.  What can I do to change that?

For people in that position who already have a bachelors degree (but not necessarily in software engineering or CS), I’d suggest a little known educational gem.  The ALM in IT degree focused on software engineering from Harvard’s Extension School is an excellent program that will often meet the needs of people who find themselves in the position above. It offers a good education and it one of the least expensive ways to get a master’s degree for someone interested in software engineering. In this article I want to describe the program, my experience and go through class by class and discuss what I found useful.

I completed a master’s degree (ALM in IT) from Harvard with a concentration in software engineering last year. Most of my classes were taken online. I’ve written about what it was like getting an online degree, but I wanted to write up something a bit more focused on programmers who are looking at possibly getting a master’s degree and would be interested hearing about Harvard’s online master’s degree programs.

ALM in IT Degree with the Software Engineering Concentration

The ALM in IT degree is a master’s of arts degree. It isn’t a master’s of science like you’d get if you went to the engineering school. The required courses (see below) were similar to what I’ve seen in many master’s of science degree plan sheets at state schools. If you want to be a computer scientist, this isn’t the best degree for you.  If you want to be a better software engineer, it is ideal because it allows you to choose a good balance of practical classes in current technologies (Java, XML, distributed computing, etc.) with the more theoretical classes (algorithms, theory of computation, etc.).

This balance keeps the program accessible to people who don’t have a heavy computer science or math background.  If you are writing programs, but don’t feel like you are doing “software engineering” you probably have sufficient background to be successful with some hard work and perhaps an extra course in discrete mathematics.

Admission to Harvard’s Extension School

Admission to the Harvard Extension school is simple and very different from the normal competitive college admissions process.  You take three classes toward the degree and then apply for admission. As far as I’m aware, the successful completion of the three courses with B or better is the main criteria for admission. There isn’t a panel of people looking over your application and rejecting this person because they didn’t have enough extra-curricular activities. You must be proficient in English, have a bachelor’s degree and enough of a background in what you are wanting to study to have a reasonable chance of success. It appears that your ability to pass three courses with a B is probably going to demonstrate most of those skills.

This is an interesting approach because it is very much based on your ability to actually do the course work.  The Extension School can do this because their online classes allow them to scale to a much larger number of students than what you’d experience in the other Harvard schools.

Online Master’s Degree / Residency Requirement

To be clear, Harvard doesn’t offer any degrees that are completely done online.  Even the degrees where the majority of the classes can be taken online have a residency requirement. For the ALM in IT program, I had to be on campus for one semester.  Fortunately the summer 8 week semester counts toward the requirement so that is what I did. It is a lot easier to work out an 8 week leave of absence or telecommute arrangement with your employer than it is to try to take off for an entire semester.

The Master’s Degree Classes

My degree plan required 10 four hour courses. Below are the classes I took for the ALM in IT degree. I’ve tried to list them in roughly the order I took the classes from start to finish. Some of my choices were influenced by what was available and also the need to take a certain number of classes from Harvard instructors as opposed to the classes taught by adjunct faculty.

After I started the program, they made a change so one of the three courses you complete for admission must be an algorithms or computational theory course. This is a good thing because you don’t want to get clear to the end of your program only to discover you can’t pass one of the more theoretical classes.

Java for Distributed Computing CSCI E-160

This was was a bunch of firsts for me.  It was the first class I had taken on Java, the first class I had taken online, the first class I took at the Harvard Extension School and my first graduate programming class.  While most classes that introduce you to Java focus on just learning the language, this class assumes that you can pick the language up without too much effort so after a short introduction to the JDK, classspaths and syntax, it gets into distributed computing using RMI.

The class was fascinating and I was impressed with how much material we covered in such a short period of time.  The teacher was very interesting even if he did tend to occasionally veer off on rabbit trails.  (We had one optional lecture on jazz music.)

If you are wanting to learn Java, I’d highly recommend this online course because it focuses on actually doing stuff with the language instead of beating people over the head with the syntax.  If you have no programming background, it probably isn’t the best place for you to start.

Distributed/Enterprise Computing CSCI E-162

When I signed up for this course I still wasn’t sure if I was going to actually pursue the degree.  I wanted to get a but more exposure to Java so learning about  Java EE seemed like a good next step.  The class was well worth my time and I learned a lot, but a lot of what I took away from it was that I’m not that interested in doing pure Java EE programming–particularly Java EE the way it was done when I took this class.

The class was actually focused on distributed computing and Java just happened to be the programming language that was being used to illustrate those concepts. So there was a lot of discussion about the the theory of how distributed computing works followed by the actual application of implementing those things in Java EE.

Even if you don’t plan on doing any type of distributed development, this class is well worth the investment of your time because any Java programmer is going to run into aspects of EE regardless of what they are working on.  This class provides a good foundation.

Design Patterns and Java CSCI E-247

This class covered design patterns and software design.  It used Java and required quite a bit of work with UML diagrams. Looking over my notes, it looks like most of the programming projects involved working with directed acyclic graphs–what you use to create a project management flow chart. The code included things like writing Iterators to navigate the graph and Exceptions if you tried to create some type of illegal cycle.

The idea was to work through a set of assignments where each on built on the previous. If you used what you were learning in the class it was easy to do each assignment because your code was decoupled and easy to modify. If you didn’t make good use of design patterns you ended up having to tear out large sections of your code and redo it. It was a good experience because it modeled real life, but in a setting where you could carefully observe and learn from the consequence of each design decision.

Communication Protocols CSCI E-131B

I took this class because I had been doing quite a bit of work in networking. In retrospect, I think I’ve used less of what I learned from this class than some of the others.  Of course, I also went into this class with a great deal of prior experience and training, so it is hard to separate my current knowledge into what came from the class and what came from other experience. In reality, I think the class clarified a lot of information that I kind of knew from my network training, but it really made me think through the process of exactly what is happening on the network.

For example, a typical homework assignment showed a network design with several hosts on either side of a router and asked you to provide a detailed list of exactly how a message was sent from a host on one side of the router to the host on the other side.  The correct answer included details about how the application passes data down the stack, the host sends and ARP request, gets a response from the router, enters the MAC address in the ARP table, etc.

The class was interesting, but not as hands-on as the programming classes.  My prior experience in networking made the class seem less memorable, but at the same time I have solved some incredibly complex networking problems that drew heavily on the information I learned in this class.

Adv Topics in Data Networking CSCI E-132

Like 131B, I took this online class because I was doing a lot of work in networking at the time. It felt like a continuation of E-131B, but with a different teacher and more of a “survey” course style.  One thing I took away from this course is how difficult open book tests can be. I remember the professor saying something about his grading tried to take into account how long your answer was.  The more you wrote, the less they assumed you knew the correct answer so they tried to give more points for correct short answers than “cover all the bases” answers.

Discrete Math MATH S-104

Before taking this class, I was trying to make it through Theory of Computation by sheer effort. I eventually dropped Theory of Computation, took Discrete Math and then went back and passed Theory of Computation.  Discrete Math didn’t count toward my degree, but it was well worth the effort for someone without a lot of math background.

I took this class during the summer semester when I was on campus.

Web Development Using XML CSCI S-L

This class was very interesting because it was taught by someone who works on the Harvard websites and turns the data in the Oracle database into the static HTML listing every course with links to the prerequisites, etc. My final project in this class was a system that would take an xml file listing book ISBN numbers and my review, download the associated information from Amazon and created a combined XML document.  This XML document was then processed using XSL to create a HTML website with an index, category and individual pages.  It also used FOP to create a PDF using the same data file.

Interestingly when I applied for my first job where I was going to be programming 100% of the time, this project was what they seemed to be most interested in hearing about. Their product didn’t really do anything with web-services or XML, so I’m not really sure what was impressive about it.

The class had a lot of interesting projects including using XML to generate SVG flags for various nations. We also used some of the Harvard course listings to produce PDFs with hyper linked indexes and Apache Forest and Cocoon to create dynamic pages defined in XML.

The class was a lot of work, and I took it during the summer session so the timeframe was very compressed, but it was very rewarding and the knowledge has been very useful.

Theory of Computation CSCI E-207

For me this was the hardest course out of the entire program.  As I mentioned above, I originally started this class and dropped it.  I was about 1/3rd of the way through and earning a B, but I felt my foundation was weak and I wanted to take Discrete Mathematics to help shore things up.

If you have a great deal of training in math this class might not be very difficult, but I was coming from a strong background in music composition–which wasn’t particularly useful in this context.

This class was the last time it was taught by Dr. Lewis.  From what I understand he was the same teacher who taught the course when Bill Gates took it years ago.

While the class was difficult, it probably stretched my mind more than just about anything else.  It was my first introduction to finite state machines, turing machines, Big O, etc. Beyond just computing topics, it changed how I approach business problems in both terms of the process and what is sustainable over the long term. The class was well worth the investment of my time.

The challenge of the class wasn’t so much understanding the concepts, but being able to prove something was right or wrong. Here are some questions from the mid-term. Telling whether the statements were true or false was easy. Proving them was a bit more of a challenge:

  • P ({n ∈ : n ≤ 2002}) is uncountable. (Recall that P (A) is the power set of A.)
  • {w : w is a regular expression for {an bm : n + m ≤ 2002}} is a finite language.

I think they have changed the degree plan sheet to require that you take this class or an algorithms class before you can apply for the degree.  This is probably a good idea, although if this had been the first class I took, I probably would have assumed that the rest of the courses would be too hard for me to complete.

Practical Perl CSCI E-13

This class was taught by a programmer who worked at Yahoo.  It had a very interesting grading process.  To submit your code, you had to run some tests on it.  If the tests passed, you were guaranteed at least a C.  If the tests didn’t pass, you couldn’t even submit your code.  With a large class, this kept the teachers from dealing with a great number of submissions that might not even run.

I learned a lot about Perl, but it wasn’t a particularly difficult class.  That was good because I took it at the same time I was taking Theory of Computation. As far as usefulness, I haven’t done much with Perl.  Still it has been nice to know what I’m looking at when faced with Perl code.

Unix Systems Programming CSCI E-215

This course was challenging, but very much worth it.  Most of the exercises were in the form of reproducing basic Unix commands. There were two projects that really stood out in my mind.  One was creating a simple web server. The second was creating a curses based pong game.

Software Engineering Thesis ITSE E-499

Probably the biggest problem I ran into was getting a thesis advisor.  The process literally took years.  In fact, by the time I was first assigned a thesis advisor, my original thesis proposal was irrelevant so I did another proposal and started over again. The thesis consists of a non-trivial piece of software along with a document explaining the problem, design, and implementation.

Personally I didn’t think the thesis was too difficult.  The hardest part is staying disciplined to get it done.  You layout a plan along with dates and milestones, but it is a different type of work than dealing with class assignments.

My project was a social news/link voting site similar to the concept behind Reddit or Digg.  The interesting part was the algorithms that controlled the ranking.  The algorithms were designed as plugins that could be loaded or unloaded at run time and different weight could be assigned to each one. Instead of a global rank, each person visiting the site would get a customized front page based on what they were likely to see as good content.  Another key part of the project was the way it tried to identify users without requiring cookies or having them log in.  It created a unique identifier based on their ip address, browser headers and other pieces of information. It also retrieved links from RSS feeds instead of relying on end users to submit links.

The basic idea of the project was to create software that would let you run a useful social news site with a much smaller number of users that what you’d need to successfully pull of something like Reddit or Digg.

The programming project definitely wasn’t the hardest programming I’ve ever done, but it did cover a lot of ground when it comes to demonstrating a mastery of the software engineering process.  The project used unit tests as well as Selenium tests and the builds were triggered by a continuous integration server that would turn on a green lava lamp when the tests were running correctly and a red lamp when they were failing. Cobertura was used to make sure the tests were actually covering the code and I used an issue tracking system to keep track of the bugs and features that needed added. I used Subversion for source management, Maven for the build and Mylyn for what I’d call “context management”.

The prose part of document consisted of the following sections:

  1. Introduction
  2. Overview of Link Rank Application
  3. Architecture
  4. Framework and Libraries
  5. Development Process and Tools
  6. Users Guide
  7. Summary and Conclusions

That was followed by the appendix which was mostly the code listing.  All in all the thesis document was 190 pages–about half appendix code and half text.

For many people writing the thesis is extremely difficult. In fact it isn’t uncommon for people to get all their coursework done only to get stalled on the thesis. I think I had an easier time because I spend a lot of time writing.

Real Degree?

A lot of people wonder if it is really a degree from Harvard.  Yes it is. You get a Harvard diploma (in Latin) just like everyone else. They did start adding a phrase that basically means “in extension” to the diploma after I started the program.

There are some people who complain that the Extension graduates aren’t really Harvard graduates. Their objections usually fall into one of two categories.  The first is that Extension students don’t have to go through the same competitive selection process.  The second is that they don’t have the social experience that traditional students get.

Obviously there is truth to both of these objections. The application for admission is merit based which means if you can do the work, you can get admitted.  It isn’t like there are 100,000 people competing for 15,000 spots. Personally I like the objective based approach where your admission is based on your proven ability to successfully handle the coursework. However, if a good part of your identity is wrapped up in the idea that “I’m special because I was admitted into a school that turns down lots of other people” you might not like the Extension School’s approach.

As to as whether or not it is a real “Harvard experience,” there are obviously interactions and networking that you don’t get like you would on campus.  The residency requirement helps some, but it is much more limited.  I wouldn’t recommend getting a bachelor’s degree online because the college experience is so important to kids fresh out of high school.  However, if you are like me and going back for a second master’s degree, you’ve probably already acquired most of your social skills and your focus is more on the class content than the other experiences.

If you see the Extension School as a way to “sneak into Harvard”  and get around the stringent admission process at other schools, you are probably going to be disappointed.  If you are concerned about whether or not people will know you took your classes online, you probably aren’t going to be a good fit for the program.  If you are the type of person who would sell yourself in an interview as someone who was able to complete a difficult online distance program while holding down a full-time job, the Extension School degrees are likely to be a very good fit.

Cost of the ALM in IT Degree

So how much does it cost to get the ALM in IT degree with a concentration in software engineering?  The program consists of 10 4 hour courses if you do a thesis. (I think there is a newer 11 course program that forgoes the thesis as well).   The classes cost $400 to $500 per credit hour so you are looking just under $20,ooo in tuition. By the time you add in lodging and travel for the residency requirement, books, etc. you are likely looking at $22,500 to $30,000.

All in all this is a pretty good deal. It is in line with the cost of graduate programs at many state schools.  By way of comparison, Columbia has some similar programs, but their cost is is over $1,300 per credit hour, plus an additional $375 per course.  So a four hour course from Harvard Extension school would cost $1,600 to $2,000.  A three hour course from Columbia would cost over $4,275. (Columbia’s program requires 10 3 hour courses, so a 3 credit hour course from Columbia Video Network represents the same percentage of the total degree plan as a 4 hour course from Harvard’s Extension School.)

Graduate tuition at KU for out of state students is $691 per credit hour. Residents are only charged $295. The closest degree I could find at KU would require at least 30 credit hours.  So tuition would be about $9,000 or $20,000 depending on whether or not you were a resident of Kansas.

The total cost of a degree from Harvard is more than going to a state school where you are a resident, but very comparable or better than the other options. However, the real cost of getting a masters degree is your time.  If you have to quit your job to go back to school, that will likely be a greater expense than the tuition you pay. Unless you live right next to a university an have a very flexible work schedule, the Extension School programs are going to be far cheaper than your other options once you account for your time away from work.

In addition, many employers have some type of tuition reimbursement program that can help pay for some of the cost–but it doesn’t help you if you have to quit your job in order to go back to school.

Job Prospects with the ALM in IT Master’s Degree

I only applied for a single job after beginning work on this degree, so I don’t have a lot of experience seeing how it perceived in the job market.  The job was my first full time programming position. Many of the classes had interesting final projects and this is what the interviewers asked me the most questions about.  Some of the projects I remember discussing:

  • Writing a simple webserver in C.
  • Writing a curses based version of the game Pong.
  • Java distributed computing projects.
  • XML and webservices projects with Amazon’s data.

The programmers who were in on the interview seemed impressed.  I think there were two reasons for this.  First, I had taken a number of the projects and expanded the after the class was complete.  For example, I had taken the project for the Amazon Web Services and expanded it quite a bit on my own to create a system for keeping track of the books I read. Second, the breadth of experience was great enough that I had experience with certain technologies doing things that the programmers weren’t exactly sure how to do themselves.

The interview went well and I got the job.

My next career move was to start my own company, so I really don’t know the true career impact of the degree on a career working for someone else.  However in dealing with clients there is one experience that kind of stuck out.  I was working on a project that went much better than the client had expected.  They commented, “I guess that is what we get when we contract with someone who went to Harvard.” This surprised me because I had never said anything about my education.  However, people talk and the name “Harvard” sticks in people’s memory.  It turned out that this client had talked to a friend of mine and said they had contracted with me.  My friend said something like, “Oh yeah.  Mark is really smart.  He even went to Harvard.”

A lot of what it takes to be successful in consulting is getting your name to be the first one that pops into people’s mind when they are looking for someone who can solve their problems. Having the Harvard name attached to you as a consultant isn’t a bad thing.


The ALM in IT program isn’t for everyone, but it can be an ideal fit for a working software engineering professional that wants to further develop their skills. It is relatively low cost and offers a reasonably flexible way of getting a degree while maintaining a full time job.


167 Replies to “Harvard Online Master’s Degree in Software Engineering”

  1. This was a good read and for people interested in these kinds of programs University of Colorado and Regis University both offer online masters degrees in software engineering at about the same price point as Stanford. The courses at Colorado are more theoretical and the ones at Regis more practical. If there are any people who have gone through those programs it would be great to hear from them as well.

  2. Great post! Thanks for the info. I’m finishing up my BS at NEU and I hope to do my Masters soon. This seems like a great option.

  3. Just have to point out – it seems odd that this is a Masters degree, when the courses described are literally a *subset* of the material I studied obtaining my *BSc* in Computing Science.

    1. I’ve taken four courses (not an degree candidate) and a few of the courses were taught at the Harvard Engineering School with grad students from the graduate engineering school (and a few grad students from the sciences), not the extension school. These students were exceptionally qualified and not once did I hear anyone say the material was redudant undergraduate.

  4. Sir, I think you’ve altered the course of my life.

    I’m gonna shoot for this degree. I’m so excited. I’m not in a position to do anything full time, most online education isn’t respectable (especially if I want to do serious academic work at a good school–which I do). And I completely agree about it being the right degree if you will sell it right.

    You’ve just inspired this programmer-wannabe to reach for something tangible, accessible and immensely valuable that I didn’t know existed.

    1. If you don’t have any programming experience, you might try taking a few programming classes from a local university or community college just to see what you think of it. You might be able to get your feet wet and get some good experience at a much lower price point to start off.

  5. Do you have any suggested pre-requisite programming experience before entering the program? What skill-set do you wish you’d brought into the program that would have helped you get off to a good start?

    1. More of a background in math would have been helpful–particularly discrete mathematics. I had already taken a few classes in C & C++ and had done quite a bit of programming. The more programming you’ve done the better.

  6. Mark,

    I am a student at HES working on a ALM in IT (IMS concentration). I see that over the years we have taken some of the same courses. One thing that I wanted to note is that the Latin phrase on the diploma translates out to “in Extension Studies”, and to the best of my knowledge this has been part of the ALM in IT program since it started, but for several years the schools website was not very clear on this matter.

    Congratulations on earning your degree.

    1. When I started in 2001, I spoke with the Extension School about the degree and was led to believe that there wasn’t anything on the diploma at that point that marked it as being online or from the Extension School. It doesn’t matter to me. I’m not trying to make people think I was an on campus student when I wasn’t. In fact, if I were trying to get a job, I’d think that my ability to work a full time job and handle a family while getting a degree would probably be a plus not a minus.

  7. Great write up – I just started taking some classes there last summer and it really is a great place/way to take classes. I was gonna say for those of you who want to brush up on some of the programming classes – CSCI E-50a, CSCI E-50b, CSCI E-124 (are essentially CS I, II, & III you’d take in undergrad) & CS 50 – which you can see for free here – http://cs50.tv/2010/fall/

  8. HES ALM degree has the same courses and exams for the most part as the on campus degree. There are a few disimilarities but in regards of the environmental management degree it is almost identical. Yes, the experience on campus is something valuable but working full time and going through the rigorous courses Harvard Extension School has to offer is a big plus for any student AND something to highlight for any employeer. Try to get at least 3 straight Bs on your 3 preadmission courses; if you do that you are ready to be a HARVARD CANDIDATE!

  9. Thanks Mark, I have just completed my second course in this program CSCI E-215 Unix Systems Programing . I loved it but it was a TON of work for me – easy 40 hrs extra a wk. Wanted to see you course selections and comments, I could do with some a little less demanding for the summer term.

  10. Hi Mark, first at all, thanks for this post. I am confused about prices. You said that price range for credit is between 500 and 600, but I noticed that in the web site says 1.8k for credit. Could you tell us how much was your last course?

    1. The ALM in IT degree doing a thesis consists of 10 courses or 40 credit hours. The $1,800 price is for a single course that consists of four credit hours. So the cost per credit hour for that course is $450 per credit hour. I thought I had seen some courses in the $2,200 range, but I’m not seeing any today, so perhaps the price has come down or my estimate was a little on the high side. Hope that helps.

  11. Thanks! Maybe I am confused how they show the price. For example: Course tuition: noncredit and graduate credit $1,975.

    I thought that price was 1.9k per credit.

    1. Ah. I see what is confusing you. “noncredit and graduate credit” refers to wether or not you can get credit for taking the course and shows the price for taking the course. Sometimes you’ll see a “graduate credit” price and an “undergraduate credit” price. Each class has a certain number of credits that you can earn when the class is taken “for credit”. In most cases, they are 4 credit hour courses. This is indicated at the end of the description where it says something lik (4 credits).

      Does that make sense?

  12. Hi Mark, another thing. I noticed that now I have to take three courses before be addmited. So. one should be CSCI E-124, CSCI E-181, CSCI E-201, CSCI E-207, CSCI E-210, CSCI E-250, or CSCI E-295. The other two should be whatever the program has. Right? Any other that you recommend? Another subject is how about rent appartments for the summer classes. What was the price that you get for an appartment? I have a family of three, so that means that I have to save money a lot….

    1. They now require you to take a math heavy course as part of the first three. I think a lot of people were starting with easy courses and then getting toward the end of the program only to discover they couldn’t pass the Theory of Computation or something similar. As far as what other course you take, it probably doesn’t matter. You might try to choose something that is a good match for job skills that you need so you’ll get some immediate benefit. Also if you are trying to take two courses at the same time, you might want to make sure you are doing something that comes easily along with something that is hard. Make sure you consider the requirement to have a certain number of courses from Harvard instructors. Not all classes are taught by Harvard instructors. So I’d probably lean toward taking classes marked as HI, so you don’t run into any problems meeting that requirement. When I did my summer residency all of the classes counted toward the Harvard instructor requirement regardless of who taught them.

      When we stayed there, we just got a small furnished one bedroom apartment a few blocks from the Science Center where most of my classes were held. The cost was something like $2,000 per month. Look for executive housing, executive apartments, and furnished apartments to find those types of places. It is easier to find housing during the summer than during the school year and you can find things much less expensive if you are willing to go a bit further out. Make sure you understand how the subway system works and look for places that will keep you close to the transit system.

      Best of luck!

  13. This is so helpful! I just finished my first class at Harvard Extension in Web Development CSCI-12. It was was a lot of work. I was trying to decide whether to continue to try for the ALM-IT as my prior degree is in Criminal Justice and wasn’t sure if I could handle the ALM-IT degree in Software Engineering, especially since I’ve never taken Discrete Math. Your site provides a wealth of information and I greatly appreciate you sharing your experience. I’m definitely inspired to continue. Thanks Mark, I’ll be signing up for the XML class in the fall.

    Great site and thanks again.

    1. I’m glad you found the site helpful Doug. The theory/algorithms course is probably going to be one of the most challenging for you. Keep in mind that to be admitted to the program, one of your first three classes has to be a theory course. You may want to take discrete math and then the theory or algorithms course fairly soon in the process if you want to work toward the degree.

  14. Hi Mark, just in case do you know if there is a web site with the lecture of Introduction to Formal Systems and Computation that I can watch in advance? If you have links, what book should I buy and any resource would be great too.

  15. How hard was the discrete mathematics class? I haven’t taken a serious Math class since high school. Could you tell us more about it?

    MATH E-10 Precalculus IS A PRE-REQ FOR —–> MATH E-15 Introduction to the Calculus A IS A PRE-REQ FOR —-> CSCI E-120 Discrete Mathematics for Computer Science

    1. Well I took Discrete Math S-104. It sounds like the E-120 may be more geared for CS students so it may be different. I took and Advanced Math class in high school that covered some calculus and trig, but I didn’t take anything in college. I found the discrete math class I took to be challenging but doable. I also took it in the 8 week session so it was a bit more compressed.

    1. I spoke with an advisor, Maura, who stated Discrete 104 can be taken to fulfill the Theoretical Math Foundation (TMF) course as long at it is taken for Graduate credit. What a deal, that saves $1900! I was expecting to take Discrete Math just to prepare for a TMF course.

  16. Hey Mark, there is a chance that we can chat on twitter or any social network. I have some questions that I would like ask you. Could you help me please?

  17. Mark, any thoughts on the difficulty of CSCI E-153 (Web Development Using XML) for a non-programmer?

    The course website states CSCI E-12 (Fundamentals of Website Development) is needed as a prerequisite, which I completed. But syllabus for the XML class states “Experience with a programming language is expected.” I haven’t taken any programming classes, I plan to take Java1 & 2 (50a & 50b) next year to prepare for the other classes, but I wanted to take CSCI E-153( XML) and the Security (CSCI E-170) class this year since neither mentioned programming experience on the course description. Will Java1 & 2 help much with the XML class?

    Thanks for any advice you can provide. Since I’m not yet admitted into the ALM-IT, I get the general graduate adviser who said my course schedule ( available at http://tinyurl.com/DougALM-IT ) looked good, but I don’t think she knew much about the actual courses.

    1. There are programming concepts in the XML class. If you aren’t familiar with loops, variables, etc you are going to have to learn them as you go. I wouldn’t recommend that. I’m not going to say it would be impossible, but you’ll get more out of the class if you take the Java classes first. Even just understanding how to run a Java program from the command line will make the XML class much less frustrating.

      1. Thanks for the advice. I really wanted to learn XML, but the stuff on the syllabus, setting up Subversion, Tomcat, Saxon, Eclipse, etc., was all new to me. I really didn’t want to spend the time learning Java when I don’t have anywhere to apply it. Also, the Java class starts out with the Scratch program, which my 10 year old just learned at summer camp. I guess he will have to help me with my homework.

        On another matter, how come you do not seem to have any ads on this site. It would seem you could make quite a bit of money with a few Google Ads.

        1. Most of my traffic is pretty specialized and probably wouldn’t convert very well anyway. Still it might not be a bad idea to try sometime.

  18. Did you work on your thesis while you were in residency? Their website states it best to the thesis while in residency, but I was hoping to only attend during the summer session. Did you have to meet with your advisor much, or were you pretty much on your own?

    1. While I was there during the summer semester, I met with the head of the ALM in IT program for about 15 minutes just so he’d have a face to put with my name if anything came across his desk from me. I also met with the research advisor for the ALM in IT program. (The research advisor is responsible for helping you pick a suitable topic, approving your proposal and finding a thesis director.) We talked about the scope of the thesis and settled on a topic. I then wrote a thesis proposal based on that topic, but I don’t think I finished that until after I was back home. I never met my thesis director in person–we did everything over email and the phone.

  19. Hello, thank you for a great post! I’m considering getting started with some courses this fall. I too pursued something quite different from computer science (biological science/psychology). II have some decent math/physics background, nonetheless I have no programming experience. So I’d like to get started!

    From what i gather so far, it seems that Java and C are some of the most commonly used languages that are also prerequisites for a lot of the courses at HES.
    I feel like having some experience with programming (I suppose “the more, the better” when it comes to experience in programming practice) would be helpful for me for getting started (for serious software engineering). I am also motivated to start learning something new. Which language would you recommend that a beginner in computer science get familiar with (as soon as possible)? Of the two languages (Java and C), for example, do you still use them in your actual practice at your work or projects? It appears that “familiarity with Java” is the most frequent prerequisite for courses at HES, but I also hear that a programmer/software engineer should always know C… is this true?

    I also have another quick question :)
    Is CSCI E-131b – Communication Protocols doable without much knowledge of programming? From what you’ve described here and from what i see on the course description, it seems that learning about Network is not too dependent on the knowledge of programming.. is this really the case? Obviously, I plan to get started now on studying programming for the next couple months, but i am still anxious if this course would be something I can handle without much previous programming experience or knowledge. I am interested in doing this course as soon as possible, because it seems that there aren’t many options for me right now before finishing the “Intro to CS” classes and Data Structures/Discrete Math. After the intro (for one year), it seems it opens door to many other interesting classes.

    Thank you very much for your help, and this post again! Much appreciated :)

    1. The Communication Protocols course doesn’t have any programming that I remember, but double check the syllabus to make sure. I would agree that every programmer needs to understand C. I don’t use C or C++ on a regular basis–most of my work is in Java. However, C is a common background that most programmers have experienced and so a lot of things are explained in terms of how they relate to C. If you can work your way through a good C in 24 Hours type book, you’ll probably have a good exposure to the language. There are also a lot of textbooks available on the web. Once you’ve had some exposure to programming, the Java and Distributed Computing class is excellent. It doesn’t spend a whole lot of time on the language, but it does cover all the fundamentals so if you have a bit of experience in Java, it will make sure you didn’t miss anything in your self education.

      You want to have enough of a foundation that you aren’t constantly running into problems with figuring out how to use your tools (your programming language). For example, if you don’t understand how the classpath works in Java, you can easily spend 4 hours trying to figure out how to get your program to run without even getting into writing code. That is what you want to avoid.

      I hope that is helpful. Good luck in your studies.

  20. Any thoughts on the Digital media and instructional design (DIGM) concentration?

    While looking into taking the Java classes I noticed 50b (Java 2) counts as a preadmission course toward the DIGM concentration, therefor saving me from having to take Web Development, Java 1, Java 2, and Data Structures as prerequisites toward the classes for CS concentration. Under the DIGM concentration only Java 1 wouldn’t count towards degree credit.

    For anyone interested in CSCI-12, Fundamentals of Web Development, I recently finished it. The final project was to build a site which included what we learned, including validated XHTML and CSS, a .htaccess file for error handling and compression, quite a few jQuery implementations, form submissions, includes, Flowplayer and JWPlayer use, Google maps, table sorting, proper image usage, etc. There was only one small PHP project which was touched on briefly at the end and was optional.

    1. I had heard that a number of people doing the digital media track got bogged down in the programming requirements. If you are looking at that concentration, I’d try to take those requirements as early as possible so you don’t get to the end and find you don’t have the background to successfully pass the class.

  21. Thanks for providing so much information on your experience in obtaining a Master’s in Software Engineering from Harvard’s Extension School. I’m planning to get a 2nd graduate degree in either software engineering or computer science, and Harvard’s ALM is among the programs in which I’m interested.

    I’m concerned about the time it takes to secure a thesis advisor. Harvard’s website says it takes “up to 6 months” to come up with an acceptable thesis proposal, and 9 to 12 months to complete it. May I ask if it’s normal for it to take years to secure a thesis advisor? If not, why do you think it took Harvard so long to find you one? Was it the nature of your thesis?

    In the event that you can’t come up with an acceptable thesis proposal or can’t find an advisor, is it an option to switch your track and take a couple more classes and enroll in the capstone project? Harvard says on their site that “If you cannot produce an acceptable proposal, you may be required to withdraw from the program,” which is pretty scary and makes me wonder if I’d be able to switch to the capstone track if necessary. I’d prefer to do the thesis though.

    1. Sam, I’m glad you found the information useful. It took me a long time to find a thesis director because I wasn’t really pushing for it and just left it up to the department. Had I been pushing to find someone, it probably would have happened faster.

      If you have decent writing skills and don’t think coming up with a proposal will be a very big deal. I wrote two proposals and I don’t see why they should take more than a week or two of a few hours each day. They give you a template to follow so it isn’t too bad. The thing that will take a long time is going back and forth with corrections if you have lots of errors, so make sure you proof carefully and get someone else to proof it for you. Ideally you’ll turn in the proposal, get back suggested changes, make the changes, submit it again, and have it accepted.

      I don’t know if you can switch to the capstone track. I think you can, but in my experience the difficulty of the thesis project is if you can’t write or have no idea how to start and finish a software project.

      Hope that helps.

  22. Hi Mark!

    First, thank you for all the information you have made available! The feedback is OUTSTANDING!

    I have two BS [Biology and Chemistry] degrees and took Advanced Calculus courses and one computer science course while pursuing these degrees.

    So, besides the Discrete Math course you described in order to ensure that I am understanding you correctly if I pursue the Harvard ALM I should probably take a C, C++ and you mentioned “programing” courses.

    Seeing that you acheived your ALM degree and have taken the courses for this degree type, what type of programing courses would you recommend? And does Harvard have any one off type classes that I can take in order to not only complete these courses but ensure that I am in sync with the school cirriculum [pre-requisites, similar mind-set, et. al]?

    Much obliged!

  23. Do you have any thoughts on the value of an Information Technology degree as a career change? I’m considering quitting my non IT job and going full-time in the ALM-IT program with the hope of getting an IT job when I graduate, but I’m reading several blogs claiming that IT jobs are being outsourced. Since you help businesses hire, do you think there is still plenty of demand for good paying IT jobs?

  24. Hey I really appreciate you taking the time to document your experience. I know how your time must be taken up with work and personal projects, but reading this game me a lot of hope for my future. Im currently a liberal arts student, seeking direction in my life. Ive thought about some software engineering courses but I would have to do that at a masters level or redo my bachelors. I really enjoyed reading your article .

  25. Hello. I really appreciate the time and effort you took to write this article. It really gave me a better idea not only about what I’ll have to face once I joined the program, but also how it could be after graduating.

    I studied four years in a Colombian university, but I when I was in my fourth year I earn an scholarship to study in Japan so I wasn’t able to graduate. Now I’m in the second year of Electronics Engineering with 24 years old. If everything goes well I will get the bachelor degree at 26. Since I have good knowledge in programming languages like JAVA and C++, and basic knowledge in we design using HTML, CSS, JAVASCRIPT, PHP and MySQL, I was thinking to take some curses while I’m still studying at the university and once I graduate I will apply to join the ALM in IT program. I was wondering if I can do that and the credits I took before joining the program will still count to graduation. If I do this I will be have a deeper knowledge in the subjects I take, so I think it will help me to get a job once I graduate from University and I will be able to earn the master degree faster than going to a normal master program. Whatever I do I will have to pay for the master degree by myself and I’m worry of my age without any practical experience. Do you think this will be a good choice?

    Thank you in advance.

    1. You can’t transfer any credits into the Harvard ALM in IT program. I don’t think you can transfer credits in to any of their Master’s degree programs from other schools. If you are talking about taking courses from Harvard Extension School, you can only take a graduate level course if you have an undergraduate degree already. So you’d be limited to taking courses for undergraduate credit which would not count toward your graduate degree. At least that is how I understand it.

      If you haven’t taken any discrete mathematics, you might consider taking that class for undergraduate credit because it will help you with the foundation you would need for the computational theory course. Alternatively I think there is at least one course that is an undergraduate introduction to the theory of computation that might be good to take as well.

      Also look at what the English requirements are. I think you may need to take some type of language exam to be admitted to the program.

      Best of luck on your studies.

  26. Hi,

    Can you comment more about the employment opportunities after obtaining the online masters degree? Do you find that this degree makes you a more competitive candidate?

    1. I have run my own company for the past 5 years so it is hard to say exactly how much it would help in a job interview. I did apply for one job before I completed the program. The fact I was working on degree at Harvard certainly got some attention, but mainly as a starting point to talk about some of the interesting projects I had worked on. In that particular job they were very interested in my experience in integrating with webservices. In my XML class I had done a lot of work with Amazon’s API and that seemed to impress them. They did hire me even though I told them I was planning to move to Mexico in 6 months.

      As far as working as a consultant, most of my work comes from word of mouth. Rarely do I even pass out a resume. However some of my earlier clients were people I knew when I was in the middle fo the program and I know that quite a few of them have told others, “You need to hire Mark, he is really smart. He went to Harvard!” Although they sometimes get various details wrong. Some people thought I had an MBA from HBS. Others thought my degree from Harvard was in music composition. There have probably been other permutations of the truth passed on to different clients. Occasionally someone will ask about it, but the main advantage it gives me is that people start with the assumption that I’m reasonably smart. This gets me in the door to where I can either prove that assumption correct or incorrect.

      So as far as the ALM in IT degree helping you get a job: It will give you a very wide range of experience and a solid foundation. If you take that foundation and do interesting projects, create interesting code and generally make use of your education it becomes a door opening point of interest, but the real weight is on what you can do as proven by your past history.

      One very valuable thing the degree can do is give you self confidence in your skills. A lot of self taught software engineers have a nagging self doubt that they might really be a fake and that their success has come from just getting the right problems where they were able to succeed. The degree can really help you cover a broader range of skills, fill in any deficiencies, and give you the confidence to tackle larger more difficult projects.

  27. Thank you for an extremely informative website; you’re very generous in sharing your experiences and knowledge. I am doing research for my son, whose goals are a little different from those I see represented here in the comments. I wonder if you might have any guidance for us.

    My son finished high school last year as a home schooler, but he hasn’t settled on a college or a plan quite yet. Programming is his passion, and he is mostly self-taught, although he has had some guidance from an adult friend who is a programmer. He has gone through textbooks suggested by our friend, and now he knows C and C++ pretty well, along with some Java. He has written lots of programs on his own and developed his own computer language as well; these are things he likes to do in his spare time.

    We haven’t found a college that really fits him, however, where he could study computer science. Instead, he is considering a small liberal arts college where he could get a degree in government with a specialty in strategic intelligence. This college doesn’t offer computer science at all, so we were thinking he might take CS courses from Harvard Extension on the side, with a view to getting admitted to an MS program in computer science eventually. The college we have in mind has had excellent success in placing interns and graduates in the intelligence community, and we were thinking that the combination of the government/strategic intelligence degree and computer science could possibly lead to good opportunities.

    We haven’t settled on what to do, though, so this semester my son is taking one liberal arts course online (not at Harvard Extension) and has also signed up for CS E-61, Systems Programming and Machine Organization, at Harvard Extension. In addition, he is considering CS E-119, Data Structures, and CS E-52, Intensive Introduction to Computer Science. Money is definitely an important consideration, and we want to be sure we are spending it well, but late registration lasts for another ten days (during which time we can get our money back), so it’s possible for him to try out these classes.

    The only class that has already started is E-119, Data Structures. The syllabus says that the problem sets for the class take 10-20 hours a week, which sounds quite daunting, but my son sat through the first lecture tonight and it seemed extremely elementary to him. So we are confused about what to expect. The problem sets haven’t been released yet, so he has only the lecture to go on. He has looked at syllabi for the other two courses, and they look very easy and familiar as well.

    We are a little at sea. Does this sound like a feasible plan to you? Do you have any insights into the courses my son is considering? Is he deluding himself in thinking the courses won’t be extremely difficult?

    Thanks for your insights!

    1. First I would suggest that you get him enrolled in an actual onsite college program. Particularly at the undergraduate level, much of what you learn has very little to do with the class content and everything to do with social interactions, working with peers and dealing with the different personalities of teachers and staff. This may be particularly important if your son hasn’t been around a lot of kids his age.

      Keep in mind that the Harvard classes are typically 4 hour classes, so taking three of them would be the equivalent of taking 12 credit hours of solid computer science courses.

      I was enrolled in 119 at one point, but it wasn’t something that counted toward my degree so I think I dropped it. I don’t remember the class material being difficult to understand, but the programming assignments were time consuming. I think the general formula for study is 2 to 3 hours per credit hour. That would mean in an average week you should expect to study 8 to 12 hours for a 4 hour class–longer if you are working with something you aren’t familiar with so 10 to 20 hours seems like a pretty reasonable thing to assume for E-119 or any of the classes.

      E-52 would seem like a good choice for starting out. You can see all the lectures online here I thought E-52 was a prerequisite for E-61. I would pay a lot of attention to the prerequisites and not assume he knows what he needs to know without specifically talking with the professor. It can be easy to assume that something will be easy based on the course description. When I first published this post, several people said that the Theory of Computation course looked very easy and they felt like it was stuff they had covered in the first few weeks of undergraduate classes. People stopped saying that after I posted some of the typical questions from the class. For example, if a class requires prior C++ experience, your son should call or email the professor and talk about exactly what he has written in the past–maybe put some code up on GitHub so he can easily share it.

  28. Thank you for your quick response! My son will definitely preview what he can and heed your warnings.

    This is off-topic, but I would like to take the opportunity to correct a misconception I might have given you about my son and about home-schoolers generally. My son is extremely sociable and, because of the activities offered in our home school support group, particularly in choral music and drama, he has had no shortage of social activity in his life. Like you, he is very interested in musical composition as well as programming, and he is the music leader at his church. I could go on about his many other social activities and interests, but I would bore you. As for college, he’ll go on campus eventually, when we settle on a plan. Thanks for the advice, though.

    1. I went to a very small private school where we had a lot of homeschoolers join us for sports and other competitions. At college a number of my friends had been home schooled. Currently we are homeschooling our children. So I’m reasonably familiar, educated and experienced with that form of education. Homeschooling doesn’t mean you are socially awkward anymore than going to public school means you are socially adept.

      If your son has mastered C, C++ and Java, he has spent a lot of time writing code. Serious coding at the high school level is typically a very solitary activity unless you just happen to have a lot of friends into the same thing.

      The advice about getting him into a onsite program is the same thing I’d tell anyone coming out of any type of high school program and regardless of what they are wanting to study.

      Best of luck to your son in his educational pursuits.

  29. Hey Mark, I just saw your website and it has great information. Thanks for sharing your experience. I’m looking into the software engineering option at Harvard extension and have two questions:

    1. What are the other pre-admission courses besides Theoretical/Mathematical Foundations and can those pre-admission courses be taken online?
    2. I have a BS in Information Systems from 2000 and I’m interested in really learning well Analysis and Design of software (OOP/UML) and develop/take a design into code on the same course or another course offered. Do the Systems Programming and Software Design courses give that kind of experience? Are there any other courses you took that give you that experience?

    Thanks for your help.

    1. The three courses you’ll need to take before you can be admitted to the ALM in IT program, can be taken online. Check for the current list as I’m not sure exactly what they are and I think they may vary from year to year as new courses replace older ones.

      None of the classes I took were heavy on UML. Many of the classes used UML, it just wasn’t the focus and we didn’t spend too much time on it. There was a lot of focus on object oriented design–particularly in the design patterns class.

  30. What do you think about the SCJP (Sun Certified Java Programmer) certification? Is it worth it? I’m taking the CSCI E-50a Java course and would like to learn more. Did you take CSCI E-50a or 50b and did it help with the SCJP exam, or did you already have that certification before you went to Harvard?

    1. My first Java class was the Java for Distributed Computing E-160. I didn’t get my SCJP until a few years later. Once you’ve been programming in Java, the SCJP is useful to make sure you don’t have any holes in your knowledge. If you get a good prep book and spend 4 or 5 hours a week going through it and answering practice tests you should be able to get ready for the test in a few months without much of a problem. I don’t think the SCJP (or whatever Oracle calls it now) is a good substitute for writing a lot of code.

  31. Good writeup Mark! I found your posting while looking for Regis online MS information. The Harvard degree seems more compelling to me than the Regis one. I also really like how their “application process” is to have you take the real classes and see how you perform. Very shrewd.

    I have a CS undergrad and have been wanting to redirect my career back to software engineering and am thinking an MS/MA degree would help open the doors.

    1. I have had some people criticize the degree say “it is just an Master of Arts in IT.” Usually these were people that were mad at me about something or other, so their opinion might not be unbiased. It isn’t a big deal to me because I looked at a bunch of MS degrees and the Harvard MA was much more rigorous than a lot of the others. But, I’m not out trying to find a job based on my degree, so I don’t know what it would be like in the job market. I would assume that an ALM in IT degree plus some good examples of work you’ve done would be a winning combination–particularly if you know how to sell yourself. However, there may be some places that are really looking for the Science in the degree title.

      Best of luck in pursuing whatever degree you decide on.

      1. Hi Mark:
        I just tried the Regis option, and unfortunately had to drop due to company issues (request denied). But I was able to get a brief experience of the first class (MSCC 610). What really irked me with this class, and presumably the program was it seemed to rely heavily on “writing”; bibliography, reading/reports, etc.–in my opinion way too much so for a technology degree.
        Was this your experience with the Harvard degree? What were the “publishing” type of expectations?
        Something I do like with Regis was the 1 class per 8 week session. Does the Harvard program typically require 2+ classes simultaneously? And if so, how does this impact your performance in the class, while holding a full time job, family, personal time, etc.? I’m currently working 50 hour weeks.. not by choice tho, so my time is pretty tight.
        I have an undergrad in CS, and I know what you’re saying with the theoretical classes. They used to drive me bananas too. I’ve got your “Big-O time right here” pal.. bleh, worst part of the degree. Esp the math proofs.
        How long would you anticipate it taking if you did 1 course/semester. Maybe double-up during the on-campus requirement?

        1. Additionally, the Regis class is not really taught, but “facilitated”. I don’t recall what his background was, but I didn’t care for the arrogance he displayed. But I was surprised there was no “online class” type of deal. This guy just lays the classes out on the “classroom” web (which is like a bulletin board), and you are required to read/respond to the assignments, due dates, etc. I don’t believe there are any online lectures, or anything like that.
          If it sounds like I really didn’t like the first class–you are entirely correct. I was really discouraged with their program with the first class (MSCC 610).
          If anyone has better experience with Regis, I’d love to hear it. But based on that first class I got the sense it was a waste of time and $$.

  32. Hey Mark,

    I am a digital media candidate and HES and I just finished my 6th class.
    This was a well put and informative write-up. It was especially good for me to learn about your thesis experience.

    I wanted to add that there is a wealth of knowledge to be learnt at the Extension School. If you are out to LEARN and ameliorate your skills, then HES is for you. However, if you are trying to boost your ego or just associate yourself with the brand – it is too costly in terms of time, effort, and money.

  33. Hey Mark the sentence, If you cannot produce an acceptable proposal, you may be required to withdraw from the program, makes me think. It is possible that all your proposals are rejected and you lost everything and your credit won’t transfer.

  34. Finished CSCI-E 50a Intro to Computer Science and didn’t see many other comments about the class. The syllabus is available at http://www.fas.harvard.edu/~libe50a/. The class begins with a lot of the basics such as For, If/Then, While, Scanner, Switch, etc, and then gets into developing simple methods, and then building Classes and Objects, and ends with some basic Recursion using the Fibonnaci sequence to determine the number of rabbits, etc. The course started off rather light, but within a couple of weeks it became rather time consuming. I was glad that I took CSCI-E12 (Web Development) prior to this class, as it was nice to know my way around Harvard’s system, rather than trying to learn programming and how to use their system at the same time.

  35. Mark,
    I am intending to start the certificate in Strategic Management, I’d like to know if I will need to take the language and math tests to get enrolled.
    I am quite confused to be honest with you as the information concerning the Certificated is quite poor on the HES website.
    From what I understand, I will just need to pay, read some books and watch the lectures in order to pass every single course. I’ve read somewhere that I had to write two essays for every course and get a B grade in order to pass.
    Could you tell me more about the certificate please.

    Thanks a lot in advance,


  36. CSCI-E 50B: If you are considering the ALM-IT in Digital Medial and Instructional Design master’s concentration you may want to consider taking CSCI-E 50B for the required Computational Design (CD) course. The syllabus is at http://www.fas.harvard.edu/~libe50b so I won’t discuss the content other than to say the class was extremely time consuming. The class picks up right where 50a left off. I struggled to get a B+ in this class after getting A’s in 50a and E12 and that was after attending or viewing all 4 sections each week in addition to the 2 hour class. I spent hours trying to figure out the homework assignments. One graduate credit question that gave me considerable trouble was the following: Write an assembly language program that will test all integers between 5 and 500, and print out only the “perfect” ones…. If you are not a programmer, as I am not, consider contact a Teaching Fellow whenever you need help. I didn’t want to bother them at first, but later I learned they could re-phrase something from class and everything would instantly make sense and I wished I would have contacted them earlier.

  37. I have no computer programming or computer science experience at all. I am definitely planning on doing the graduate program for Software Engineering at HES. I was considering getting an AA degree in computer programming at my local community college first to prepare me for the Masters degree, but after looking at a few of the exciting and engaging lectures for CS50 I am beginning to really want to get the experience of a second BA degree from Harvard Extension’s undergraduate program.

    One of my main concerns is getting a job in the field after I am done with my BA degree or my AA degree, whatever I choose, before starting the Masters. Obviously I am thinking that it is in my best interest to pursue the second BA. Just the networking alone would be fantastic. What do you think? What do you know about the overall undergraduate experience with Computer Science at Harvard Extension? What would you do if you were in my shoes?

    1. If you don’t have a college degree, the BA option is probably a good way to go. However if you do have a college degree, you may find the ALM degree to be a better investment of your time. I think there is at least some overlap between the coursework for the BA and the ALM. If you have no background in programming, I’d look through all the prerequisites for the ALM classes and decide what courses you should take ahead of time. 50a and 50b are probably going to be pretty helpful to you.

      If you can find a community college with a really good computer science program it might be useful to take a few programming courses if they are less expensive, but I think you’ll have a hard time beating 50a and 50b (from what I’ve seen–I didn’t take them) for preparing you for the ALM program.

      However the best advice I can give you is to actually start programming and writing code on your own. Get a book or use online tutorials, but start coding. It will put you in a much better position to learn from your classes.

    2. I don’t believe HES allows anyone to get a second Bachelor’s degree. If you have a Bachelor’s degree, then you would need to either get a master’s degree or complete one of the certificate programs, such as the Software Engineering certificate or the Web Technologies certificate.

      In addition to 50a and 50b that Mark mentioned, note that HES recommends CSCI E-119 Data Structures course for preparation for the SE and IT Management concentrations. If you haven’t had any experience then HES also recommends the E-12 Fundamentals of Web Development before starting the ALM-IT program. So that is four classes, at $2000 a piece, before you can even start the degree.

      I definitely agree with Mark that a lot of programming experience would help, but of course it is tough to do a lot of programming when you haven’t taken a class yet on how to program and I struggled with learning programming on my own.

      If you are young and have the time and the money to go to HES full time and to complete the residency program at HES, then by all means go for it. I’m married with a kid, job, etc., and trying to take just one class a semester is slow and extremely time consuming. I wish I would have gone full time to HES when I was younger. If I were in your shoes, I would sign up for CSCI E-50a, CSCI E-12, CSCI E-131b today and start full time next week as none of those classes require any prerequisites. Good luck.

      1. Thank you for your reply. That is certainly disappointing that I am not eligible for a second BA , but understandable.

        I am going to go ahead and go for the Masters program then. However, I was definitely interest in getting all the intangibles of a full BA degree experience, such as internships, networking etc. If I were to take these intro courses for non-credit would I have the internships and networking opportunites? What about the same on-campus access and support as an Extension Student who is enrolled in a BA degree?

        I would certainly really love to go full time. My plan is to go to community college for a year and take out the full amount of loans available to me which is around 12,500. Obviously community college does not cost that much, but I plan on saving that 12,000 and using it to pay for those 3-4 intro courses and for the first 3 courses of the Masters program. I plan on moving out to Boston once I have that money to take these courses, but that is all the cash I will have so I will have to work to pay for rent and food. I am willing to be a starving student and can probably live on 1000 dollars a month or so which means I could hopefully cut my work hours down to 20-30 hours a week depending on the hourly wage I get.

        That leads me to my next question which ties into the internship opportunites question I asked. Are there going to be paid internships or other relevant job opportunities available to me when I am not enrolled in a BA degree? What would you do to pay for food and rent while you are in school? More importantly, is it possible for me to go to school full time with these class loads and still work 20-30 hours a week? I am single with no kids..

        1. Double check with Maura at [email protected] or (617) 495-9414 about a second BA, but I heard it wasn’t allowed which was disappointing, since the BA doesn’t have the 5 year time limit of the ALM-IT, and the BA’s residency requirement can be completed with four 3-week January sessions, which is much more doable than a 7 week summer session or full 15 week semester.
          I don’t know anything about internships or networking. I’ve only taken e-12, 50a, & 50b and am taking E-175 starting next week. I would have to pass two more classes, one of which would have to be Discrete Math or another TMF just to get accepted into the SE program. Once accepted I’m guessing internships might become available, but I have no idea.
          When I went to grad school 20 years ago, I took out loans for a Criminal Justice master’s degree; I lived in the dorms, ate at the cafeteria, didn’t work, went to dinner parties at the dean’s house, and keg cookouts with the professors at the park, I met my now wife there, and had an overall good experience. This is not at all the same experience I’m getting as a distant student at HES! As far as networking, there hasn’t been any, as I live in Ohio and only take one course a semester. Distant classes are actually kind of lonely. There is usually a message board, but the classes have students of all ages and backgrounds from all over the world, some who are taking the class for graduate credit or just for fun so it is difficult to connect with anyone. Often the comments on the message board can be rather snarky.
          I think Mark wrote that a master’s from Kansas U. was going to cost about the same as HES so if you are willing to go in debt for a graduate degree, an ALM from HES probably isn’t the worse choice. I’m not sure I’d go in debt again as paying off the loans was not fun. As for housing, I believe you can apply to live in university housing if you take 4 classes a semester, but you may need to be admitted first; again check with Maura.
          As far as working and going to school, I work full time and with a family I have a tough time keeping up with just one class, I think it would be tough to go full time at HES and work 20-30 hours a week, but again I have a CJ background with very little IT experience. I think the ALM-IT SE track tends to be better suited for people with some programming experience. If you check the course descriptions of the classes or view the free OpenCourses at http://cs76.tv you’ll see many courses expect some programming experience.

        2. I hadn’t heard that getting a second bachelor’s wasn’t allowed. It seems to me that it would just be a matter of not providing that transcript. However, since at least some of the classes for the BA are the same as the ALM, the ALM may be a better fit with more of a focus on software engineering and less on general studies. Even if you count prerequisites that aren’t part of the degree, I think the ALM would be fewer courses than the BA.

          I did most of my ALM courses while working fulltime but it was before we had kids. I only tried to do two courses per semester…I may have done three once when they were topics I was familiar with. Be aware of the 5 year time limit.

  38. Thanks guys for your replies so far. Very helpful. I definitely couldn’t simply not provide the transcript because that would mean that I would have to take all of my Gen Ed and electives over again, whic would take more time and money than I have.

    So I am going to go for the community college for a year and then go full time at Harvard. I will work only while I am taking the three prep undergrad courses, and the three intro Masters courses. Then I will take out enough graduate loans to provide income to allow me to work full time on my Masters and put all of my effort into doing well. The opportunity cost of taking 4-5 years to complete my Masters versus 2 years is worth the loans I will take out.

    My question right now is about the math requirement. So I understand I am going to be taking discrete math. I have not taken any classes since AP Calculus. What would you say are the pre-reqs to do well in the discrete math course, so I can set my community college schedule accordingly?

    1. When I took Discrete Mathematics it didn’t count toward the degree. However, I found that the Theory of Computation class was very difficult for me so I dropped it, took the Discrete Math class and then signed up for the Theory of Computation again. It looks like you may be may be able to count E-120 toward your degree. The class I took was S-104. I’m not sure what the differences are between those two classes. If you’ve had Calculus I would imagine you’d be well prepared. If you aren’t sure, you may be able to find videos of lectures from a Discrete Mathematics course from MIT’s OpenCourseWare or some other university website. The ArsDigita classes are still available here.

      Don’t forget that the single biggest thing that will determine if you are able to get a job is your experience writing code, so make sure you allow yourself plenty of time to write code outside of your class projects.

      1. I definitely will try to gain experience writing code. I am learning a lot from the CS50, but you are saying to write code outside of class projects. I imagine that would definitely include attempting to gain an internship, but how else should I write code outside of an academic setting? Just in my free time like coming up with an idea for a solution to a problem in my area, and writing code to fix it? What projects would I work on in my free time that you could recommend?

        Also, do you or Doug know if CS50b is taught on opencourseware? How would I find out the list of classes on OpenCourseWare?

        1. I’m not talking about an internship. I’m talking about finding a problem, something that bugs you or just something you want to try and then writing code for it. For example, when I was just starting java I wrote a small program to rename my pictures so the filename would contain the date. Later on I wrote a simple web server just to see if I could do it.

          If you do stuff like that, you are much more likely to be able to get an internship or even a job writing code while you are still going to school. Also checkout Google’s Summer of Code for possible internships.

    2. The OpenCourseware programs are available at http://cs50.tv, but you would probably enjoy being an actual HES student a lot more.

      I also considered going to community college before starting HES as I know IT guys that have no degree and still make six figures. So it is the skills not the degree that is going to make a difference, but I’m glad I just bit-the-bullet and registered for HES. I already already have a bachelor’s, so it didn’t make sense to go backwards. I figured graduate credit at Harvard would look better on a resume then an a associate degree from my local community college.

      If I were in your shoes, I would register for HES today. You could easily start CSCI E-50a or another class that looks like fun next week and get a taste for HES while you continue to work full-time. It is only $2050 with registration per course, over the course of 15 weeks it is about $20 a day for the semester. You’ll be a Harvard Extension Student and get an email account and access to other HES goodies and can get started. If you wait a year, it will be too easy to get a better job, girlfriend, or some other legitimate distraction that would keep you from going.

      Graduate students should be able to take out over $20k in federal loans. I believe the $12k limit is just for undergraduate students.

  39. I have a non computer science background and I’m planning to do my masters in CS. I’m planning to take pre-reqs courses from HES for credits and then apply for masters in a good reputed university.

    What do you think about it?
    Is it worth taking courses from HES and will most of the universities accept the credits from HES?

  40. Thank you for creating this page. I took CSCE-50a and did very well with it, but I spent a tremendous amount of time on it. It was my very first programming class (my undegrad degree is in finance). I have come to understand that programming classes are extrememly time consuming. What is the typical amount of time spent preparing outside of class?


  41. Hi,

    In regards to extensions, do they really add that value with juts a bachelors degree. I’m in india and planning to do my extension in software Engineering and quality assurance from UCSC silicon valley. Being a non-resident, I’m really in a two-minded state. I would do a full time course and then a OPT and a job, but do you think the Job I’ll get would be paid same as a MS in comp science will pay me? Would it be like risking money and career, since I would be out of my land. Or you think MS is a better option?

    Anyone can help or advise me on this? Thanks for your advise in advance :)

    1. The biggest thing that will determine how much you are paid is going to be your skill level. This is particularly true because there is a lot more demand for good software engineers than there are good software engineers. I’m not familiar with the UCSC program, so I can’t tell you how it would compare to an MS. There are a lot of MS degrees out there that are less rigorous than Harvard ALM in IT. But the ALM in IT is a lot less science than a MS from Harvard’s School of Engineering.

  42. Hey Mark,

    I must say that I became a fan of your post!
    1.I’ve been looking at HES , IT Software engineering requirments.
    From what I understood, Discrete math counts towards the theortic course requirment,so if I would take that , I wouldn’t have to take more Theortical classes, But from what I read of your post , it seems that you took/advised others Discrete + any other theory course. In conclussion , do I have to take any other theory course besides Discrete math?
    2.Some of the questions other people posted here mentioned that the Harvard ALM in IT seems reletivily a rigorous degree compare to other online degrees, suggest I’d decide to get an easier degree , which degree have you heard of that are relativly easiers than Harvard’s ALM?

    1. Be sure to check the current requirements. Discrete mathematics didn’t count toward my degree when I took it. If you are looking for something easier, check into the IT programs at smaller state schools or one of the for-profit online universities. But keep in mind that “easier” probably means “you won’t learn as much” so the long term benefits of an “easy” degree are a lot smaller.

    2. The Discrete Math course now counts toward the degree, but you will end up taking a bunch of other Theoretical and Math Foundations courses anyway as prerequisites for later classes.

  43. Hi Mark,
    I am a transfer freshmen student to Morrisville State College in New York. Recently, I just got my associate degree of Math & Science A.S program from Onondaga Community College. Right now, I am majoring in Application Software Developer at Morrisvile IT department, hoping I can pursue a Bachelor degree of Information Technology. But I plan to go a bit farther and want to accomplish a Master degree in my life. Do you think this degree will fit me? I am not much good with science subject but I do love coding and programming.

    1. If you have skill in programming and mathematics, you should be able to do well in the program. The best way to find out is to signup for a course that seems like it would be useful to you even if you don’t pursue the degree.

  44. Hi Mark,

    Would you say the HES ALM in IT gave you a solid foundation in CS? I’m considering the same program as you (except with a capstone rather than a thesis), but I was worried that I would have to learn a lot of the basics by myself, and that I might then be going forward with only a weak knowledge of the fundamentals. I have some programming experience in both C++ and Java and I’ve taken all the prerequisite courses they recommend (although my discrete math course was 10 years ago). My BA is in biology but I want to work in application development instead. If this program has sufficient fundamental coverage then I’ll register in a heartbeat; if not, I’ll be going with OSU’s completely online 1-year post-bacc BS instead.

    Hope to hear from you soon (registration ends tomorrow, wish I’d found your site sooner!), and thanks so much for your thoughtful reviews.

    1. Cindy – It seemed to me that the ALM in IT degree gave a better foundation in computational theory than many of the masters of science at the small to medium state schools I looked at. Of course some of that may depend on what courses you actually take.

      1. Thanks so much for your quick reply! I did notice while looking through course descriptions (I registered today) that some classes seemed more discussion-based than anything else. I’ve emailed one of their academic advisors to ask about choosing more applied courses. Thanks so much again for your enlightening post!

        1. Thanks for the link Cindy. Oregon looks like a pretty good program, the cost is about the same although the method of instruction looks a bit different. What classes did you register for at Harvard? I’m taking E-64 Visualization, http://www.cs171.org/ if you signed up for it.

      1. Hmm doesn’t seem to allow comments more than 4 deep. I’m signed up for Unix/Linux (E-215), Data Structures & Algorithms (E-124), and Java for Distributed Computing (E-160) so far, planning to add one more but haven’t decided yet. I hadn’t been thinking about Visualization, but it seems very cool now that I’ve looked at it more thoroughly. What made you decide to take it?

        1. I wouldn’t take a fourth class. Those courses all sound very challenging and Harvard recommends you don’t take more than three courses your first semester. Since it appears E-124 fills the TMF requirement, you should be able to apply for acceptance at the end of the semester and you’ll want to have B’s or better in all your classes to get accepted.

          The Visualization class is a recording which seems kind of cheesy, but it is from the College’s school of engineering, and I thought the skills in the class would be useful for displaying data that I use at work. However, I’m leaning toward the ALM-IT with a concentration in Digital Media & Instructional Design, rather than the Software Engineering track right now. The courses you are taking require some prereq’s which I don’t have. I may change to the SE track later, but the Digital Media track looks a bit more doable, as I don’t have the programming experience, nor the the math background. So my choices were rather limited anyhow.

  45. Hi Mark,

    Thanks for the great review! I’m pretty close to applying to HES. Just one question for you: is there any way to interact with people in your class/program? Not just for homework help, but more importantly for moral support in hard classes. I took E-295 on campus and it was so nice to know, toward the end of the semester, to know my classmates were as behind on the final project as I was, which prevented a few panic attacks :) And of course the networking helps too!



    1. Yes. I wish I had of done more of that. If you talk to the TF and let them know that you are interested in meeting other people from the class, they can facilitate sharing your instant messaging id or email address with like minded students.

      1. Thanks a mil Mark! Sorry I didn’t thank you earlier – the notification email went to spam (in case you want to look into it).

    1. I think you are supposed to complete it in 5. It took me 10 years because it took a long time to find a thesis advisor and by the time we found one, my original project idea wasn’t valid anymore so I had to basically start over with a new thesis proposal.

      1. According to Harvard’s guidelines there is a 5 year limit from time from actual acceptance to finish the ALM-IT degree. How did you get the extension to 10 years? I read that HES is pretty good about making extensions for at least one year by just asking, but did you have to make any special appeals to get the extensions or does your 10 years total include courses before you were officially admitted?

        1. I finished the coursework within the 5 year mark. However, there was a delay in getting me setup with a thesis advisor. By the time I had an advisor, my original thesis proposal was no longer relevant so I basically started over with a new proposal and a new search for a thesis advisor. Since the delay was me waiting on them, they said the limitation didn’t apply.

Leave a Reply to Mark Shead Cancel reply

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