Computer science courses that don't exist, but should (2015)
prog21.dadgum.com
prog21.dadgum.com
Ethics of computing: explaining and considering the principles of free software, practical reasons for respecting software freedom, and reviewing corporate-minded disclosure policies such as so-called "embargoes" on when security flaws may be revealed by independent actors who haven't agreed to keep secrets for businesses. Plenty of discussion and debunking of the latest corporate-written news stories.
Reverse engineering protocols and file formats: we are saddled with a lot of network protocols and file formats that need to be documented so we can write fully compatible free software. A free software Skype client wouldn't protect any user from the calls routed through a central Skype server, but it would allow users to tell their Skype-using friends and family to consider switching to a free software client where their calls aren't copied by default by Microsoft (a known NSA spying partner).
Writing documentation for IT professionals and non-technical computer users: too few people I know in IT jobs write documentation at all (even something as trivial as updating a ticket explaining what they did to resolve an issue). Some IT pros don't use complete sentences when they speak or write leading to unclarity and needless confusion, and further exacerbating an 'insiders club' mentality. This is a course aimed at showing technically-minded people (or those who aim to become such) the value of speaking clearly, writing clearly, and committing things to writing instead of depending on memory and verbal "hand-off" between IT professionals.
Advanced optimization techniques for distributed applications: data and instruction localization, SISD (Single Instruction Single Datastream) architectures, cache reuse.
I think we loose track of what we are. I'd much rather be a SE than a CS. Unfortunately no colleges have a dedicated tack for this.
I can think of no single class that would have been more useful in my CS curriculum. Don't know if it's offered these days, but I deal with interns from top schools regularly, and without exception every one is lacking the basic fundamentals.
I think CS departments need to come to terms with the fact that 99.9% of their students are going to become software engineers in the field.