What are good science courses?

What computer science courses will help me the most with real software engineering?

  • Of course all courses are beneficial in some way, but what courses are the most beneficial and why? partner question:

  • Answer:

    It depends on your school and what classes it offers in its CS program. In my humble opinion though, I think these courses are important for any software engineer, and they are probably offered in any CS program: 1. data structure & algorithms. 2. discrete mathematics. 3. databases. 4. networks. 5. operating systems. 6. theory of computation. 7. computer architecture. 8. Algorithm analysis and design. I probably have missed some other important classes. - 1 is very important so that you have a background on how to organize your data in your code to allow for fast processing, using arrays for everything is just not gonna cut it. - 2 is important because it introduces you to some useful things like proof writing which is very important when you want to prove to someone that your program does what it's supposed to do. You also study some other really useful things like combinatorics and graph theory. These are all very important. - 3 is important because databases are EVERYWHERE and knowledge of how to design and query databases is extremely important. - 4 this one is useful because normally as a software engineer you'll design programs that work across a network and not just on a local machine. So you'll need to understand sockets, the TCP/IP stack, network protocols, etc. - 5 this one is useful because you learn what operating systems are and how they work, you also learn some useful things like multithreading. - 6 some people may say that this one is an overkill if you just wanna write software, but I think it's very useful, a lot of fun too. It challenges you and makes you smarter. You also learn about automatas (very simple computers), regular expressions, grammars, Turing machines, and you also learn some stuff about computational complexity. If you take this class, you'll understand what problems can a computer solve and what problems it can't. You'll also understand that there are certain problems that don't have an efficient algorithm to solve, so if you face one of these problems in practice, you can quickly recognize that and come up with an algorithm that approximates the answer. - 7 this one is useful (although I hate it) because you learn what the computer is and how does it function. You'll learn what makes up the computer hardware, how they're connected together, and what is the job of each component. You'll also probably learn some assembly programming in this class. Knowledge of this material will help you write better code. - 8 this one is the advanced version of data structures & algorithms. You'll study more data structures and advanced algorithm design techniques. It's extremely useful and top companies like Google, Microsoft, Dropbox, etc ask a lot of algorithmic questions during their interviews.

Mostafa Hany Gomaa at Quora Visit the source

Was this solution helpful to you?

Other answers

To me, besides those computer science fundamental courses, some real life project oriented courses help a lot as well. For example, Startup Engineering course on http://coursera.org, provided by Stanford University is a good one. SaaS software engineering on http://coursera.org provided by UC Berkeley.

Liangjun Jiang

For me it was introduction to algorithms. It gives a real solid footing to programming. And of course, introduction to programming class will help as well :)

Alex Genadinik

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.