COSI 131a: Spring 2024
Operating Systems

Course Objectives and Outcomes

Abstraction

Abstraction http://xkcd.com/676

This course is an introduction to computer systems organization and operating systems. The objectives of the course are for you to learn three things:

Method:

Topics Covered

Introduction: OS organization, Modularity, Protection. Machine organization: CPU, Memory, Devices, Interconnect. Hardware abstraction layer, Assembly Language. CPU abstractions: Processes, Address spaces, Threads. I/O Concurrency. Performance metrics. Scheduling Policies. Concurrency and Synchronization: Race conditions, Critical Section, Mutual Exclusion, Locks, Monitor synchronization. Multicore synchronization performance. Deadlock. Memory management: Logical and Physical addressing, Address translation, TLB, Virtual Memory, Demand paged virtual memory, Page Replacement Policies. Persistence: Anatomy of devices, Performance metrics. File Systems and Disk Management, Naming, Data vs Metadata, Crash Consistency and Recovery, Atomicity, Careful Ordering, COW, Journaling, Transactions.

Schedule, Lecture Notes and Assignments

Please see LATTE.

Logistics

Where
Lectures: Gerstenzang 121
When
Tuesday and Thursday 2:20-3:40pm
Where
Announced Recitations: Gerstenzang 121
When
Wednesday 5:40-7:40pm

Professor

Prof. Liuba Shrira

Office
Volen 258
Email
liuba@cs.brandeis.edu
Office Hours
Tuesday 4:00-5:00pm or by appointment

Course Requirements

Assignments

There will be four problem sets (i.e., written assignments) and three programming assignments. Both problem sets and programming assignments will be announced in class and posted on LATTE (Brandeis' online courseware). You will also use LATTE to submit your assignments.

You can find instructions on how to pack and submit your programming assignments on LATTE.

Readings

Prerequisites

COSI 12b and 21a. You should have familiarity with Linux and Java. All programming assignments will be written in Java and must run on a Linux box (do not rely on the portability of Java!).

Evaluation

Exams

There will be three (alternatively, two) in-class quizes. There is no final exam.

Grading

Grades will be apportioned roughly as follows:

CategoryWeight (%)
Problem Sets10
Programming Assignments45
Quiz 115
Quiz 215
Quiz 315

Late Policy

Each student has 2 free late days which can be applied to any of the assignments except when explicitely stated otherwise. The 2 days can be split between 2 assignments. You will need to tell us in advance if you plan to use your late days.

After the 2 late days are exhausted, each additional day that an assignment is late will come with a significant grade penalty on that assignment.
Days LatePenalty
15%
110%
3+10% + 10% each additional day
7+No credit

A "day" is defined as the 24-hour period following the time that an assignment is due. Weekends do not count towards the number of days late.

For example, once you have exausted your 2 free late days, and an assignment is due on a Tuesday at 11:55pm, and you turn it in the following Monday before 11:55pm, it will be 4 days late (Wednesday + Thursday + Friday + Monday = 4), so the late penalty will be to subtract 35% of the possible score from your score.

Tutorials

There will be an introductory Tutorial/Review for each project. The tutorials are not mandatory but highly recommended. The date and time of the tutorial will be announced in advance in the the lecture and also posted on LATTE close to the tutorial date once the details are finalized. Typically, the tutorials run either in Recitation or in the evening 7-9 pm and are recorded as a back up for students who have a conflict and can not attend.

Students with Disabilities

If you are a student with a documented disability on record at Brandeis University and wish to have a reasonable accommodation made for you in this class, please see Prof. Shrira immediately.