- Digital Logic Design (basic CMOS based logic, HDLs, and basic VLSI to add on top of computer architecture)
- Real time systems (WCET analysis, scheduling, etc)
Also, some schools blur CS and Electrical Engineering and for those you may take a whole other set of courses neither of us mentioned.
Stuff like basic circuits, signal analysis, semiconductors (doping and transistor design/analysis), and for some people optionally also RF and network analysis (not that network, the one with smith charts).
- a lot more maths - really a lot - what’s here doesn’t come close to covering what we did in the first year alone. For a CS degree, I would at least expect far more algebra, some graph theory, a course on optimisation and dynamic programming, some PDE and a course on numerical methods and algorithms and some formal logic (but from what I saw when I did my post-grad the amount of maths done in my country for a CS engineering degree goes further than a maths bachelor in the US so I’m extremely biased).
- Compiler and some language theory
- a course on logic programming, another on functional programming
- a course on assembly and low level programming
- a course on Networks and systems
- a course on databases architecture
- on top of a ton of physics and courses not directly oriented towards CS but required to be an engineer here.
This varies widely by University. The Git repo matches my experience pretty well except I also had Calc II and Discrete Mathematics.
> a course on logic programming, another on functional programming
This was already in the Git repo when I looked. I think the "Programming Languages" from University of Washington Courses cover that. Specifically "Programming Languages, Part C"... though it doesn't mention Common Lisp or Scheme and uses a lot of Ruby, which is an odd choice (IMHO).
Graph theory wasn’t covered. We had Calc 2, Statistics, Linear Algebra, Differential Equations and Logic. Assembly, Fortran, Java, JavaScript, Standard ML, Ada and C++ were covered.
And notably (and related to my Java observation) there are two OOP classes here.
I like the concept but it is some key things a 4 year degree's sometimes (not saying always!) have:
- Compiler Design
- Architecture (though some of the "systems" courses get into this)
- Databases (there is a DB course in there but it says "Essentials" and it is debatable if it actually even covers that)
- AI / Machine Learning
- Networks / Distributed Systems
- Embedded Systems (less common in CS degrees but almost every CS student I know has messed with Arduinos so it's not a stretch to have a basic embedded systems course)
Also, one of the most fun parts of an undergrad can be the electives, it would be nice to see some electives added here. I took 3D Graphics Programming and Bioinformatics, which I enjoyed at lot.