CSC 252 - Computer Organization (Spring 2012)

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