Class time: Tuesday, Thursday 3:25pm-4:40pm.
Class location: CSB 601.
Instructor: Kai Shen
(kshen@cs.rochester.edu)
Office hours: Tuesday, Thursday 4:40pm-5:40pm at CSB 714;
walk-ins without appointment are welcome.
TA: Ashker Mujib
(amujib@cs.rochester.edu)
Office hours: will be announced along with relevant assignments.
Office hours will be held at CSB 625.
TA: Samuel Atlas
(Samuel.Atlas@rochester.edu)
Office hours: will be announced along with relevant assignments.
Office hours will be held at Hylan 301.
CSUG tutors:
In addition to the TAs, we are fortunately having accesses to additional
CSUG volunteer tutors. The tutoring sessions will be held at Hylan 301.
The tutors and their time slots are:
Josh Pawlicki at 11:30am-1:30pm Monday
Edie Hanson at 2:00-4:00pm Tuesday
Simon Weber at 5:00-7:00pm Wednesday
Overview:
This course provides an introduction to computer systems with a broad
perspective. We will cover a range of system layers including processor
hardware, memory hierarchy, operating systems, programming systems,
networking, as well as parallel and concurrent systems.
We do not, however, dive deep into these subjects, which will be targeted
in additional systems courses. The goal of this course is to provide you
an understanding on all major components of the computer system and how
they fit together to support software applications. It will also serve
as the foundation for deeper learning of specific computer systems subjects
in later courses.
Topics covered in this course include the data representation and
manipulation, machine-level representation of programs, the memory and
storage hardware hierarchy, linking and loading of computer programs,
exceptional control flows, virtual memory, system-level I/O, network
programming, and concurrent programming.
Textbook:
The textbook for this course is "Computer Systems: A Programmer's Perspective",
by Bryant and O'Hallaron, Second edition (2010).
Additional companion materials for this textbook is available online.
C programming:
This course will involve substantial work in lab assignments and heavy C
programming. We will not devote much class time to learn programming.
You are expected to have basic familiarity with C programming while entering
this course. Otherwise you should be prepared to dedicate a significant
amount of extra time to catch up on programming. While you can find a lot
of information about C programming on the web, having a reference book could
be very helpful. In particular, the classic "C Programming Language" by
Kernighan and Ritchie (2nd Edition) is very worthwhile to have.
Assignments and grading:
There will be about six lab assignments and two exams.
Your grade will be based on a combination of the lab assignments and exams.
An additional credit (up to 5%) may be awarded based on your participation
in class discussions. A tentative grade division is listed below.
5% - lab assignment #1
10% - lab assignment #2
10% - lab assignment #3
10% - lab assignment #4
10% - lab assignment #5
10% - lab assignment #6
20% - midterm exam
25% - final exam