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:
- Harvard CS50's Introduction to Computer Science
- MIT Introduction to Computer Science and Programming Using Python. Edx online course or MIT open courseware 6.0001.
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.
- C Programming For Beginners. You often find good deal/coupons for Udemy course with big discount -- don't pay the full price.
- Easy one: Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course)
Pick the following one if you like challenges:
- A comprehensive one: CMU Introduction to Computer Systems.
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¶
- Three pieces: Operating Systems: Three Easy Pieces. It has a free ebook. Free Youtube lecture videos.
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