I've thought a lot about modern CS curricula, and I have a few suggestions that would make them more fun for undergrad students. They are:
- Teach functional programming first. Most universities start out with either Python (a pretty good choice for a first language) or Java (a terrible choice). Wouldn't it be great if first-year students were introduced to Haskell or Elixir? Imagine the multitudes of newly-minted programmers writing first-year blogs about how cool monads and applicative functors are.
- Avoid over-optimizing algorithms (like Quicksort). This one might be a bit controversial, but I think it makes sense. As a first year student, we should be presenting a general overview of the field, not esoteric optimization techniques like Quicksort. What do we replace this part of the curriculum with? Monoids, applicative functors, monads, etc.
- Add a Rust-based OS course. You will still need to learn C (since the Linux kernel is written in C), but wouldn't it be cool to have a Rust-based OS course paving the way for a memory safe future? This one is my personal favorite.
- Add required webdev and mobile courses. Most CS grads will be funneled into one of these two fields, so I think it makes sense for students to have a grasp on both before entering the field. Plus, it would be cool to have an Elixir- and Phoenix-based course in the curriculum. :P
That's it! I hope you enjoyed this post, and I hope you have a great day!
P.S. If you'd like to support me or this blog, feel free to buy me a coffee.