CS 367 - Computer Systems and Programming

Spring 2011

 MW 1:30 - 2:45  pm,  AB L008

Prof. Sanjeev Setia
setia at cs dot gmu dot edu


This course provides an introduction to computer systems from a programmer's perspective. Topics include machine-level representation of data and programs, linking and loading, processes, virtual memory and dynamic memory allocation.


Grade of C or better in CS 262 or 222 AND ECE 301 or 331.  NOTE: Prerequisites will be enforced strictly.

Course Outcomes

Upon completion of this course, students should be able to:


The required textbook for this class is Computer Systems: A Programmer's Perspective by Randal Bryant and David O'Hallaron (2nd edition, Prentice Hall,  2010).  A reference text for the C programming language is the classic Kernighan and Ritchie book "The C Programming Language" (2nd edition, Prentice Hall, 1988).

Course Outline

Week 1: Overview of Computer Systems (Ch 1);  C programming (Review)
Week 2: Programming in C (cont'd)
Week 3 Representing & Manipulating Information (Ch 2)
Week 4
Ch 2 (cont'd)
Week 5: Ch 2 (contd); 
Week 6: Machine-level Representation of Programs (Ch 3)
Week 7: Ch 3 (cont'd)
Week 8
Ch 3 (cont'd)
Week 9: Ch 3 (cont'd)
Week 10
Linking (Ch 7)
Week 11: Dynamic Memory Allocation (Ch 9.9)
Week 12: Processes (Ch 8)
Week 13
Memory Hierarchy (Ch 6)
Week 14: Virtual Memory (Ch 9)
Week 15: Review


The grade for the course will be based on the following components: (i) Projects and Homework Assignments (45%) (ii) Quizzes & Class participation (10%) (iii) Mid-term exams (25%) (iii) Final exam (20%).  The final exam will be comprehensive in nature, i.e., it will cover the whole course.

There will be two homework assignments and three lab assignments. The relative weight for each assignment is based on the amount of effort that is required.

In order to obtain an A, your overall score in the course should be at least 90%.  A score below 50% will result in an F.

Exam Schedule

Mid-term exam I: March 7 (tentative); Midterm Exam II:  April 13 (tentative)   Final exam:  Wed, May 11 (1:30 - 4:15 pm)


10% of the course grade is based on quizzes and class participation. There will be four quizzes distributed over the semester. The dates of the quizzes will not be announced in advance.

Lab and HW Assignments

There will be three lab or programming assignments (although one of these "programming" assignments will not involve writing code). You may work in a group of up to two students on the second and third assignments, whereas the first programming assignment will need to be completed individually.  There will be at least two homework assignments which are to be completed individually by each student.

You are expected to abide by the University's honor code and the CS Department's Honor Code and Academic Integrity Policies during the semester, i.e., collaboration between students in different groups on  an assignment is unacceptable. Any violation of the honor code will result in referral to the honor council with a recommendation that the student be awarded an F for the class.

NOTE: I will be using MOSS to detect plagiarism in the programming assignments.

Office Hours

Office hours will be on MW 3 - 4 pm in my office (Room 5305, Engineering Building), or by appointment.



Class Home Page

All handouts and other course material will be available at URL or on the Blackboard page for the class.

Computer Accounts

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 those systems will be used while grading your projects.

If you are a student with a disability and you need academic accommodations, please contact the Disability Resource Center (DRC) at 993-2474. All academic accommodations must be arranged through the DRC.