DEV Community

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

Collapse
 
cjbrooks12 profile image
Casey Brooks • Edited

The classes that lent themselves most to what I do everyday now are:

1) Graphics programming - I don't do graphic programming or game development, but it did teach me the best overall picture of real-world software development. How do you take some abstract idea (drawing a 2D or 3D scene), break it down into smaller, easier to solve problems (lighting, shading, drawing different types of objects, reading graphics models from a file), and then assemble them into a larger working whole.
2) A capstone project - Universities don't typically teach students modern development frameworks or technologies, as it is simply too hard for professors to stay up-to-date with this rapidly evolving landscape, and ultimately universities want you to come back to their graduate programs, not to the working world. At least mine did that. But I digress.... That being said, capstone courses are some of the only classes that even attempt to get you working with real-world, modern technologies, rather than trying to re-implement them yourself. This is really important, because it will teach you how to search documentation and learn to work within constraints. It also helps you learn that you don't need to know everything every aspect of a technology in order to successfully use it.

The classes that I wish I could go back and learn better, now that I've been developing professionally for several years:

1) Systems Programming - While I don't do any systems-level programming, I do work a lot in Java and Android, where many of these systems-programming terms are common. I vaguely understand IPC, networking, threading, filesystems, and memory optimization, enough to get by, but certainly not well enough to actually do any of those things well. Having a better understanding of what the OS is actually doing would make me much more confident approaching tasks involving these.
2) Databases - A capstone project of mine involved building a small database engine, but I never took a full course on it. I really wish I knew more about how databases worked, so that I could do things like understand how to speed up slow queries, know how to properly set indexes, and structure the tables efficiently. Nearly every project you work on will have some kind of database in it, so you should probably know enough about them to be comfortable setting one up.