How I got a CS degree without learning what a system call is
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.
undergrad
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
grad school
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)