Missing-Semester-Notes
Lecture Notes: Missing Semester for your CS education
Introduction
Welcome to the course: The Missing Semester of Your CS Education!
When I first learned about this course at the beginning of my freshman year, I had no concept of command lines, development, and other related topics. Additionally, since the course was taught entirely in English, I tried attending a few lectures but eventually gave up, and my absorption rate was also low. During this winter break, after a semester of experience in my freshman year, I installed the WSL subsystem and mastered the most basic Bash knowledge. When I revisited this course, I felt a sudden clarity. Now, the command line has become a tool I frequently use, greatly improving my learning and development efficiency. Therefore, I will organize my Missing Semester notes in this blog, hoping to inspire and help future learners.
Before starting the learning exploration, I strongly recommend you to ensure all these questions and contents below are carefully read, which will help you gain a better learning experience.
Where to find the course?
On YouTube: https://www.youtube.com/@MissingSemester
The course also has its own websites for clear lecture notes!
For domestic users, you can browse Bilibili for reposting of the original course and Chinese subtitle translation.
What’s this course about?
Let’s take a look at how the course instructor evaluates the positioning of this course.
Missing semester Lec1 Beginning- The overall introduction of this course
This class stems from an observation that Anish, Jose, and I have made while attending various classes at MIT. The observation is that, as computer scientists, we all know that computers are great at performing repetitive tasks and automating things. However, we often fail to realize that there are many tools that can make our own development processes better. We can be much more efficient in how we use our computers because we can use the computer as a tool for ourselves, not just for building websites or software. This class is an attempt to address this issue. It is an attempt to show you some of the tools that you can use to great effect in your day-to-day work, in your research, and in your studies. It’s going to be a class where we want to teach you both how to make the most of the tools that you already know and, hopefully, introduce you to some tools that you don’t know yet. We also want to show you how to combine these tools to produce more powerful results than you might think possible with what you know today.
Chinese Translation:
这门课程源于Anish、Jose和我在MIT参加各种课程时的一个观察。我们发现,作为计算机科学家,我们都知道计算机非常擅长执行重复性任务和自动化工作。然而,我们常常没有意识到,有许多工具可以让我们的开发过程变得更好。我们可以更高效地使用计算机,因为我们可以将计算机作为我们自己的工具,而不仅仅是用来构建网站或软件。这门课程旨在解决这个问题。它试图向你展示一些可以在日常工作、研究和学习中高效使用的工具。这门课程的目标是教你如何充分利用你已经知道的工具,同时也希望向你介绍一些你以前不知道的工具,并展示如何将这些工具结合起来,产生比你今天所知道的更强大的结果。
So this lecture is for Tool-using during your CS education. Several Tools can be seen in the subtitle of each courses.
Am I ready to take the course?
However, I am unwilling to announce the fact that: This course is not suitable for Totally-Green-Hand.🙂↕️🙂↕️🙂↕️ Here are two following reasons I have summarized:
- The course progresses very quickly. If you have no prior knowledge of these concepts, there’s a high chance you won’t keep up with the pace! Although you can pause while learning on video platforms, previewing the basic knowledge before taking the course can provide a better learning experience.
- In learning tools, practice is a very important component. This course mainly focuses on lectures and lacks opportunities for hands-on practice.
Thus, I strongly recommend you to do such things before entering the courses:
Make sure you have installed command-line environment before the course begins! (Most important)
- MacOS or Linux is preferred.
- WSL for Windows
While learning the course content, practice hands-on operations simultaneously!
Still updating~
Lec1-2: Shell Tools and Scripting
You can see several Blogs for help:
Lec3: Vim editors
You can just go to Vim tutorial for help.
Lec4: Data Wrangling
You can go to Regular Expression for help.
Lec5: Command Line Environment
I just skip that part…
Maybe I will open-source all my dotfiles one day? Perhaps, but who knows?
For beginners, you can just skip that part.
Lec6: Git (Version Control)
Very important!
But it is too hard to write a satisfying git tutorial.
Lec7: Debugging and Profiling
You can just go to Profiling and Debugging for help.
Lec8: Metaprogramming
You can just go to Meta Programming for help.
Lec9: Security and Cryptography
To be done.
Conclusion
To be do