What kind of textbooks and lecture videos are excellent for studying computer science without going to university?

There is a shortage of engineers due to the rapid progress of IT, and more and more people are becoming engineers through self-education or programming schools without obtaining a degree in information systems. Recommended fields, books, online lectures, etc. for those people who want to learn computer science are summarized on the site ' teachingyourselfcs.com '.

Teach Yourself Computer Science


◆ Computer architecture
If you can't get a good idea of how your computer actually works, you can't have a stable abstraction. A good book to learn in this area is ' Computer Systems-From a programmer's point of view ', and as the title says 'From a programmer's point of view,' it says that it creates high-speed, efficient, and reliable software. It can be an excellent starting point for anyone who wants to understand computer systems for their purposes.

For those who want a gentler introduction, '

Theory and Implementation of Computer Systems-How to Make a Modern Computer ' is recommended. This book deals with basic logic gates 'NAND' to creating Tetris, so it is called 'Nand2Tetris'. The contents of Chapters 1 to 6 in the first half are in English, but in addition to being published on the website, Coursera courses with movies are also available. However, Nand2Tetris seems to sacrifice the depth of the result that emphasizes simplicity and cohesion, such as pipeline processing and memory hierarchy, which are very important concepts in modern computer architecture, are hardly explained.

◆Distributed system
In today's world, even small applications are commonly run on multiple machines. It is recommended to know '

data-oriented application design-the principle of distributed system design with high reliability, scalability, and maintainability ' to know the trade-off that occurs in such a situation.

If you don't have any problems in English, you can use the book '

Distributed Systems ' for free, and MIT lectures are available on YouTube .

“Teachyourselfcs.com” introduces nine fields in all, but “Computer Systems-From a programmer's point of view” and “Data-oriented application design-reliability, scalability,” introduced in the above two fields. It is especially recommended because 'the principle of designing a distributed system with high maintainability' can be obtained in a very large number. It also serves as a gateway to other fields, so if you don't know what to learn, it's a good idea to focus on these two books.

' Structure and interpretation of computer programs ' is recommended for experienced programmers who have no background in computer science to fill the knowledge gap. The original text of this book was released under the CC BY-SA 4.0 license, and the Japanese translation translated by Eiichi Wada is available for free, as well as the textbooks used by the University of California, Berkeley for English. You can also watch the lecture for free .

◆ Algorithm and data structure
There are hundreds of books that describe algorithms and data structures, but the site recommends the Algorithm Design Manual . The lecture by the author is provided on YouTube, and it seems good for those who want to study in the movie to watch it as well.

◆ Mathematics for computer science
Computer science is a field that has a close relationship with mathematics, so it can be said that it is a field developed from applied mathematics. It is said that there is a deep relationship with the field called 'discrete mathematics', and among them, it is particularly closely related to logic, combination theory, probability theory, set theory, graph theory, and a part of cryptography. It seems that the 'Lars Rovers Lover's Lecture Notes' is the best starting point for learning this field. The file is distributed in

PostScript format.

Discrete Mathematics-Lecture Notes, Yale University, Spring 1999-L. Lovász and K. Vesztergombi

◆ Operating system
Regarding the OS, ' Operating Systems: Three Easy Pieces ', which is released for free, is superior in terms of configuration and readability. There is also a Japanese translation by volunteers.

◆ Networking
Networking is one of the most important areas of computer science, but if you want to learn more about this area, I recommend '

All about Internet technology: Top-down approach to practical networking techniques .' In particular, the appendix ' Wireshark labs ' provided online is said to be good.

◆ Database
The database is a relatively new field that has developed since the 1970s, and many excellent human resources have flowed to companies because ideas are easy to make money, so it seems that there are not very good textbooks. Instead of reading a textbook on the site, we recommend watching the movie '

CS 186 ' from the University of California, Berkeley lecture. After that, it is recommended to read the papers such as ' database system architecture ' published in PDF files.

◆Language and compiler
Programmers learn languages, but in computer science they can learn about them and gain a more general knowledge. In this field, ' Crafting Interpreters ' is a high-quality text that can be used free of charge.

A classic masterpiece is ' Compiler-Principles/Techniques/Tools ', but since this is not a textbook for self-study, it seems good to use edx free lectures together.

According to the site, it's good to study about 100 to 200 hours each in each of the above areas, and then take a closer look at the areas you like.

in Software, Posted by log1d_ts