CSC 252 - Computer Organization (Spring 2015)

Class time: Tuesday, Thursday 11:05am-12:20pm.
Class location: Goergen 101.

Instructor: Kai Shen (kshen@cs.rochester.edu)
Office hours: Tuesday, Thursday 12:20pm-1:30pm; Please try to catch me right after each class or visit me later at CSB 714.

TA: Mohammad Hedayati (hedayati@cs.rochester.edu)
Managing TA for lab assignment #5. Office hours will be (or has been) announced in the relevant assignment page.

TA: Sharanyan Srikanthan (srikanth@cs.rochester.edu)
Managing TA for lab assignment #3. Office hours will be (or has been) announced in the relevant assignment page.

TA: Brandon Allard (ballard@u.rochester.edu)
Managing TA for lab assignment #4. Office hours will be (or has been) announced in the relevant assignment page.

TA: Maria Janczak (mjanczak@u.rochester.edu)
Managing TA for lab assignment #1. Office hours will be (or has been) announced in the relevant assignment page.

TA: Sean Wang (swang73@u.rochester.edu)
Managing TA for lab assignment #2. Office hours will be (or has been) announced in the relevant assignment page.

CSUG tutors:

In addition to the official course TAs, we are fortunately to have accesses to additional CSUG volunteer tutors. Please note that the tutors are volunteering their time to help fellow students and please be appreciative of their efforts. The tutoring sessions will be held at Hylan 301. The tutors and their time slots are:
       Luisa Neves at 1:30-3pm Mondays
       Dan Hassin at 6-8pm Mondays
       Ryan Puffer at 7-9pm Tuesdays
       Samay Kapadia at 10am-noon Thursdays
       Charles Lehner at 12:30-1:30pm Thursdays
       Maria Janczak at 2-3pm Fridays
       Brandon Allard at 3-5pm Fridays

Blackboard:

We will be using Blackboard for assignment turnin, grade distribution, and other announcements. Please make sure that your Blackboard email address is current and that you can access your Blackboard account for assignment turnin.

Overview:

This course provides an introduction to computer systems with a broad perspective. We will cover a range of subjects including processor hardware, memory hierarchy, operating systems, programming systems, networking, as well as parallel and concurrent systems. We do not, however, dive deeply 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 applications and end users. It will also serve as the foundation for deeper learning of specific computer systems subjects in later courses. Materials 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. 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 should already have familiarity with Java or C programming from prior courses (at least CSC172). Going from Java to C is not particularly challenging, but still non-trivial (particularly on explicit memory management). If you have no prior exposure to C programming, please prepare to dedicate a significant amount of extra time in the early portion of the class to catch up. 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 five lab assignments and two exams. Your grade will be based on a combination of the lab assignments and exams. A tentative grade division is listed below.
       10% - lab assignment #1
       15% - lab assignment #2
       10% - lab assignment #3
       10% - lab assignment #4
       10% - lab assignment #5
       20% - midterm exam
       25% - final exam