Nachos is an instructional operating system for undergraduate OS classes. It is a challenging system to learn, but is also as rewarding as it is challenging.
Nachos may seem complex (it is) and confusing at first, but after using the system for a while you will become familiar and comfortable with it. There are also some advantages with using such a well-established project. First, it has been thoroughly debugged and is therefore relatively stable. Second, there is extensive documentation describing the Nachos system. Both of these aspects should make it easier for you to learn and use Nachos.
During the quarter we will be starting with a pre-project and then doing three substantial projects:
The project grade is evenly split among the projects (each is 33% of the project grade), and project 0 is the remaining 1%.
You will work on projects 1–3 in groups of 1–3 students. Project 0 is a short, individual project, and we will overlap forming groups with project 0.
There are a number of sources for using and learning the Nachos system, starting with the source code itself.
The platform we will officially support is Linux/x86 on the ieng6 ETS server cluster and the machines in the CSE basement labs. We have customized the Nachos distribution for our course, so you should use the version of Nachos that we make available (i.e., do not download from other sites on the Web). If you would like to work with Nachos on another system, see the discussion of cross-compilation for projects 2 and 3.
Starting with project 1, we will be using Git for version control in CSE 120. The Git site has an excellent reference manual online. We will provide more details when we start project 1.
Your project code will be automatically graded. There are two reasons for this:
Of course, there is a tradeoff. Everything that will be tested needs to have a standard interface that the grader can use, leaving slightly less room for you to be creative. Your code must strictly follow these interfaces (the documented *Interface classes).
Since your submissions will be processed by a program, there are some very important things you must do, as well as things you must not do. For all of the projects in this course:
During each project, we will provide a program that you can use to submit your code to the autograding system. As a result, you will be able to make sure that your code compiles and runs with the autograder well before you submit it.
The Nachos projects are aggressive, complex, and time-consuming. Nachos may seem overwhelming at first, but the projects are not impossible. If your group is spending many hours stuck on a single problem, then you should seek assistance. Be sure and read the various support documents. Come to office hours. Talk to the TAs and tutors in the lab. And use Piazza the class discussion board to share problems and tips.
Cheating is not an acceptable method for completing your projects. The consequences of cheating will correspond to the severity, but most often lead to failure of the course. The academic honesty guidelines outlined by Charles Elkan for CSE 130 apply to this course. Examples of cheating include copying code or answers from someone else, copying code or answers from online sources, or using generative AI or LLMs.
I urge you to resist any temptation to cheat, no matter how desperate the situation may seem. If you are in circumstances that you feel compel you to cheat, come to me first before you do so.