As of the time I am writing this post, I have been studying computer science for a year and a half. I have started to organize and share my own computer science related study materials and routes.
The courses in this schedule are not a substitute for college courses, but they can help you further your studies in computer science, or build an initial understanding of the field.
In some ways, this route can be more of a substitute for college courses outside of class, as a required course to become an industry technician.
Our industry is different from other industries in that you may simply need a laptop, a good learning environment, or you may also need a good body, and you need more than anything else a solid and unrelenting state of mind to explore. What you also need is how you can stand out among the many people at the level of thinking, which is the key.
So with this article, I hope this article can make you have a clearer learning plan and can take less detours, and this article is also a reminiscence of my undergraduate computer learning journey.
1. The Lesson We’re Missing
For me personally, this chapter is almost all from the potholes I have stepped in, and the turns I took when I was lost. From another point of view, this is also to become a computer technology personnel must be a mandatory course or a necessary literacy.
- How To Ask Questions The Smart Way: You don’t have to be technically proficient to get our attention, but you must demonstrate the traits that lead you to become proficient: resourceful, thoughtful, observant, and willing to take the initiative to solve problems.
- Academic Integrity: Honesty is the foundation of good academic work. Whether you are working on a problem set, lab report, project or paper, avoid engaging in plagiarism, unauthorized collaboration, cheating, or facilitating academic dishonesty.
- The Missing Semester of Your CS Education: Classes teach you all about advanced topics within CS, from operating systems to machine learning, but there’s one critical subject that’s rarely covered, and is instead left to students to figure out on their own: proficiency with their tools.
- Crash Course Computer Science(Youtube Link): This is one of the few videos I’ve watched more than twice, and although it’s a documentary on computer science, I guarantee it’s more effective than any general education class in school. carrie Anne is an excellent teacher, and the curriculum is designed to cover almost all areas of computing, from history to applications to the future, covering a wide range of knowledge.
2. Computer Systems
- Course: Intro to Computer Systems: It is known as a course study site for the must-read book 《CSAPP》.
- NJU-projectn: The computer system fundamentals course lab at Nanjing University is very helpful for personal improvement after completion.
- Write Great Code: Volume 1: Understanding the Machine: This book explains the underlying mechanics of how a computer works.
- What Every Programmer Should Know About Memory: A paper by Red Hat, Inc. It explains the structure of memory subsystems in use on modern commodity hardware, illustrating why CPU caches were developed, how they work, and what programs should do to achieve optimal performance by utilizing them.
3. Data Structure
- 《Data Structures and Algorithms》: As a class note, the books are not very extensive, but they are also all very concise and can be used as a table of contents for study.
- MIT’s Course Introduction To Algorithms 3rd Edition: This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
- 《Introduction To Algorithms 3rd Edition》: It can be counted as the bible of algorithm books, which covers very comprehensive knowledge points and is relatively difficult, requiring a lot of time and patience. In contrast, I would recommend reading the following book.
- 《Algorithhms 4th Edition by Robert Sedgewick, Kevin Wayne.pdf》: A classic book on algorithms written in Java language, with moderate difficulty and rich corresponding illustrations, is more suitable for reading.
- CS 61B Data structures: A course about data structures and programming methods about Java.
4. Computer Network
- 《Computer Networking A Top Down Approach 7th》: A classic computer networking book, but the latest version has been updated with more changes.
- UMASS Computer Networking PowerPoint: Of the book 《Computer Networking A Top Down Approach》 teaching resources courseware, very unfortunately, is the eighth edition, currently the appropriate version on the network is only the seventh edition.
- USTC’s Computer Networking Course: The “Computer Networks” mooc is the recorded version of the undergraduate course of the Department of Automation of the University of Science and Technology in autumn 2020. On the basis of the introduction of computer network architecture, top-down, the Internet as an example systematically describes the main services, working principles, common technologies and protocols of each level of the network architecture. Mr. Zheng’s level is very high and the quality of lecture is excellent.
- 《TCP/IP Illustrated, Volume 1 The Protocols》: As a top-down, advanced version of the book, it is more difficult, but I think parts of it can be skimmed.
5. Operating System
- Operating Systems: Three Easy Pieces: One of the best OS textbooks in the world, including the most basic OS content teaching. I highly recommend reading the original English version of this book, because the Chinese translation is really bad.
- NJU’s Operating Systems Course: The companion online course of OSTEP, which was made public by Jiang Yanyan of Nanjing University during the epidemic, is of very high lecture quality and can give a good realistic perspective and a good research direction. Supporting course website jyywiki.
- 《Modern Operating Systems: Principle and Implementation》: The textbook published by Shanghai Jiao Tong University is a joint effort by a team of teachers from Shanghai Jiao Tong University and one of the few quality textbooks in China. Most of the implementations are based on the Arm platform, and the content is very well developed, with a wide coverage of what is taught, as well as the accompanying Lab. I think the quality of this book is going to be due to Modern Operating Systems.
- 《Vbird Linux Basic》 : It can be used as reference material, in fact, the main thing is to really install and practice application in project development, do not memorize commands, use more will naturally remember. The main way to learn is to really install a Linux distribution and then use it.
- 《Linux Inslides》: A book-in-progress about the linux kernel and its insides. It can be done to supplement the above teaching content.
6. Data Base Systems
- 《Database System Concepts 7th Edition》: Database system concept, can be said to be a very complete and systematic database books, although some of the content is a bit old, but still can be used as a modern database learning textbook. Because the sixth edition of the textbook has been very old, here is more recommended to use the seventh edition of the textbook. This book website: Link
- CMU’s Course Database Systems: I think this is the best quality database online course, the teaching materials provided are very well made. However, the more difficult point is the experimental part, which can be learned on demand according to your level.
7. Compilers
- 《compilers principles techniques and tools》: Known as the “Dragon Book” of compilation principles books, it is recommended to patiently watch online classes little by little to break through, and this may be the only book I recommend reading the Chinese version, because the difficulty is too great.
- 《Writing An Interpreter In Go》: Interpreter written in Go language, which can be used as a supplementary reading material.