CS146a: Fundamentals of Computer Systems
Fall 20232
Instructor: Liuba Shrira
Mission and Syllabus //
Assignments and grades //
Textbook and readings //
Class meetings //
Staff //
Office hours //
Hot News //
Current Assignment //
Projects //
Reading Responses //
FAQ //
Different //
Acknowledgments
Mission and Syllabus
Prereqs.: CS131a or equivalent, and working knowledge of either Java or C.
Even if you have no intention to build systems for living after graduation, you
may still need to plan a web site, roll out a financial aplication, or advise management on IT strategy.
So you need to understand systems.
CS146a will teach you the design principles underlying computer software and hardware systems:
techniques for controlling complexity; networks and distributed systems;
atomicity and coordination of parallel activities; recovery and reliability;
privacy of information; impact of computer systems on society.
The emphasis will be on long-lasting ideas rather than low-level mechanics.
The lectures will define the concepts. The case studies
of working systems and outside reading in the current literature will provide comparisons
and contrasts. The hands-on assignments will poke at real systems from outside, the lab will provide experience
with building systems from inside.
Upon completion of this course, the student will be able to understand a computer system and evaluate
its key aspects with respect to performance, reliability and security.
In addition, the students will gain proficiency in reading and analysing profesional literature, and gain experience in
applying in practice some of the design principles learned in class.
Here is a detailed CS146a mission and syllabus.
Assignments and Grades
Grades in cs146a will be based on written reports, lab projects, hands-on assignments, quizzes
and your participation in class. There will not be a final examination.
Before each class, you will be asked to submit a short report pertaining
to the reading assignments. We will discuss the paper and student answers in class.
The lab will consist of several projects. The programming will be done
in C and Rust. We assume fluency in Java and will provide tutorials to bring you up to speed in C and Rust.
The lab will be run in Unix environment.
You will have to defend your projects.
Since an important part of cs146a is discussion of classical and current literature,
your class participation will influence your grade significantly -- so significantly
that we hesitate to try to assign weights to the individual components such
as summaries and projects. Everything is important; We will assign your final
grade based on the personal assessment of what you got out of the course,
integrating all the methods of evaluation we can think of.
Collaboration is neither permitted on the reports nor on the projects
except collaboration with team members on a team project. You are responsible
for protecting your homework directories, github repositories and such so that others cannot view them
or copy them. Failure to do so constitutes a violation of academic integrity.
Textbook and readings
There are three things you need to have in order to accomplish the reading
assignments in cs146a
- We will use a textbook
Principles of Computer System Design,
by Jerome H. Saltzer and M. Frans Kaashoek,
Morgan Kaufmann, 2009 (ISBN 978-0-12-374957-4)
and
- Readings for cs146a, a set of papers
that will be distributed during the semester.
Class meetings
Class |
Tue, Thu 2:20-3:40pm |
Volen 101 or Pollack 001 |
Schedule |
Please check LATTE |
Staff
Lecturer |
Liuba Shrira |
Volen-258 |
x62704 |
(liuba at cs.brandeis.edu) |
|
|
|
|
Teaching Assistants |
Michael Golitsyn |
Volen-262 |
x62701 |
(golitsyn at cs.brandeis.edu) |
|
Office hours
Liuba Shrira : Tue 4-5pm, and by appointment, send me e-mail to schedule
TAs: please see LATTE
Hot News
Submitting via LATTE
All homework should be submitted via LATTE. You will see the page for 146a in LATTE once you register for the course. If you have any questions about submitting assignments, please contact the TA via email.
Reading Assignments