COSI 131a: Fall 2024
Fundamentals of Computer Systems
Course Objectives and Outcomes
This course is an introduction to computer systems organization
and operating systems. The objectives of the course are for you
to learn three things:
-
The first thing is how computer systems, operating systems and, more generally,
computers work. The goal is to demystify the interactions
between the software you have written in other courses and
hardware. A student graduating with a CS degree should be able
to describe the chain of computer system events that occurs from
when a user hits the reboot button to when user's program runs,
reading input and displaying results, from the register level to
operating system level to the application level. This is
philosophically important, but it is also of practical interest
to developers who need to figure out how to make a system do
what they want it to do.
-
The second thing is for you to learn the fundamental concepts of virtualization,
concurrency and persistence. These ideas are often best explained as
abstractions that some software layer (usually the operating
system) provides above imperfect hardware to make that hardware
usable by programmers and users. The intent is for you to
understand such abstractions well enough to be able to
synthesize new abstractions when faced with new problems.
-
The ideas and abstractions that we will cover are
relevant not only to operating systems but also to many large-scale
systems. Thus, a third goal of this course is to enhance your
ability to understand, design, and implement such systems.
Method:
-
Lectures and reading assignments from the textbook will cover the
concepts and techniques.
-
Homework problem sets will test and improve your knowledge of the
material. The intent is for you to use these as mini exams to
self-assess your knowledge of the course material and evaluate your
performance.
-
Perhaps the most valuable part of this class will be the
programming assignments. They will require you to apply in
practice the concepts covered in the lectures and will require
you to defend your design decisions. You will gain experience
with implementing in Java inter-process communication and synchronization algorithms. You will also learn how to translate your Java solutions into C
language. The projects will be done individually.
-
There will be three in-class quizes testing the mastery of
the material covered in the course. Unless stated otherwise,
the quizes will be closed book and will
cover material from lectures, readings, problem sets, and the
projects.
-
As with most technical courses, besides ability and motivation,
it takes time to learn and master the subject. Expect to spend an
additional 9 hours a week outside of class time on the
average.
Topics Covered
Introduction: Layers in Computer system organization, Modularity, Protection. Machine
organization: Hardware Abstraction Layer, CPU, Memory, Devices, Interconnect.
Assembly Language, Compiler, C Language. CPU abstractions: Processes, Address spaces,
Threads. Mechanisms and Policies. I/O Concurrency. Performance metrics. Scheduling Policies.
Concurrency and Synchronization: Race conditions, Critical Section, Mutual
Exclusion, Locks, Monitor synchronization. Multicore synchronization,
Contention and performance. Deadlock. Memory management: Logical and Physical
addressing, Address translation, TLB, Demand paged virtual
memory, Page Replacement Policies. Persistence: Anatomy of devices,
Performance metrics. File Systems and Disk Management, Naming, Data vs Metadata,
Crash Consistency, Recovery, Atomicity, Logging,
Transactions.
Schedule, Lecture Notes and Assignments
Please see
MOODLE.
Logistics
- Where
- Lectures: Gerstenzang 123
- When
- Tuesday and Thursday 2:20-3:40pm
- Where
- Announced Recitations: Gerstenzang 123
- When
- Wednesday 5:40-7:40pm
Professor
Prof. Liuba Shrira
- Office
- Volen 258
- Email
-
liuba@cs.brandeis.edu
- Office Hours
- Thursday 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
MOODLE (Brandeis'
online courseware). You will also
use MOODLE
to submit your assignments.
You can find instructions on how to pack and submit your programming
assignments on MOODLE.
Readings
-
Textbook: Operating System Concepts with Java (10th Ed) by
Avi Silberschatz, Peter Galvin, and Greg Gagne.
-
Texbook: Operating Systems: Principles and Practice (Second Edition) By Thomas Anderson and Michael Dahlin. ISBN 978-0-9856735-2-9.
-
Additional Readings will be assigned periodically and either
distributed in class or linked on this web page.
-
We will also post on MOODLE the links to recommended on-line references on Java and C.
Prerequisites
COSI 12b and 21a. You should have familiarity with Linux and
Java. The programming assignments will be written in Java and C and must
run on Linux.
Evaluation
Exams
There will be three (alternatively, two) in-class quizes. There is no final exam.
Grading
Grades will be apportioned roughly as follows:
Category | Weight (%) |
Problem Sets | 10 |
Programming Assignments | 45 |
Quiz 1 | 15 |
Quiz 2 | 15 |
Quiz 3 | 15 |
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 Late | Penalty |
1 | 5% |
1 | 10% |
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 MOODLE 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.