Hi, so I'm going to begin my university in a month (Bachelor of Information Technology). I hope to major in software development. There are no compulsory maths courses in this major, but it's recommended. So in the first semester, I've taken Discrete Maths for Computer Science (as an elective).
Some other courses I've enrolled in for the first year:
- Introduction to Interactive Media
- Introduction to computer science
- An extra programming course (in addition to compulsory ones)
I'm interested in motion graphics, web design and development, human computer interaction, computational neuroscience and AI as well.
But to cut straight to the point, what are some courses I should take that will complement my Software Development major and help me get the most out of college education? I also want to keep my options open as a possible career in multimedia or Artificial intelligence.
Hoping to get some valuable tips from the developer community xoxo
Top comments (18)
As a computer science student myself right now, the courses I'm required to take are
some other classes I would personally be interested in are also
mix and match your own and to find the classes you like and need to graduate I hope you enjoy school a ton and best of luck :D
I definitely second the graphic design or an introductory design course. It goes a long way to understanding how to make things look nicer.
Something I'd add to this list is psychology, sociology, or something that builds on interpersonal communication. No matter what career you go after, that will end up benefiting you in the long run.
I minored in graphic design and would heavily recommend it if you plan on doing any UI work. I've noticed a lot of software engineers, especially full stack devs, really lack basic design concepts. A good graphic design or web design class can really help set you apart and make your UI's a lot more professional.
I'd recommend taking some elective humanities courses like in music or art. Creative or expository writing courses would also be helpful. Do something to engage your creative side.
If there's a philosophy of logic class offered that might be useful to you as well, getting you to think in broader, more abstract, patterns.
Business related classes might be useful, especially in the corporate world where you will be likely to deal with topics like accounting practices and financial planning. You'll appreciate this when you're stuck in a day long meeting with accountants debating which rounding technique to use in a report.
I dropped out a year in, but before I did I took two amazing courses. Discrete was one of them, but you've got that covered.
The other was a 400-level class in "masterpieces of literature" I managed to beg my way into for an elective credit as a transferring sophomore. It turned out to be a deep comparative study of Crime & Punishment, the biblical book of Job, and Goethe's Faust. It's impossible to overstate how useful techniques of literary analysis and exegesis are, not just in communicating with other people, but directly in developing software too. Writing is about making and refining meaning, and writing code is no exception. Felienne Hermans' talk Programming is Writing is Programming is an excellent dive into the subject.
Also, a grounding in the humanities is important for being a well-rounded person. Don't neglect the non-technical stuff!
Microeconomics and psychology complement CS quite well. Any computer history classes are also great IMO.
One of my favorite courses I took before I dropped out was a speech and debate course. I learned how to structure an argument and whatnot, but I also learned how effective being funny was when you are trying to connect with people. That and knowing how to explain myself are two major skills that I credit with passing interviews and being able to communicate well at work.
On the technical side, Algorithms and Data Structures was my favorite. I learned the the 5 or so DSs that they taught and the algos that accompanied, but more importantly I learned how to break down pseudocode which I was then able to use to learn more as needed from Wikipedia.
data structures and algorithms for sure, might be part of the core though. other than that, most of the courses I've taken are things which can be googled. If you're passionate about programming, the rest will follow. I've taken a lot of math courses and the only one I've used is probably calc 1 or precalc even. Take a DB course if you can too, as it's helpful to learn the basics then go from there.
Having taken a software eng program, comp sci probably would have had more directly applicable programming courses.
During my Comp Sci education, I enrolled in mostly theoretical courses (Lots of maths, automata theory, algorithms). Content wise, there is little overlap between those and my current work as a consultant, but I definitely benefit from the reasoning skills I developed over the years of proving things formally. More importantly, they serve me better than the few courses related to Software development I took.
Generally, prefer courses that build up your skills and abilities over courses that increase your knowledge, especially if that knowledge is specific to some technology.
Even more important, learn what you find enjoyable, because that's going to stick anyway.
Some specific things I recommend to pick up:
Strong maths foundation will be helpful even if you never use it directly. It will sort of prime your brain to be better with abstract reasoning and internalizing non-intuitive concepts.
In addition to discrete, I would strongly suggest taking linear algebra and statistics/probability. Anything relating to ML, big data, computer graphics, etc. will be much easier to grasp.
Also, some basic (project) management and communication courses can be really helpful.
If your university offers any courses on music technology I hope you’ll consider taking one! Making music with software is fun and I learned more about human-computer interaction from that course than any other. I’d also recommend computer ethics and at least one elective each of history, political science, and philosophy if you have room in your schedule. Even if you don’t find those subjects interesting on their own the course work will be great for working on writing, communication, and critical thinking outside of technical domains.