Finally, it took me more than a week to finish this obscure MIT course. As a course focused on teaching students how to use tools, it is undoubtedly quite amazing in terms of breadth. From shell programming, Linux command line operations, editors (Vim), data processing, Debug/Profiling tools, version control (Git), etc., we cover almost all the tools programmers need to use. In terms of depth, git data model, a very short and succinct introduction to the underlying data structure of Git, from bottom to top, enlightening. And other relatively not so difficult to understand the part, with easy to understand small examples to show, basically do it again, the harvest is very much.

About the shell

Since I’m not in an Internet company, the level of contact with the team may be a little bit worse, but most people use Linux command line /shell to basically look up what they need. In the course of 6.NULL, it will teach the use of functions and common shell programming ideas from the most primitive, and also introduce some useful tools. Some basic questions in QA are also interesting, such as the difference between Source script.sh and. Where are various software packages and tools stored? What is the citation process like? What is /bin or /lib, etc.

About development under Linux system

The purpose of this course is to hope developers to use the command line development under The Linux system (except for the development of Windows applications, etc.), so it mentions a lot of command-line development tools, such as TMUx, ZSH. At the same time, carefully explained how to better use the Vim editor, as before a in this course, can only use “I”, “: wq” user, after learning Vim this class, use course recommended Vim configuration (banning the use of the keyboard and the direction key) habit again after a few days later, the Vim is big love (at first, of course, will be very not used). It’s important to mention metaprogramming in particular. Metaprogramming means programming aprogram, that is, building a system. For people without engineering experience, it is difficult to learn how to build large-scale systems. Even if it is to run a simple C++ project under Linux or write an Android program under Windows, those complicated construction tools/configurations are confusing. My undergraduate design is visual SLAM. I had written a lot of Cmake, but I had no idea why I was writing it, what was underneath it and what was good about it. 6. The NULL metaprogramming section is a very good solution to my confusion, this section also solves the dependency library/package version of the small problem of naming. All in all, these are useful things that are not taught in school, and are assumed to be in your project, which perfectly fits the course title of NULL.

Second course in computer science

Why does the title say this is the second course in computer science? Any entry into the computer, often through a language entry (domestic “computer foundation” is not really entry), no matter what language, Python/C++/Java, after learning grammar, can write a sorting algorithm is entry. At this time, most people tend to start learning system level courses such as operating system/compilation principles or learning Web development/back end/front end development, etc. It seems reasonable, but in fact there is a large gap in the middle, especially for non-CS majors, not too many people will be discouraged at this step. So I strongly recommend that if you are a beginner like me and are intimidated by the complexity of computer science, you take MIT 6.NULL, which is a course that will cut through the fog of computer science and introduce you to the magic spells of modern computer system tools.