I'm an undergraduate student majored in Computer Science in Peking University. Tired of the boring courses, I began self-learning totally after my fresh year. This repository contains all the resources I used to self-learning. The links below will take you either to another repository which contains my solution for homework and course projects or to the course website where you can get full guidance.
If you feel quite painful to take the courses in unversity, trust me, there is high possibility that it's not your duty. Computer-Science is so interesting and everyone should enjoy it if you have a good teacher to teach you a good course.
All the courses in this repository are developed in MIT, UC Berkeleys, Princeton, Harvard ...... , and I guarantee you will have a completely different experience to take these courses !
Let's self-learning together and get better together !
I'm a fan in math, so I take many math courses which CS students are not obligated to take, feel free to take the ones you like !
Think you have already been expert in these three courses ? Trust me, spend some time to read the course notes, it will deepen your understanding !
This course is designed for freshman in MIT, I strongly recommend you take it to understand some basic concepts in information theory.
-
MIT6.431: Probabilistic Systems Analysis and Applied Probability
-
I took these three courses about probility theory, the UCB CS126 have some really interesting labs. I suggest you take the first two to enhance your theoretical basis then take the last one just for fun !
-
MIT18.152: Partial differential equations
MIT18.03 focuses on constant differential equations. To solve more interesting systems, we need to learn partial differential equations, but you may need some basic knowledge about complex functions, so read the notes of MIT18.04 first !
You may feel tired to learn purely math, Don't forget that we are majored in computer science, we can use computer to calculate for us !
Don't worry, many MIT maths courses use Julia language to help you understand maths concepts and deal with the maths problems in real life !
In this course, you will master julia and do some basic but interesting labs, e.g. image processing, ray tracing, climate simulation and so on !
After that, there are so many courses you can take to use julia to learn math and programming together !
I personally find this course a little easy, so I also take the numerical analysis course for graduate students.
I haven't finished all of them, but I highly recommend the last two courses !
There are many programming courses to freshman, I find all of them interesting !
This course will teach the stuffs which a mature programmer use every day, but you may find there are no official course will teach you. Personally I start to use vim and git after taking this course.
Have you heard about SICP? but that book use the language "Scheme" which is not so popular today. This course use Python to teach you the same idea! Isn't that cool ? Trust me, after this course, you will be expert in python!
CS50 is the most popular courses in Havard University, the first course you will learn C and SQL, the second course you will use python to learn some basic concepts about AI !
Now you may have quite more experience in programming, but the art of programming is not programming itself, but to use it to solve problems !
In this course you will learn Java and use it to implement many data structures and algorithms, I highly recommend you take the Spring 2018 version which you can use the Gradescope to self-grade your code, see the course website for more details !
These two coursera courses are so great ! Those projects are very interesting and you can sharpen your Java programming in these two courses !
In this course you will learn more advanced algorithms like dynamic programming, Network Flow and tackle some NP problems.
As a CS student, it does not harm to learn some EE lessons to deepen your understandings on the hardware. I find these basic EE lessons will help you learn more advanced CS courses about computer architecture.
These two lessons are the introduction courses for freshman in UC Berkeley majored in EE. You can learn the basic ideas about circuits and some data analysis methods. You can also make your hands dirty in its labs.
Signal and systems is a very important course which will change your views of the world ! MIT 6.003 course is a little bit hard but it provides all the lecture videos and homework with solutions. I highly recommend you watch the videos of 6.003 and read the notes of EE120, personally I think the notes about Fourier transform are quite clear and great. Also, EE120 has some very interesting labs where you can use python to process real signals and solve practical problems.
This course got 5.0 score on coursera ! In this course, you will use logic gates to implement a computer and create a new language called Jack and write the compiler and virtual machine to run the Jack code on the computer you made! It's so cool !!
All the labs and projects and fantastic. In this course, you will learn C programming language and RISC-V assembly language, understand how the computer run your code, write a MNIST classification neural network in RISC-V, build your own CPU to run RISC-V, and finally, you can write a naive, but quite powerful numpy in C to accelerate the matrix manipulation. The best architecture course I've ever taken !
- CMU CS15213: CASPP
This course is so well-known but some of its labs are hard, I take this course at school, but you can search for many online resources to complete this course.
There are so many good resources on the Internet you can use to learn AI, machine learning and deep learning, below are just some courses which I prefer.
I recommend this 2018 version which you can use the gradescope. This course will teach you the basic ideas in AI, such as search, CSP, MDP, RL, BNs, NN, logistic regression and so on.
In this course you will learn the basic neural network such as CNN, RNN, GAN, VAE, and learn to use tensorflow in the labs.
This course is taught by Andrew Ng (吴恩达). This couse is maths heavy. If you feel painful, you can take the coursera Machine Learning course which is also taught by Andrew. I finished the coursera course's labs too, they are quite interesting !
This course is lab-driven, you will implement many features of a real operating system based on xv6 (a toy operating system which is designed for teaching). After finishing 11 labs, I'm sure you will have a deep understanding of the operating system.
I'm focusing on the course during my winter holiday. Wonderful labs !!
In the fall 2020, the authors of this wonderful book make online videos which you can use to supplement your learning. Also, the standford course has a great lab which you will implement a TCP stack.
I heard of this great course, but I don't have time to start learning it.
Wonderful course! Bufferoverflow, cryptography, web security, network security ... ...