Classes Future Programmers Should Take

I appreciated James Hague’s post on Computer Science Courses that Don’t Exist, But Should.

I really like Dave Thomas’s idea of a Software Archeology class. I have spent a huge amount of time as a developer reading (vs. writing) code. I wish I’d been taught how to read code effectively.

Similarly, I have thought there should be a class (or series of classes) in “interacting with others’ code”. Topics could include inheriting a software project, handing off a software project, writing code using 3rd party libraries, using package repositories, and understanding software licenses. These are such important skills in real world software development, but they seem to be rarely taught in the classroom. Perhaps a follow-up class could be “contributing to open source”.