I'm a self-taught programmer and have been coding for 8 years. Due to this experience, I'm already very familiar with the principles of programming (such as if-statements, classes, polymorphism, etc.).

However, I never learned "computer science," only programming. What are some good resources for someone in my position to self-study computer science - that is, resources which move at a quick pace and assume basic programming knowledge?

  • $\begingroup$ collected std/popular cs refs $\endgroup$ – vzn Jun 28 '14 at 15:39
  • $\begingroup$ Then you have come to the right place. $\endgroup$ – SDsolar May 7 '18 at 1:38
  • $\begingroup$ Then you have come to the right place. $\endgroup$ – SDsolar May 7 '18 at 1:38

Computer Science is a multifaceted discipline - and Algorithms and Data Structures is important part of it. You can try free video-courses, like Algorithms, Part 1, from Princeton University - it's running right now.

Another remarkable free video-course Algorithms: Design and Analysis, Part 1, from Stanford has finished recently - hopefully it will be repeated in the future. Part 2 of this course will start this Monday.

  • $\begingroup$ OK. I did some searching on the internet, and it looks like a general algorithms class is exactly what I'm looking for. $\endgroup$ – Shivam Sarodia Jun 28 '14 at 3:56

Well, this is my first answer over here and, also, I am less experienced than you. So,consider it an answer of novice, which may be irrelevant for you or others. But, I'll try to preserve the worth of question with my answer!

Well, first of all let's discuss(only outline) the domain of computer science,or the life-cycle of one involved in learning CS. Probably, I might be missing some of them. Also, there may be ambiguity about their positioning. But,it goes as :-

  1. Computer Fundamentals(General Working of computers) and introduction to computers
  2. Programming language and its use to solve real life problems using the help of computers
  3. Variations of programming language(functional,object-oriented,procedural) and its different principles
  4. Data Structures and Algorithms // one of the most important part and the backbone of CS
  5. Foundations of Computer Systems---Discrete Mathematics,some portion of Digital Electronics
  6. Software Engineering // again one of the most important part and the backbone of CS
  7. Operating System --- my favourite subject in CS branch, and also the most-important, core branch of CS,the whole of CS runs on this, at least.You need a machine to execute things, based even on modelling
  8. Computer Architecture --- it's again one of the important subjects to know the basic functioning of working of computers
  9. Databases are worth every acknowledgement! Excellent discovery.
  10. Computer Networks --- a very beautiful section of CS which is related to networks(real-life connections)
  11. Theory of Computation, Automata, Compilers --- my 2nd favourite subject, all in one section describing state changes and language formation and operation.
  12. Data Mining & Machine Learning --- The most progressive field of Computer Science nowadays and in fact really one of the most informative
  13. Artificial Intelligence & Neural Networks & Fuzzy Logics --- not to say anything,the best real-life simulation

Now, returning to the question. I think you must give every section a chance to go deep and try to find your interested field. It takes a person a few years to decide which field is best fit for him/her.

You should not directly jump to any field which involves only programming section!!! Programming Languages are not "that" worth what they are framed as, the most important part is the basic modelling, functioning and generation of ideas and new theories which enhances CS field. So, as per me you should give each field a try at once, say for a week and see of you're really getting attracted to them the most! This will first give you the subject to carry away with!

Now,coming to the online resources.There are plenty to look at.You'll find nowadays lots of tutorials,videos and lectures being available on the internet.But,the most sought out ones with brilliant showpiece are :-

  1. www.coursera.org
  2. www.nptel.ac.in
  3. www.khanacademy.org

and so on.

Try to use these more frequent for learning CS basics.Apart from these,you always have search engines a click away to help you provide the topic you are facing difficulty with.


As a programmer, you supposed to know following things as per the basic Computer Science:

  1. Basic Programming Principles
  2. Data structures
  3. Software Engineering Methodology
  4. Different Programming Techniques (it depends on Algorithm)
  5. Basic Knowledge of Testing the code

You can get these courses through MOOC.

Coursera is providing different courses with good resourses, if you want you can sign-up there.

  • $\begingroup$ You seem to have the question backwards. It's not asking what aspects of computer science are relevant to programmers; it's asking where a programmer can find resources to learn about computer science. $\endgroup$ – David Richerby Aug 31 '14 at 15:15

Other courses that I studied (and I think are important):

  1. Design patterns (like Singleton, Facade, Factory .etc)
  2. Discrete Structures

Asymptotic complexity is a very important topic in CS as well. I would recommend "Introduction to Algorithms" as a good reference book for Data structure and Algorithms.You can then practice at Project Euler. Other than that, MIT has courses MIT Open CourseWare over at YouTube. I find their data structure courses very helpful.

Another thing I can suggest is also going through any University's CS coursebook to get the topics and see which one is of interest, and study them.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.