I am in the CS course. What programming subject should I focus on?

What is most important at this time? I know that later I can gain programming experience. Which of the following should I learn to become a good programmer or analyst after I graduate?

  • data structures
  • Algorithms
  • software development
  • low level aspects
  • OO design patterns and analysis

[change]

Thanks for answers. I would like to include other important topics to serve as a reference for other students:

  • Query Programming Operating Systems

[/ Edit]

Note: I think the first element of the list will learn English

+4
source share
11 answers
All of them. Everything on your list is important.
+17
source

I would personally study the following:

  • One C-like language (C / C / C ++ / C # / Java)
  • One scripting language
  • One functional programming language
    • Especially since we are moving into a multi-core world, this is useful because it allows you to parallelize what another language can do. For example, Erlang operates all telecommunication infrastructures.
    Data structures
    • You will use them everywhere. They are agnostics of a programming language, you will need them throughout your career.
  • Algorithms
    • Most likely, this will be related to the above point. Some data structures have certain algorithms for accessing them.
  • Design Patterns
    • Yes, of course, study the various design patterns, but at the same time know that they are not all in software development.

Everything else on your list is also very important, therefore, by offering the above items, they are no more important than the others that you indicated. These are the things that I am sorry that I did not leave my training, and I am sad to say that I did not offer them as classes, but I had to study them myself along with all my other courses.

+7
source

I think that you are already on the right track, given that you have not indicated any specific languages ​​on your list. I think the number one mistake made by CS students is focusing on a language or paradigm.

Your entire list is very important; the only thing I would like to add is a fairly in-depth study of multithreading. In the future, this will become more and more important: ( Ars-Technica article )

+3
source

It seems appropriate to connect Joel here :-)

http://www.joelonsoftware.com/articles/CollegeAdvice.html

+2
source

All of them are required!

What are you thinking about? I expected you to choose between concentration (for example, game design versus security and cryptography).

You cannot choose between "algorithms, oop, datastructures, software engineering, etc.". This is the BASIS! You must study them all.

+2
source

I would start with data structures and algorithms, there were no competitions. OO design is useful. A bit low, yes. S / W technology may be skipped (normal with a grain of salt).

In addition, here are some ideas:

  • the basics of relational databases (not just "how to use the oracle", but also the actual relational algebra) Operating Systems
  • compilers + translators
  • something in IR (/ genetic algorithms / neural networks)

Yes, I am biased against the β€œhard core” of CS. Busy work, super-heavy processes and other tricks with which you quickly learn in industry, you do not need to spend educational resources on them. :-)

+2
source

We will see..

You will need to understand the complexity and structure of the data and the algorithms so that you can make important choices. Unfortunately, you need to REALLY understand these topics and solve complex problems, since they play a much larger role in the interview than in your real work later. Therefore, these are the most important things to focus on practical considerations.

Software development, design patterns, and analysis are very important (although I am biased). Unfortunately, with the exception of design patterns, you cannot really study these topics without actively practicing a large project. Focus on understanding the concepts of object-oriented programming and the concept of virtual functions / dynamic binding, as they are very important and many people do not understand them properly. Do your best to get a good internship.

+1
source

All of the things you listed are the main components of a decent computer science education, although you really must add the following:

  • OS
  • Network
  • Mathematics (introductory courses for discrete, calculus, algebra, proof, statistics)
  • Database
  • Funds (state machines, regular expressions, Turing machines, etc.)

These two lists together will give you a good understanding of computer science, after which you should choose a few more special topics (those that interest you most).

  • Artificial Intelligence
  • Crypto / Security
  • Image / Signal Processing / Recognition
  • Compilers
  • Graphic arts
  • Game design
  • and etc.

You will find that as soon as you begin to delve into the subject, all these basic courses, including math, will begin to enter the game! For example, I am now studying pattern recognition and had to use and understand material from statistics, AI, calculus, evidence, algebra, algorithms, data structures, OOP, etc.

+1
source

Everything on your list is important, but you also need the right attitude. You need to delve into sufficiently detailed information about how each work that you study and why it was done this way, and not just the purpose of the class. This is what will truly give you an edge as a future specialist.

0
source

All of this is very good, but algorithms are a good place to start. Perhaps you should first study the discrete mathematical course for theory.

-1
source
  • Multithreaded and distributed systems.
  • How to create convenient applications with a nice graphical interface.
-1
source

All Articles