Turn: How the operating system course is changing my

Source: Internet
Author: User

How the operating system course is changing my

There are many courses at Princeton that have changed me, just like cos 318 (operating system course). It's very challenging and time consuming, but when I'm done, I'm glad I took the course.

I hesitated when I chose this course, because everyone around me said:

    • Operating system courses sounds very difficult.
    • Operating system courses are designed for people who like the bottom of the computer.
    • Operating system courses are a waste of time, and you seldom use this knowledge

This course is undoubtedly very difficult, but you may as well put aside the prejudice you have heard before. Not learning it will not ruin your career as a software engineer, but if you have really learned it, you will be inspired in many ways. I really hated system-level programming before I chose the OS course, and I was afraid to take this course. But now, I think it's one of the most correct decisions I've ever made. Here is what I think this course brings to me as a student, as a software engineer and as a problem-solving person:

My experience and inspiration are based on the COS 318 Course in the fall of Princeton, but this applies to other undergraduate operating system courses as well.

1. Operating system courses have made me more adept at debugging code errors ( Debug

There is no doubt that when writing an operating system, we need very, very much debugging. If you feel that your debugging in algorithmic class is hard enough, you can imagine how crazy it would be if two debugs would produce a completely different result.

When your operating system becomes unusually complex, you will have to look for a handy debug tool and a scientificallysound debug method.

Before taking this course, I feel that debugging is a matter of doing it at hand, and it is not a regular part of writing a program at all. The way I used to debug it was to change all the things I thought could go wrong, which is a rubber and boring process, which I often call "rubber chicken Commissioning" (chicken debugging). After the operating system course is over, debugging from an art into a science. I began to realize that there was a science-time-saving approach that could quickly pinpoint errors (bugs) and decide what fixes to take.

This kind of debugging method is also useful in other courses or experiences. For example, when I was working as an intern on Facebook , I was very receptive to the Code engineering philosophy of "pro-power". If there are some parts that are in addition to the problem, start tagging the logs immediately and then keep track of them until the results of a local record are different from the results you expect (this is where the error occurs). This way of thinking only gives you that high-intensity programming course, similar to the operating system course.

2. Operating system courses make my code more efficient

The operating system course suddenly made me realize the performance of the code. If this program runs very slowly, I'll stop and think: What is the key factor that restricts performance? CPU? Memory? Hard disk I/o? Understanding these basics makes me faster and more concise when programming at a high level.

It is generally thought that operating system courses are only useful if they are programmed at the bottom. But that's not the case, and only people with C and assembler who have written operating system code will be able to manage the high-level language better.

3. Operating system courses make me a better partner

Our operating system courses have a number of collaborative projects, two students in one group. I am very fortunate to be working with my two best friends in a collaborative project. This difficult experience together makes us a better friend and makes the whole class more connected.

As a result of these collaborative projects, we have become more adept at cooperation. Team work is easy to get into a pattern where one person writes code and the other sits next to the code. In the operating system course, our approach is more efficient: two people are responsible for the implementation of different modules, and then check each other's code. Teamwork also enhances our version control capabilities, which is a good opportunity to actually apply Git .

4. Operating system courses allow me to solve problems more efficiently

This is the most obvious and most difficult problem for a young programmer to solve: when we encounter problems, we are often trapped in the Feynman algorithm (Feynman algorithm)

    1. Write down the question.
    2. Try to think ... Can't think of to continue to try to ... Think... Efforts... Try to think ...
    3. Write down the answer

Using this method makes the previous part of my operating system miserable. This course has made me have to find a scientific solution to the problem. I finally thought of a generic programming project, and I used this approach to other computer courses as well. It consists of three steps:

Task : What goals do I need to accomplish in this project? I really value task-driven, so when I work, I make a list of tasks that are divided into smaller pieces. Take a baking cake for example:

    • Procurement of production materials
    1. Buy eggs
    2. Buy milk
    3. Buy flour
    • Preparing kitchenware
    1. Washing dishes
    2. Wash the pot
    3. Wash spoon
    4. Preheating the Stove
    5. Apply grease to the pot
    • Perform consolidation
    1. Mix the eggs, milk and flour into batter
    2. Lay the batter on the pan
    3. Put the pan on the stove.

Code Error (Bugs): What are the errors in the code that are known? In this step, I'll keep track of the code errors and some of the things I tried to fix. In the early days of the project, I wasted all my time on the possible solutions for repeated attempts and frequently encountered the same code errors. The code errors and fixes generated by frequent tracing can save me a significant portion of my time in the next project.

question : What's wrong with me? In this part, as long as I have problems, I will write them down roughly. When I look through the documents or ask my classmates for answers, I will record the knowledge I have learned here.

Having such a form gives me a lot of confidence in the projects I have done. Without it, I might still be spending a lot of time in the lab, although there may be progress, but it's definitely not as obvious as I'm progressing now.

Conclusion

Operating system courses are indeed a challenging course, but it is advisable to take this course. It's one of the biggest courses I've made on the road to becoming a software engineer. If you don't even remember what a virtual layer (hypervisor ) is after you've finished your studies, you'll also appreciate the other things that it teaches you.

Some other comments on the operating system course:

    • John regehr:why take an Operating Systems Course?
    • Sean cassidy:sherlock Holmes Debugging

Thank Dan Kang for reviewing this article.

Turn: How the operating system course is changing my

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.