DEV Community

Discussion on: What is top 5 most valuable courses in a CS Degree?

Collapse
 
nestedsoftware profile image
Nested Software • Edited

I feel for you regarding all the busywork and apathetic attitude on the part of professors/instructors. If you push yourself and surround yourself with friends who are also passionate about the subject, I think you can still learn a lot in college - both from the courses, and perhaps more importantly, on your own and with your friends. Here are the courses I would recommend not missing out on:

Core:

Optional:

  • Introduction to Logic and Reasoning: Not formal logic, but rather the course that focuses on understanding logical fallacies and arguments - sometimes it's a philosophy class. I think being able to understand correct and fallacious thinking and also to appreciate rhetorical devices that are psychologically convincing but logically wrong is super useful in many aspects of life. I wish everyone had to take this type of course in school. It would hopefully make people much more aware of when they are being fooled or manipulated.
  • Human Computer Interaction: Most of the above core topics are very technical, and they will put you in the mindframe of solving problems from an engineering perspective. I think a quality course in HCI and Human Factors is very helpful to correct a bit for that; so that you always remember that ultimately software is for people; and that concept should be included at the very core of any design, no matter how complex and technical the implementation might be.
  • History of Computing: This is obviously not of huge practical importance, but I find the history of computing very interesting. If there's a course like this at your school, and you have room for it, I think it could be refreshing to look at computing from this kind of perspective. You'd learn about ancient computing devices, like for keeping track of time or looking at the stars; things like slide rules; Charles Babbage and Ada Lovelace and the first designs of truly universal computers; early architectures of both analog and digital computers from, say, the 1920s to the 1950s; and so on. I think that could be nice palate cleanser if you're taking a lot of really hard technical courses.

Textbook links are just possibilities for anyone reading this who may want to study these topics on their own. For autodidacts, I have found that researching such topics online can be very helpful also.

I think these would form the core of a solid foundation that allows you have a lot of flexibility in what you end up doing in the future - whether that means doing a masters/phd or entering the workforce. I've omitted formal logic and computability. I don't think this is as important unless you're really interested in theory. If you're specifically interested though, certainly go for it! If you're interested in an in-depth study of compilers, taking a compilers class or looking into the famous compilers dragon book could be a good idea.

Probably at least some of these courses are required, but I thought I'd list the things I consider to be the most important. If I started my own CS Program, I would just cover these subjects in depth, and then assume that was enough for people to cover whatever else they were interested in on their own :)

Good luck!