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 comp...
For further actions, you may consider blocking this person and/or reporting abuse
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.
There were two things I learned as an undergrad (USA) that helped:
I took a class that used Oracle RDBMS & SQL to teach some basic data theory stuff. It gave me an advantage getting my first job, and I've used something from that class every day since then. (I'm a web dev.)
The compilers & interpreters classes I took taught me how to parse stuff, and it's the reason I have zero issues parsing configs, data files, etc. (And why I tend to get impatient when I open up "parsing" code and find a pile of regexes...)
Now, two things I wish I'd taken:
I was going to recommend getting conversant with git, but I see you're already on github.
I wish I'd taken a class on workplace psychology. My favorite book on the topic is How to Talk so Kids Will Listen, and Listen so Kids Will Talk. All humans are grown babies.
And here is the HOWTO I put together for my cousins when they started college. You probably already know a lot of it, but I thought I'd throw it in anyway.
All the best!
An odd recommendation but it's high demand..but defintely any security/systems related course, if your university offers one. It's something that kind of falls by the wayside for software devs/computer science majors, but it's really a great topic to get into!
Some other areas of recommendation are
-Software Testing (Quality Assurance)
-Introduction to Networks
Best of luck of your journey!
If you have any interest in game programming, take a look at basic Physics, Linear Algebra, and Vector Calculus. Linear is also interesting for crypto, as it provides an understanding of how some operations (such as hashing) are one-way only.
gamedev.net/articles/programming/m...
Accounting + anything non-technical, particularly in the writing/communications arena.
Speaking from personal experience, a course in deductive logic (Philosophy) is a worthwhile elective...perhaps even a GREAT elective, IMHO. :)
I have a few mechanical engineering courses. My absolute favourite is "Introduction to space flight", a colorful mix of orbital mechanics, thermodynamic and rocket building.
I did the same bachelors and these subjects were the very first ones I did. Deakin?
Definitely do discrete maths and take up as many programming classes as you can. The more exposure, the better!