COSI 131a: Fall 2016
Computer Structures and Organization
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 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 core ideas in operating
systems: resource sharing, virtualization, memory
protection, scheduling, concurrent programming, file systems,
transactions, etc. Such 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.
Many of the ideas and abstractions that we will cover are
relevant not only to OS kernels 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.
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
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 advanced synchronization and file
systems algorithms. The projects will be done individually and in
two-person teams, providing collaborative project experience.
There will be two or 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
As with most technical courses, besides ability and motivation,
it takes time to learn and master the subject. Expect to spend an
additional 15 hours a week outside of class time on the
Lecture slides will be posted on
Please refer to LATTE for assignments, due dates, and submit all work
There will be six problem sets (i.e., written
assignments) and three programming
assignments. Both problem sets and programming assignments will be
announced in class and posted on
online courseware). You will also
to submit your assignments.
Here are the
for how to submit your programming assignments.
Textbook: Operating System Concepts with Java (7th Ed) by
Avi Silberschatz, Peter Galvin, and Greg Gagne. ISBN-10:0-471-76907-X, ISBN-13:978-0-471-76907-1
Suplementary reading: 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.
It is also recommended that you buy or borrow a text on
Java. For example, the classic reference is The Java
Programming Language by Ken Arnold and James Gosling. There
are also numerous online Java references, including:
COSI 12b or 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!).
There will be two or three in-class quizes (see the schedule). There is no final exam.
Grades will be apportioned roughly as follows:
Each student has 2 free late days which can be applied to any of the assignments. This means that all assignments can be late by a cumulative total of 2 days without penalty. You will need to tell us if you have used your late days.
After the 2 days are exhausted, each additional day (or fraction thereoff that an assignment is late will come with a significant grade penalty on that assignment.
|3+||10% + 10% each additional day|
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
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 room is finalized.
Typically, the tutorials run 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.