Yesterday I wrote that I have 2 CS degrees but didn’t know what a system call was when I graduated. Some people think this is surprising and a failure of CS education.
I don’t have any opinions really about what a CS education should be, but, to explain how this happened, I wrote down a while ago all the classes I took in my joint math/CS undergrad. The math & CS theory classes at my university were extremely good, so I just took all of them.
This is just to say that “a CS degree” can represent a lot of different educations, and personally I think that’s totally fine. I know people who mostly did electrical engineering and human computer interaction! Took a ton of biology classes because they were studying bioinformatics!
But more importantly – it’s ok to not know things. I knew practically nothing about a lot of really important programming concepts when I got out of grad school. Even though I’d started learning to program 8 years before! Now I know those things! I learned them.
I have friends who are amazing programmers who sometimes feel bad because they don’t have a CS degree and sometimes don’t know algorithms/CS theory stuff that other people know. They’ve learned the things they needed to know! They are great.
Here’s the list.
PURE MATH MATH 235 Algebra 1 MATH 242 Analysis 1 MATH 248 Honours Advanced Calculus MATH 325 Honours ODE's MATH 251 Honours Algebra 2 MATH 255 Honours Analysis 2 MATH 377 Honours Number Theory MATH 354 Honours Analysis 3 MATH 356 Honours Probability MATH 366 Honours Complex Analysis MATH 370 Honours Algebra 3 MATH 371 Honours Algebra 4 MATH 355 Honours Analysis 4 OPTIMIZATION + ALGORITHMS MATH 350 Graph Theory and Combinatorics COMP 250 Intro to Computer Science COMP 252 Algorithms and Data Structures COMP 506 Advanced Analysis of Algorithms COMP 567 Discrete Optimization 2 MATH 552 Combinatorial Optimization MATH 560 Continuous Optimization COMP 690 Probabilistic Analysis of Algorithms UNIX BASICS + ASSEMBLY COMP 273 Intro to Computer Systems COMP 206 Intro to Software Systems CS THEORY + PROGRAMMING LANGUAGES COMP 302 Programming Languages & Paradigms COMP 524 Theoretical Foundations of Programming Languages COMP 330 Theoretical Aspects of Comp Sci OTHER CS TOPICS: COMP 761 Quantum Information Theory COMP 462 Computational Biology Methods COMP 520 Compiler Design
I had to take 6 classes during my master’s. They were:
- Higher Algebra 1
- Geometry & Topology 1
- Geometry & Topology 2
- Machine Learning
- Topics in Computer Science (lie algebras)
- Advanced Topics Theory 2 (I don’t remember the topic right now)