This course uses a bottom-up approach to teach students how
high-level language control and data structures are represented at the
machine level. It also provides an introduction to systems programming.
The required textbook for this class is Introduction
to Computer Systems: From bits and gates to C and beyond (McGraw
Hill, 2nd edition, 2004) by Yale Patt and Sanjay Patel. Some lectures
on systems programming (for which handouts will be provided) are based
on material in "Computer Systems: A Programmer's
Perspective" by Randal Bryant and David O'Hallaron (Prentice
Hall, 2003). A reference text for the C programming
language is the classic Kernighan and Ritchie book "The C Programming
Language" (2nd edition, Prentice Hall, 1988).
| Week 1: | Introduction (Ch 1-3); The
von Neumann model (Ch 4) |
| Week 2: | LC-3 (Ch 5); |
| Week 3 | LC-3 (Ch 5) |
| Week 4 |
Programming (Ch 6); Assembly Language (Ch 7) |
| Week 5: | I/O (Ch 8) |
| Week 6: | Traps and Subroutines (Ch 9) |
| Week 7: | Using the Stack (Ch 10) |
| Week 8 |
Spring Break |
| Week 9: | Midterm; Intro to C (Ch
11); |
| Week 10 |
Programming in C (cont'd) (Ch
12-17) |
| Week 11: | Programming in C (cont'd) (Ch 12
- 17) |
| Week 12: | Linkers & Loaders; Systems
Programming |
| Week 13 | Systems Programming |
| Week 14: | Systems Programming |
| Week 15: | Review |
The grade for the course will be based on the following components:
(i)
Programming assignments (40%) Homework Assignments (10%) (iii) Mid-term
exam (25%) (iii) Final exam
(25%). There will be two homework assignments and four programming
assignments. The relative weight for each assignment is based on the
amount of effort that is required.
All exams are closed book. The final exam will be comprehensive in nature, i.e., it will cover the whole course. In order to obtain an A, your final score should at least be 85%. A score below 50% will result in an F.
Mid-term exam: March 20 (tentative); Final exam: Wed, May 10 (1:30 -
4:15 pm)
There will be four programming assignments, which will have to be
completed individually by each student. These will involve assembly
progamming using the LC-3 simulator (provided with the textbook) and
programming in C.
You are expected to abide by the University's honor code during the semester, i.e., collaboration on a programming assignment is unacceptable. Any violation of the honor code will result in an F for the class.
NOTE: I will be using MOSS to detect plagiarism in the programming assignments.
Office hours will be on Monday and Wednesday from 3-4 pm in my office (S & T II Room 347), or by appointment.
Kishore Vemulpali (svemulpa at gmu dot edu). Office Hrs: TBA
All handouts and other course material will be available at URL http://www.cs.gmu.edu/~setia/cs367/
If you're planning to use the computers on campus for doing your
projects,
please obtain an IT&E labs
account. Even if you are using your own computer, your programs need to
execute correctly on the Linux computers in the IT&E lab since that
system will be used while grading your projects.