Skip to content

Professional Programming

This part is based on Teach Yourself Computer Science. For absolute beginners or students from other majors (economics, biology, communication, etc), some supplementary materials and alternatives are added.

1. The Missing Semester of Your CS Education

To be really good at coding, you must be an advanced user of your computer. The The Missing Semester of Your CS Education is an introduction course in MIT. It has the text and videos of learning the basic tools for programming. The first 6 lessons are useful. You won't regret if you learn it.

2. A basic introduction to Programming

The recommended course is Berkeley CS 61A.

Two alternative easy course for beginner:

A classic, really good one if you have a little bit programming experience or is a good learner. You will learn the essential programming concepts when you complete this course.

3. Computer Systems

You should learn the computer architecture from a programmer's point of view. It might be hard for non-CS or non-EE students. You don't need to understand everything and you can learn it again after you have some programming experience. You may want to learn a little bit C programming before this course.

The following two should be fine for beginner.

Pick the following one if you like challenges:

4. Algorithm and Data Structure

Personally I like Coursera Algorithms Specialization taught by Stanford Professor Tim Roughgarden. His four algorithm textbooks are easy to digest than other more famous algorithm books.

Alternatively, Analysis of Algorithms Lectures

5 Operating Systems

6 Computer Network

Computer Networking: A Top-Down Approach is a good and easy to read book. The site has links to online lectures/labs.

7 Database

There are good comments about CMU15-445 Database Systems. They put lectures in Youtube.

8 Distributed Systems

The book Designing Data-Intensive Applications is highly recommended. The author has Youtube videos is strongly recommended.

9 Language and Compilers

Crafting Interpreters is a good introduction to compilers and is easy to read. It should be enough for most programmers.

10 Theory of Computation

This is optional. Those who know theories can think at different level of abstraction. THEORY OF COMPUTATION