You mention version control in passing, but it probably deserves more emphasis. CS majors who aren't comfortable using version control are likely to be at a disadvantage.
OCaml may work as an alternative to SML.
You could also mention Information Retrieval, alongside Machine Learning.
Compilers/parsing/interpreters/etc. could really be its own top level item.
Learning to use profilers / performance optimization. _The Practice of Programming_ covers this (and many other things!) quite well.
All in all, a great list. Probably also useful to suggest starting points for people (like myself) who are self-taught.
To be clear: I consider understanding version control essential. I'll emphasize it.
I agree that OCaml and SML are roughly interchangeable for educational purposes. I picked SML because it's slightly "cleaner."
As a compilers prof, I agree that compilers should be its own item, but politically, that's a tough sell. Teaching compilers needs to be sold in the service of another end for most faculties.
Cleaner, yes. I picked OCaml because it seemed easier to find information about, and more widely ported.
Also, I think most people fail to appreciate how useful compiler techniques are outside of "compilers". Even just knowing a little about lexing and parsing goes a long way.
For Prolog, I'd also recommend _The Art of Prolog_ by Sterling & Shapiro and/or Clocksin's _Clause & Effect_.
Comments
You mention version control in passing, but it probably deserves more emphasis. CS majors who aren't comfortable using version control are likely to be at a disadvantage.
OCaml may work as an alternative to SML.
You could also mention Information Retrieval, alongside Machine Learning.
Compilers/parsing/interpreters/etc. could really be its own top level item.
Learning to use profilers / performance optimization. _The Practice of Programming_ covers this (and many other things!) quite well.
All in all, a great list. Probably also useful to suggest starting points for people (like myself) who are self-taught.
To be clear: I consider understanding version control essential. I'll emphasize it.
I agree that OCaml and SML are roughly interchangeable for educational purposes. I picked SML because it's slightly "cleaner."
As a compilers prof, I agree that compilers should be its own item, but politically, that's a tough sell. Teaching compilers needs to be sold in the service of another end for most faculties.
Cleaner, yes. I picked OCaml because it seemed easier to find information about, and more widely ported.
Also, I think most people fail to appreciate how useful compiler techniques are outside of "compilers". Even just knowing a little about lexing and parsing goes a long way.
For Prolog, I'd also recommend _The Art of Prolog_ by Sterling & Shapiro and/or Clocksin's _Clause & Effect_.