CSE 306 Course Information (Fall 2024)

Course Objectives and Description

Official Description

Students are introduced to the structure of modern operating systems. Topics include virtual memory, resource allocation strategies, concurrency, and protection. The design and implementation of a simple operating system are performed. This course focuses on teaching the skills required to design and build modules of an operating system kernel. It covers key algorithms and architectures. A companion course, CSE 320, teaches complementary skills from the application programmer's point of view.

Discussion

The purpose of the course is to familiarize students with basic concepts and techniques found in modern computer operating systems. This will be done through readings from the textbook, which discuss various operating system concepts, through lectures intended to amplify and augment the textbook material, and through homework assignments, which will consist primarily of programming assignments in which you will implement portions of an actual operating system. The programming assignments will be performed using the ANSI C programming language, and will revolve around a (locally customized) version of the "xv6" operating system from MIT (https://pdos.csail.mit.edu/6.828/2012/xv6.html).

Official Course Objectives

The following are the official course objectives agreed upon by the faculty for this course.

Minimum Technical Requirements

For completing the homework assignments, a computer capable of running the QEMU emulation software is required. We will specifically be using the qemu-system-i386 system emulator provided by QEMU. This is a full system emulator -- hardware virtualization features are not required. The resource requirements are not heavy, but these days you typically want to have a computer with 8GB or more of RAM and you should have 10-20GB of free disk space. The QEMU emulator will run on any relatively recent Intel/AMD-based Linux, macOS or Windows computer. It would also be helpful (though not an absolute requirement) to be able to run Bochs, which is another emulator. Bochs will run on Intel/AMD-based Linux and Windows systems. It will probably not run on an Apple-Silicon-based Mac. For a somewhat more realistic experience, I have also found VirtualBox useful for testing, though this requires a 64-bit Intel/AMD-based host system with hardware virtualization features enabled.

Staff

Professor (and author of syllabus)
Eugene W. Stark

Teaching Assistants:
Amirhossein Najafizadeh

Divyaank Tiwari

Note: TA office hours will be held in Old CS 2126.

Prerequisite

You must be an official CSE or ECE major and have achieved a grade of C or higher in one of CSE 320 or ESE 380 to take this course.

Class Time/Place

Tuesday and Thursday, 8:00AM-9:20AM, in Frey 105.

Examinations

There will be just one exam, held during Finals Week at the officially scheduled time: Thursday, December 19, 8:00AM - 10:30AM. The exam will be given in-person, at the officially scheduled location, which will be published later by the Registrar. You must take the final exam at the scheduled time -- no make up exams will be given.

Textbook

The course will center on the programming project. The textbook will serve as a source of background material on operating systems, which will be helpful in understanding how to implement the project. Though I will not lecture "out of the book", I will assume that everyone will read the sections of the text that are related to the material covered in the course. Material from the text will be fair game for the final exam. See the Schedule of Topics for the correspondence between the lecture and textbook material.

Recommended Text

Other References

I have used the following books (in their numerous editions) as the course text in the past.

The following textbook has more detailed descriptions of the internals of the Unix operating system. I base some of my lectures on materials from this book. You may also find that the more detailed, concrete descriptions will give you some ideas about how you might organize your own code for the homework assignments.

Handouts

This semester, all course handouts, including homework assignments, will be available on the Web for you to download and print, if desired. No paper copies will be handed out. Start from my home page at the following URL:

http://www.cs.stonybrook.edu/~stark/
and follow the link to reach the CSE306 home page. I will try to announce in class when new homeworks and handouts are available, but ultimately it will be your responsibility to check the course WWW pages regularly to find out if there is anything new.

Homework

There will be homework assigned regularly, and each assignment will be due roughly two weeks after it is issued. The homework assignments will be very challenging and likely very time-consuming. They will consist of programming exercises in which you will modify and implement various components of the xv6 operating system. I feel it is very important that you do the homework in this course, and I have adjusted the weighting of the homework portion of the grade (see Grading below) to help motivate you. Students will generally work in pairs on the homework assignments. If you cannot find a partner, let me know and I will try to help match you up with someone. You are not required to work with a partner, but you may, and in most cases I think you will find it helpful to do so. Also, I create the homework assignments with the idea in mind that there will be two people working on them.

You must turn the homeworks in on the day they are due. Students are urged to plan ahead to avoid problems due to congestion or failure of computer facilities at the last minute. If your program is incomplete or is not working by the due date, turn in whatever you have. Any homeworks that are submitted after the due date might or might not be graded, at the convenience of the course staff. Late homeworks that are not graded will be held until the end of the semester, in which case I will have a look at them to decide whether you will be receiving a fair final grade. Generally speaking, if your homework assignment is not graded due to late submission, at my discretion you will receive either a zero for that assignment or you will receive a score equal to the average grade you received on all your homeworks that were graded. If some sort of emergency prevents you from submitting your homework on time, supplying me with suitable documentation might influence the choice I make, but please do not ask me to tell you that it is "OK" to submit your homework late. It is never "OK" to submit your homework late, but you will benefit more from submitting a late homework than if you submit nothing at all.

Programming assignments will be handed in electronically, using a method detailed here. We (the TA's and I) will be able to spend only a very limited time grading each assignment, and will not be able to do much in the way of "decoding" your submissions. It is your responsibility to make sure that the information you hand in electronically demonstrates very clearly that you did the work that was assigned.

Grading

The final grade will be determined as follows: The raw scores obtained by a student on each assignment and exam will be standardized for that particular assignment or exam, either by converting them to percentile scores, or else by applying a linear transformation to map the scores to a standard [0, 100] scale. A weighted sum of the resulting standardized scores will then be formed (with weights as shown below) to obtain a composite score for each student.

Finally, the composite scores will be ranked, and I will apply a subjective method of my choice to determine the cutoffs for each grade category. Absolute performance standards, the distribution of composite scores, and information derived from late homeworks are factors likely to contribute to this decision.

Pass/No Credit

The Pass/No Credit (P/NC) option is not available for this course.

This policy applies to all CSE/ISE undergraduate courses used to satisfy the graduation requirements for the major.

Students in CSE 587

In accordance with the policies detailed in the CS Department Graduate Handbook, under certain conditions students admitted to the M.S. program may be permitted to register for this course under the CSE 587 designation. The following special conditions apply to such students:

  1. Students registered for CSE 587 must complete the programming assignments individually -- they are not permitted to work with a partner as are students registered for CSE 306.

  2. For the purpose of assigning final course grades, students in CSE 587 will be regarded as a completely separate group from those registered for CSE 306. Thus the distribution of letter grades assigned to students in CSE 587 will have no impact on the distribution of letter grades assigned to students in CSE 306, and vice versa.

Academic Integrity

Official Statement

The following statement about academic dishonesty, is required to be included in syllabi for all undergraduate courses:

"Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology & Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at the academic judiciary website."

Be advised that any evidence of academic dishonesty will be treated with utmost seriousness. Those involved will be prosecuted to the fullest extent permitted by the University and College policies.

Professor's Addendum

Read This! Students may work in pairs (i.e. everyone may have a partner) on the homework, and each pair of partners will produce a single submission for each of the assignments. You may discuss the programming assignments with anyone you like, however each pair of students' coding must be their own work, and only their own work. Any evidence that source code has been copied, shared, or transmitted in any way between non-partners (this includes using source code downloaded from the Internet or written by others in previous semesters!) will be regarded as evidence of academic dishonesty. The College of Engineering and Applied Sciences regards academic dishonesty as a very serious matter, and provides for substantial penalties in such cases, such as receiving an 'F' grade, or expulsion from the University. For more information, obtain a copy of the CEAS guidelines on academic dishonesty from the CEAS office.

All students taking this course are required to complete this form in which you acknowledge specific activities that are and are not permitted in this course. No grades will be issued for anyone who has not completed this form.

Student Accessibility Support Center Statement

If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

https://www.stonybrook.edu/commcms/studentaffairs/sasc/

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and the Student Accessibility Support Center. For procedures and information go to this website and search Fire Safety and Evacuation and Disabilities.

Critical Incident Management

"Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook."