Ok I have thoughts on whether there should be separate CS courses for those who want to just use the tool vs go in deep. 5 years ago I thought absolutely, why learn about semaphores when you’ll write Python for a living. Now I think yes but the course should still go deep
TAing after working in industry is a whole different experience. Right now I’m TAing a more applied version of databases. I thought we’d mainly teach them SQL, Pandas, whatever modern frameworks, but wow it’s much more important to teach the fundamentals like
Basic query optimization, B+ trees, different join algorithms, etc. Why? 99% of the time when a practitioner has a how-to problem, they can google it. 99% of the time with a “why?” problem—like why is this query slow, why do I need more memory—internet isn’t immediately useful
Last week someone in office hours asked me “I have an index on this column. Why is computing the median or average still slow but the min or max is so fast?” and they understood my explanation in 30 seconds bc they knew what a B+ tree is. And they were like “oh, duh”
The PhD makes me rethink the role of CS pedagogy. Even thought it’s a super practitioner-heavy field, I don’t think the role of a university course is to teach only the tools. I would much rather students leave understanding relations, indexing, mutability, why UDFs suck, etc
than “in pandas we use melt instead of unpivot, gotcha!” Similarly in ML courses, I feel students don’t need to train diffusion models, generate adversarial examples, implement replay buffer for dist shift robustness, etc. Teaching about convexity, SGD variants, etc allows people
to answer their “why” questions, even if they don’t immediately know answers to “how-to” questions. Like why does my org retrain models every hour? Why did last week’s model predict this input correctly but this week’s didn’t, even though they were both trained on the input?
Sure I’m never going to hand derive partial derivatives for backprop, but if I am training a NN in industry on a proprietary dataset, it will definitely not work on first try. And I will most certainly be printing out my gradients, ranking examples by loss, and using this to
further clean and preprocess my proprietary dataset. No amount of PyTorch API documentation is going to tell me to do this. But I will be glad I have the tools to figure out what to do, and I think this is the point of academic CS courses.
Loading suggestions...