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); Programming (Ch 6) |
| Week 3 | Assembly Language (Ch 7) |
| Week 4: | I/O (Ch 8) |
| Week 5: | Traps and Subroutines (Ch 9) |
| Week 6: | Using the Stack (Ch 10) |
| Week 7: | Midterm; Intro to C (Ch
11); |
| Week 8: | Spring Break; |
| Week 9 | Variables and Operators (Ch 12);
Control Structures (Ch 13) |
| Week 10: | Functions (Ch 14); Testing and
Debugging (Ch 15) |
| Week 11: | Pointers and Arrays (Ch
16); Data Structures (Ch 19) |
| Week 12 | I/O in C (Ch 18); Recursion (Ch 17) |
| Week 13: | Linkers & Loaders; Systems
Programming; |
| Week 14: | Systems Programming (cont'd) |
| Week 15: | Review |
The grade for the course will be based on the following components: (i) Programming assignments (40%) (ii) Quizzes (10%) (iii) Mid-term exam (25%) (iii) Final exam (25%).
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 8 (tentative) ; Final exam: May 10
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 from 2-4 pm in my office (S & T II Room 347), or by appointment.
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