Course list for self-taught computer science
TL;DR;
The following is a list of courses and clerks that I have studied and highly recommend others to study:
-
For newbie:
- MIT Missing-semester: For some basic tools such as git, shell, tmux…
- Learn Git Branching: Learn git in game mode
- UCB CS61A: You will get idea of “coding” in this course.
- Algorithms and Data Structre:
-
Software Construction
- MIT 6.031: Coding, coding and coding… But I love it!
-
System
- CMU CSAPP: No need for introduction.
-
Deep Learning
- Dive into Deep Learning: Learn Deep Learning while practing.
- CS231n: A hardcore but excellent computer vision course.
Why this page
During my undergraduate years, I found that the courses from renowned universities around the world played a pivotal role in my personal growth. Some of them deepened my understanding of specific fields, while others enhanced my coding skills. Certain courses challenged and sharpened my thinking abilities, and a few even introduced me to the world of research in areas that genuinely interest me. Moreover, the period during which I worked hard in these courses made me more self-motivated.
In all the courses I have taken, I find some to be truly excellent. Therefore, I highly recommend anyone who is new to Computer Science (whether they are freshmen or anyone interested in gaining some knowledge of Computer Science) to learn the following courses.
If you cannot find a suitable course for yourself in the following list, you can check out csdiy, a website that gathers numerous computer science courses. It was established by a student from Peking University, and I have personally gained a lot from this website as well.
Lastly, I would like to express my respect to the professors who teach these courses and make them open-access. Their efforts have enabled people from all around the world to access equal and high-quality education.
Let’s start!
Course List
For newbie
-
MIT Missing Semester
While working on my first project, I find various tools that I don’t know before such as git, shell. No one taught me how to use them, assuming I was already proficient. This course taught me how to use these tools. I highly recommend taking this course immediately after or even during learning your first programming language.
Website of this course: https://missing.csail.mit.edu/2020/
-
Learn Git Branching
You can learn git like playing a game. And it willn’t take much time. You can learn it before your first project. Version control will greatly benefit you.
Website of this course: https://learngitbranching.js.org
-
UCB CS61A
It’s the first course I learned online, and I really gained lots of idea about “coding” from this course such as how to view code from an abstract level, and how to write pretty code. I love it so much that I recommand it to my friends everytime when they ask me if there are some courses that can learn Python or coding. You can learn it at any time !
Website of this course: https://inst.eecs.berkeley.edu/~cs61a/su20/
Algorithms and Data Structre
-
UCB CS61B & UCB CS170
These two courses cover classic algorithms and data structures. In 61B, you will have more opportunities to practice implementing algorithms, while 170 is more focused on algorithm design.
Software Construction
-
MIT 6.031
We often hear about the importance of writing high-quality code. This course teaches you how to write code that is Safe from bugs, Easy to Understand, Ready for change. Moreover, you will write a large amount of code in this course. For those who love coding and want to improve their coding skills, this course will benefit you greatly. Personally, I have noticed a significant improvement in my coding ability after completing this course.
Website of this course: https://web.mit.edu/6.031/www/sp21/
System
-
CSAPP
After taking this course seriously, your understanding of computer systems will definitely go up a notch. Although it can be challenging and demanding in terms of workload, it is important to avoid relying on others’ code and ideas. Enjoy it!
Website of this course: http://csapp.cs.cmu.edu/
Deep Learning
-
Dive into Deep Learning
This book was recommended to me by my first mentor. It’s a great book for beginners in deep learning, covering topics from Linear Regression to Convolutional Neural Networks (even though they may not be the most recent) to Attention. It provides beginners with a fundamental understanding of What is deep learning, and you will see its implementation.
Website of this book: http://d2l.ai
Course I am learning
Currently, I am learning following courses, welcome to share your idea about them with me!
- MIT 18.06
- Stanford CS144
- MIT Web Development Crash Course