Build a 2-3 year computer science path from scattered university lectures
If you have ever felt overwhelmed by the sheer number of online courses and textbooks, not knowing where to start, this guide helps. It organizes scattered resources into a systematic path, allowing you to learn from basics to advanced topics in order. It goes beyond listing lectures by clearly showing what competencies you need to develop at each stage.
A 2-3 year growth plan from beginner to practitioner
The goal of this guide is for a computer science beginner to build a solid foundation within 2-3 years. It emphasizes the process of building skills by implementing projects of several thousand lines after acquiring mathematical basics and coding abilities. It covers major programming languages such as C, C++, Java, JavaScript, Python, Go, and Rust, and is structured to help you understand the boundary between hardware and software, going beyond algorithms and data structures. It encompasses a wide range of topics including networks, operating systems, compilers, artificial intelligence, machine learning, computer vision, natural language processing, reinforcement learning, cryptography, information theory, game theory, numerical analysis, statistics, distributed systems, databases, graphics, web development, cloud services, and supercomputing. This learning path helps you grow into a versatile programmer with competitiveness in both research and employment.
A learning structure that prevents you from getting lost
The biggest barrier to self-studying computer science is that materials are scattered and difficulty levels are unclear. Simply having many good lectures is not enough; the guide directs you on what order to follow and to what depth to study. It utilizes lectures from top world universities and open-source materials provided online for free, allowing you to receive high-quality education without tuition fees. It is designed to reduce difficulties and mistakes encountered during the learning process, enabling you to build skills efficiently.
Knowledge completed with the community
This guide is not a static document but a living resource that continues to evolve through contributor participation. If you need to supplement a specific chapter or want to recommend a new lecture, you can add content via a pull request. When proposing a new lecture, refer to the template in the repository and register the navigation in the mkdocs.yml file. You can also add to the recommended book list according to the specified format. Additionally, you can use the comment feature at the bottom of the page to communicate with other learners with similar goals or join study groups formed from existing issues. When contributing, you must also provide an English translation, and if you find typos or conceptual errors, you should report them via an issue.
Things to know before starting
This guide is aimed at beginners with almost no basic knowledge of computer science. Therefore, a minimum interest and willingness in mathematical basics and coding are required. Since all resources are provided online for free, you can start anytime as long as you have an internet connection. However, having the time and self-management ability to continue studying consistently over the 2-3 year period is important. In terms of licensing, parts written by project contributors follow the MIT license, while external lectures, books, and video materials mentioned in the book must comply with the licenses of their original authors. Therefore, you must always check the usage conditions of the source when reusing or distributing materials.