01:198:416/518 Fall 2023 (sec 1,2,G): Operating Systems Home

Overview

Computers are everywhere, ranging from our personal laptops, supercomputers running weather simulations, clusters running data analytics jobs, our phones, wearable health trackers, and life-critical devices embedded inside the human body. Beyond the computers themselves, the primary utility of these machines stems from the software that runs on them. Making software useful requires enabling software to interact with humans and realworld signals, while making it possible for human developers to develop software easily and allowing multiple applications to share the resources on the same machine.

Achieving these goals requires applications to interface effectively with hardware, using the right abstractions that enable developers to quickly build useful domain-specific logic, and enabling users to allow multiple applications (whose behaviors are possibly at odds with each other) to run on the same machine. The operating system is a crucial layer of software that abstracts and manages the resources on a machine to meet these requirements.

This course will provide students with a thorough understanding of the principles and practice of operating systems, by illuminating the abstractions provided by operating systems, along with how they are implemented -- including the mechanisms and policies to virtualize resources such as CPU and memory, dealing with concurrency, and persisting data across failures and reboots. Combining conceptual learning with immersive project work will endow students with a deep understanding of this software layer that is foundational to modern computing.

Lecture and Recitation details

Teaching Assistants

This course has three teaching assistants (TAs). The TAs will each hold separate office hours. Office hours times and locations TBA.

Recitations

Section 1:

Section 2:

Logistics

This course will use Canvas and Piazza.

Lecture materials and a tentative schedule will be available on the syllabus page.

All course announcements will occur on Canvas.

Grading

Your final course will be based on the following components:

This course uses absolute grading thresholds; there is no curve.

Any materials due on a specific day are due at 8 pm Eastern Time on that day.

The schedules of the programming projects, lectures, and exams are available on the syllabus page.

There will be one mid-term and one final exam. You are allowed a single letter-paper cheat sheet for referencing during these exams. The sheet must be handwritten or digitally prepared by you alone. The mid-term will be in class during lecture hour. The final exam will be held at the designated time during the finals period.

In written exam responses, please keep your answers clear and concise. You will receive 25% of the credit for any question which you leave blank or clearly write "I don't know". Vague and rambling answers will receive zero credit. Calculators are allowed.

There are four programming projects. You will work in teams of 2 or alone, with roughly 3 weeks to finish each project. Under extenuating circumstances (discretion of the instructor), you can change teams, but we expect you to stick to the same partner over the semester. The projects will use the C language and the Linux shell. You will use a Linux virtual machine hosted by CS for all the projects. Projects are released and handed on Canvas. A programming solution and a write-up (questions detailed under each project) will be required for each project.

We will provide instructions for packaging and handing in your programming projects. You must follow these instructions exactly. If we cannot run your programs, you will lose a significant portion of points. If you hand in a programming assignment late, you will lose a significant fraction of points.

Weekly online quizzes are due on Tuesday every week. They should ideally take just 15--30 minutes of your time. We will consider the 10 highest scores among 13 quizzes in total. Weekly questions are open book and you may freely consult the materials provided in class (lectures, textbook, etc.). However, you may not search for answers on the Internet. No collaboration is permitted. Quizzes are taken and handed in on Canvas.

In general, late submissions to any component of the course are disallowed unless exempt by medical or religious reasons allowable by the University or the explicit permission of the faculty instructor.

Collaboration, Referencing, and Academic integrity

This course welcomes open discussion and intellectual collaboration. For example, you can get help on Piazza and email from the instructors and your peers.

You are free, in fact, encouraged, to collaborate on projects. However, all code, answers, and any work submitted in this course must be your (or your team's) own. You must fully understand and provide your own solutions, rather than blindly incorporate the solutions from discussion or references. You are also explicitly forbidden from looking at another team's code or solution code from other sources (e.g., from GitHub or CourseHero).

Copying code from the web, including from Stack Overflow and GitHub, is considered cheating. Posting exams and programming project questions or code (problem or solution) on GitHub or Chegg is a violation of Rutgers and CS Academic Integrity Policy.

Each programming project will include a prompt to state who you collaborated with and which resources, possibly on the Internet, that you consulted. You must be as thorough and complete as possible.

Collaborating on written exams and weekly quizzes is a violation of Rutgers integrity policy.

You are required to abide strictly by the Rutgers New Brunswick academic integrity policy and also the Rutgers Computer Science integrity policy. We will use sophisticated software to detect plagiarism. Any violations will be reported to the University's office of student conduct. Ignorance of integrity policies is not excusable if you are found in violation. If you are in doubt, please ask the course staff.

Rutgers University takes academic dishonesty very seriously. By enrolling in this course, you assume responsibility for familiarizing yourself with the Academic Integrity Policy and the possible penalties (including suspension and expulsion) for violating the policy. As per the policy, all suspected violations will be reported to the Office of Student Conduct. Academic dishonesty includes (but is not limited to):

If you are ever in doubt, consult your instructor.

Enabling your success in this course

Accommodations

Should you need accommodations, please register for accommodations and consult the policies and procedures of the Office of Disability Services website.

Statement of student success and support

In the last few years, we have all been going through a lot, individually and together. It is important to acknowledge that events and circumstances outside of the classroom can impact our ability to be present and engaged at any given moment. At Rutgers, we are focused on the whole student. If, at any point, you experience anything impacting your performance or ability to participate in this class, please reach out to me. Please also see the academic, health, and mental wellness resources on the syllabus as well as others searchable at https://success.rutgers.edu/ for further support.

Other support resources:

Questions?

The course has a Piazza page which is also accessible through Canvas. You can also email the course instructor at sn624@cs.rutgers.edu.

Acknowledgments

This course would have been impossible without materials from Prof. Sudarsun Kannan and the course textbook. Also many thanks to Dave Andersen and Nick Feamster for their coursegen software on which these course pages are heavily based. Many images on the slides are from openclipart.org.

Last updated: 2023-12-13 19:36:42 -0500 [validate xhtml]