Instructor:
Professor Bhagi Narahari
narahari@gwu.edu
Fall 2008 Office Hours: Mon,
Wed 3:00 -5:30pm,
Tues 5:00-6:00pm. Other times by Appointment.
Course Outline
This is an introductory course on Computer organization and computer
systems.
The course will expose the student to the different
layers in
a computer system and examine the working of a computer system at these
different levels. It will expose the student to the low level details
of how
machines are assembled and the tools to program them -- it will expose
what
really happens when your programs are run, thereby providing you with
the
intellectual tools needed to solve problems when things go wrong. In
addition
to the theoretical concepts, the course through the lab section will
provide
introduction to systems programming in the Unix environment using
standard
tools and focusing on issues such as performance and correctness. The
course
will take a bottom-up approach: it will start with the basic components
of a
computer system, machine representation of data, digital logic
circuits,
instruction sets and assembly programming, and then it uses the C
language and
the Unix operating system to study system level aspects such as memory
management, file systems, safe programming, system stack, debugging and
performance tuning of programs. The coruse will also expose students to
working in teams. The lecture, and some lab sessions, will consist of
in-class activities and students will be required to work in teams.
Course Objectives
Additional Reference(s): Brian W. Kernighan and
Dennis M.
Ritchie, The
C
Programming Language,Second Edition, Prentice Hall, 1988.
Highly
recommended.
Computer Systems: A Programmers Perspective, Randall E.
Bryant and
David O’Hallaron, Prentice-Hall
The material in the text (and the text website) will be sometimes
supplemented
by notes posted on the course website (lecture notes link)
You must be registered in a lab section of CS 135. These will be conducted by the TAs and will have in-class exercises. There will be a TA -- Stefan Popoveniuc .
Grading
and Course Requirements
Syllabus
Course Announcements and Schedule-- Check once a
week
Lecture Notes
Homeworks
Lab Materials
You are not allowed to collaborate on the homeworks and the lab
assignments. The programming projects will be assigned to two person
teams –
in such cases you cannot collaborate between teams. Please refer to the
academic integrity policy linked from the course web page – this policy
will be strictly enforced.