My review of Northeastern's Masters of Computer Science (MSCS)
In the spring of 2021, I started my full-time, in-person study of a Master of Computer Science (MSCS) at Northeastern University in Boston. My educational background was a BS in Biomedical Engineering, with five years of experience working as an engineer, but I lacked formal or substantial coding experience. Prior to starting this program, I had only done some free online classes and this Python crash course book.
It took me 2 years to complete the program (Jan 2021 - Dec 2022).
I'm going to share my personal experiences and opinions on:
Courses
Career Assistance
Tuition
Lifestyle
Outcomes
Note: This is from the perspective of a person without a CS background. My opinions may or may not represent general consensus.
Courses
Northeastern's courses are the real deal. I'd say they are only slightly behind other nearby big names like MIT, Brown, NYU, and Tufts. If you reverse google search your assignments, you'll find that professors often "borrow" projects from other schools. The rigor may be less than the top tier, but the material is generally the same.
The courses I took (in no particular order):
Algorithms - CS 5800
Programming Design Paradigms - CS 5010
Database Management Systems - CS 5200
Foundations of Artificial Intelligence - CS 5100
Computer Systems - CS 5600
Computer Networks - CS 5700
Web Development - CS 5610
Foundations of Software Engineering - CS 5500
Bonus: Building Scalable Distributed Systems - CS 6650
From my perspective, every course was fairly difficult because I didn't have any real experience.
Algorithms
Very math, logic, and proof-intensive. Not for the faint of heart. Thankfully, the course is designed to get you to think outside the box rather than crunch numbers.
I noticed that people with a good theoretical mind or strong math background did fairly well. Thankfully, there are plenty of online guides and tutorials for every kind of data structures and algorithms concept. I didn't find the course as useful as people claim it to be, maybe because I did not plan to work in a theoretical/research heavy field.
Difficulty: 5/5
Programming Design Paradigms
"Die from a thousand cuts".
Easily the worst course of this program. The assignments are incredibly rigid, with no room for any creative choice. The requirements are longer than the Apollo 11 flight manual, and the grading system is stricter than Gordon Ramsay in a cooking competition. It was so painful that I picked up Go afterwards. In fact, one of the creators of Go (Rob Pike) has a very relatable talk about "bureaucratic Java".
I remember doing the math on the grading rubric, and you could easily get marked down into negative points on an assignment, although it just bottoms out at 0 points.
I think this course has good intentions, but the mandatory overuse of abstractions is the opposite of clean, maintainable coding practices.
Difficulty: 5/5
Database Management Systems
A boring but useful course on databases and how to design your data relationships. My class used MySQL, but I've seen other professors use SQLite or PostgreSQL. An easy class, but the final project was still a grind since we had to utilize 10,000 rows of data. Would recommend if you've never worked with databases before.
Difficulty: 3/5
Foundations of Artificial Intelligence
An introductory class that satisfied my curiosity about AI. It confirmed my decision not to pursue AI/ML. I just want to use the end product.
Heavy in Python, statistics, and theory, though not too heavy in probability and statistics since that pain is reserved for Natural Language Processing (CS 6120) and Machine Learning (CS 6140).
Some topics we explored were path planning, scheduling, multi-agent systems, agents in environments, reinforcement learning, and basic modeling like gradient descent. A few of the assignments were borrowed from other universities, so everyone is basically learning from the same sources.
This is one of those curiosity courses for non-AI students.
Difficulty: 4/5
Computer Systems
A very difficult class but highly recommended for anyone who wants to work on backend systems, embedded systems, or robotics. The programming language used is C.
You get to walk the path of countless others who built the backbone of all computer systems since the 1970s.
After you take this course, you'll always think about the underlying memory layout and lifetimes, which naturally helps you write more performant and safe code. Your GPA might go down, but it's worth it. Nobody in the US cares about GPA for software engineering jobs anyway, unless it's one of Elon Musk's companies.
Difficulty: 5/5
Computer Networks
Another difficult class, but not as hard as Computer Systems because you are free to use whatever language you want. However, the assignments are difficult and often unforgiving since you'll be debugging a networked system.
Many students use Python, but I think it's a trap because you won't have compiler type safety. I would recommend Go, C++, or Java/Kotlin.
Since most modern computer systems are networked in some way, this course is worth taking, unless you're OK with letting the WiFi card do its black magic. After you take this course, you'll always be thinking about network throughput, packet loss, congestion, timeouts, and reconnects.
Difficulty: 5/5
Web Development
A meme class for some people; serious for others. You could get an A- by simply breathing, but your website might look like garbage. Or you could get an A by putting in effort to learn how to build a modern, beautiful website.
Web technologies evolve rapidly, so it's unrealistic for the professor to teach the latest tech stack or JavaScript framework. However, the professor covers the fundamental skills that have been relevant for the past five years. The rest is up to you to learn on your own, which is manageable since there are countless web dev tutorials available online.
When I took this course in 2022, the curriculum's tech stack was JavaScript, React, HTML, CSS, Bootstrap, MongoDB. Although, you're free to use anything in your final project like TypeScript, Tailwind, NextJS, etc.
In my opinion, this is not a course to blindly follow the professor. You'll have to self-teach yourself the cool stuff, or else your website will look like a 1990's web page.
Difficulty: 2/5 if you don't care. 3/5 if you care.
Foundations of Software Engineering
Another meme class for some people, but I actually got my current job due to the final project in this course.
My professor, Mike Shah, had us use C++, SFML, and either TCP or UDP networking. I mention Mike because he's one of the few professors at NEU who (1) gives you a complex problem, (2) allows you to freely explore solutions, and (3) doesn't penalize you for making mistakes. Plus, all the people in my team got jobs immediately after graduating, so I'd like to think his teaching style had some influence.
The course also teaches you some real project management skills, and since the final project was unique, difficult, and fairly low-level, it provided a lot of great talking points during job interviews.
Difficulty: 2/5 if you don't care. 4/5 if you care.
Bonus: Building Scalable Distributed Systems
I did this course as a non-enrolled student after graduating since the entire course was online. The experience was wonderful since I wasn't bound by any strict rules, deadlines, or grading system. I could "cheat" for the sake of learning, and nobody would give a damn. The assignments were quite fun, and I liked how the professor made you benchmark your system.
One negative is that this course does not teach you how to build distributed systems from scratch using the famous Raft paper. Instead, you build more or less a cloud system using services like EC2, RabbitMQ, and DynamoDB.
I had to spend my own money to run various cloud services, and in doing so, I learned that AWS is a terrible spaghetti mess of services which is not suited for solo, rapid development. Instead, I experimented with various PaaS providers (Railway, Heroku, Fly.io, and Koyeb) which abstract away complex deployments, provide a scalable distributed system under the hood, and charge you a fraction of the cost.
Difficulty: 3/5
Career Assistance
None. This field is very saturated and the students are very competitive.
The Northeastern name may help for local hires. Both my internships were in-person around the Boston area.
Tuition
I paid about $60,000. Was it worth it? - Only if you get a job right out of school ๐.
Doing such an expensive program is dangerous on so many levels. The debt may crush you financially, socially, and mentally, if computer science itself hasn't already broken you.
Looking back, I should've gone to my in-state university at $30,000 or done Georgia Tech's OMSCS at $10,000.
Lifestyle
Prepare to drop everything in your life. Friends, family, and even your hobbies.
I probably studied or coded for 72 hours a week for 2 years straight, equivalent to China's infamous 996 schedule. Burn out is 100% guaranteed.
I was applying for my second internship while I was still doing my first internship. Then, I was applying to full time jobs while still doing my second internship.
Outcomes
Co-ops: 0
Internships: 2
Job offers: 2
I avoided JavaScript and Python roles like the plague because the companies hiring for these roles were either small startups with tight budgets or trendy companies (eg. FAANG) with too many applicants and very high expectations. Instead, I positioned myself as a backend engineer (C++, C#, Go) targeting large, boring companies that likely had bigger hiring budgets and less applicants.
I got my 2 internships and 2 job offers all through LinkedIn. I did not have any success with NUWorks ๐.
In the end, I did manage to successfully switch careers and increase my salary substantially, but with a great amount of self-damage along the way.
Conclusion
If it's not obvious by my tone already, I think that completing a challenging CS Master's program without a CS background and/or relevant experience is nearly impossible.
Here is a gif that summarizes my experience:
If you have a Bachelor's in CS and/or relevant work experience, you can probably breeze through this program with 70% effort. With the arrival of AI, you can probably slice an additional 20% off your base effort.
If you do not have a CS background or relevant work experience, I recommend doing a "bridge" program where you spend one year catching up before starting the two-year Master's program. Think of it as a 1+2 program. Northeastern offers a bridge program called Align, which will put you even further into debt! Other schools offer similar programs as well.
Northeastern's MSCS program worked out for me, but there is definitely survivorship bias at play here. You'll never hear about those who struggle to find a job years after graduating or simply drop out early, never to be heard from again.
Final note about AI
I truly believe that AI will help students learn better, faster, and more deeply than before. I was able to self study Building Scalable Distributed Systems (CS 6650) on top of working a full time job, without much stress. It didn't matter that I didn't have a professor, TA, or Piazza because I had an AI that was willing to talk for 10 hours straight without getting annoyed, tired, or hungry. Meanwhile, TA's at Northeastern are limited to roughly 15 minutes per student, which is utterly useless.
There are a few quirks with using AI as a teacher, but as long as you use common sense, read documentation, test, and iterate, you can gain so much industry knowledge which would otherwise be unattainable outside of working at big tech. It's a smart move for those who want to get a 200% return on investment.
Subscribe to my newsletter
Read articles from Dennis Ping directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Dennis Ping
Dennis Ping
Virtual lego builder