Julia Evans

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.


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

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

COMP 273 Intro to Computer Systems
COMP 206 Intro to Software Systems

COMP 302 Programming Languages & Paradigms
COMP 524 Theoretical Foundations of Programming Languages
COMP 330 Theoretical Aspects of Comp Sci

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)

My master’s thesis.

Learning systems programming with Rust Some questions about Docker and rkt