I decided on a Bachelor’s of Science in Engineering in Computer Science for a few reasons, but one was the flexibility that the major offers: no thesis, only 8 departmentals, and choice over those departmentals. However, I know realize (somewhat facetiously) there is a set of courses that you should take if you want to be a beast at Computer Science, Mathematics, Statistics, and Machine Learning. I mean, absolutely cracked.
Here it is:
The core thesis of this is that Princeton’s COS department does not put enough emphasis on mathematical rigor and deep independent exploratory building. Though this schedule seems way too intense, I honestly believe it is doable if you are predisposed to the subjects. Your predisposition to these subjects likely entails having prior exposure to math, computer science, and science. I will assume the same assumptions that I came into Princeton with: testing out of COS 126, physics, chemistry, etc. with the highest math I took was AP Calculus BC. Even if you did more advanced mathematics, unless it was proof-based, you should start here.
Note: these courses will mean nothing if you don’t devote the time and energy to truly learning the material. Otherwise, you will likely fail. These are not easy courses, especially not combined together. Yes, there are lots of ways to get through these courses, but eventually, the gaps in your understanding will start to build up, especially the more upper-level the course. I assure you that you can do these courses while still succeeding at Princeton, if you are a certain type of person, even if you haven’t had the exposure before coming into Princeton.
Your First Year
Your first semester is actually pretty light: MAT215 (replaces multivariable calculus and introduces proofs), COS226 (relatively easy Data Structures and Algorithms that you should supplement with daily Leetcoding), SML201 (to dip your toes into statistics and R), and ORF245 (to learn statistics). In addition, take some courses outside of engineering, perhaps creative writing or philosophy or religion? Something very, very humanities. A freshman sem? Writing sem?
Your spring starts to ramp up: MAT217 is a rigorous Linear Algebra that will pay dividends when doing any machine learning in the future, COS217 is a relatively difficult Introduction to Systems course that teaches you a lot, COS340 is a discrete math course that has some overlap with ORF 309, which is Princeton’s standard probability and stochastic systems course. You may need to push ORF 309 to next semester if they don’t let you in–but start learning the material anyways. Continue to take more humanities and maybe pursue a minor.
Hint: you can take more than 5 courses a semester! I’ve taken up to 7– you just need permission from your Dean of Academics.
Hint: you should take your Advanced Standing, mainly so that you can tell employers that you are a sophomore and junior a year early to get a better internship.
Your Second Year
Congrats! You’re officially a BSE student, with all of your engineering prerequisites complete. You should start learning rigorous statistics and machine learning ASAP (skip wishy-washy COS324 for ECE 435), do some systems programming with COS316 (pretty easy and well-defined course), and learn super crucial math with MAE 305 and ORF 309, which should just be required at this point.
In your spring, you should start to explore the real coding of COS and how Computer Science is applied in the real-world: COS 333, you can build your own app, COS 484, do some real NLP research, COS 432–learn some information security and do some hacking, and continue learning engineering mathematics.
Your Third Year
Hopefully you nailed a really solid software engineering or quantitative finance internship between your second and third years since you’ve been practicing your Data Structures and Algorithms and Probability and Statistics skills this entire time? Now, you should start doing some independent work with that newfound independence, as well as explore other spheres of industry: COS 448 gives you exploration into the business side of technology and you can see how a blockchain works with ECE 470. Keep doing math, as always.
In your spring, maybe go abroad. If not, learn some more math with ORF 445 and see if you like finance. Do another independent work project–maybe set yourself up for an interesting thesis or just build an app. You can’t be a real Computer Scientist without learning how everything in the cloud really works with COS418–distributed systems. Graph Theory goes hand-in-hand and might come in handy, who knows?
Your Fourth Year
Hopefully you’re not still reading this guide, but if you are, you definitely didn’t do anything I said before. Don’t be afraid of taking courses you probably should’ve taken earlier, like ORF 309 or MAT 217. But it’s thesis time! Do some fun courses, like Computational Finance in C++? Hmm… I guess we have done… ZERO? ZERO courses in C++? Yeah, definitely should do some C++. If you’re this far, you’re probably taking graduate level courses anyways.