CSC 252 - Computer Organization (Spring 2015)
Class time: Tuesday, Thursday 11:05am-12:20pm.
Class location: Goergen 101.
Instructor: Kai Shen
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
Managing TA for lab assignment #5. Office hours will be (or has been) announced in the relevant assignment page.
TA: Sharanyan Srikanthan
Managing TA for lab assignment #3. Office hours will be (or has been) announced in the relevant assignment page.
TA: Brandon Allard
Managing TA for lab assignment #4. Office hours will be (or has been) announced in the relevant assignment page.
TA: Maria Janczak
Managing TA for lab assignment #1. Office hours will be (or has been) announced in the relevant assignment page.
TA: Sean Wang
Managing TA for lab assignment #2. Office hours will be (or has been) announced in the relevant assignment page.
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
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
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.
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.
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