Fall 2013
CS 367 (002) - Computer Systems & Programming

  Syllabus Page

  Lecture Timetable

  Lecture Slides


Course Description:

CS 367 provides students with an introduction to computer sysems 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 222 or CS 262 (Low-level programming)
Grade of C or better in ECE 301 (Digital Electronics) or ECE 331

Learning Outcomes:

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

  • Design and implement C programs that use structs and dynamic memory allocation.
  • Use debuggers.
  • Demonstrate knowledge of computer arithmetic and logic operations and representations of data at the machine-level.
  • Demonstrate knowledge of machine-level representations of (C) programs.
  • Understand object file linking and related ideas such as relocatable object files and symbol resolution.
  • Understand the idea of a process, how processes are created and laid out in memory, how processes use virtual memory, and how they are manipulated via interrupts, signals, and context switches.
  • Understand dynamic memory allocation and garbage collection schemes.

Class Websites:

All handouts and other course material will be available on the course website: http://cs.gmu.edu/~pwang/cs367/ or on MyMason.


Prof. Pearl Y. Wang
Computer Science Department
Office:  Nguyen Engineering - ENGR 4304
Tel:       703-993-1527
E-mail:    pwang at cs.gmu.edu
Office Hours: Tues, Wed, & Thurs; 1:30 - 3 pm

Teaching Assistants:

David Freelan
E-mail:  dfreelan AT gmu.edu
Office Hours:  M 2-3 pm, R 3-5 pm

Josh Snider
E-mail:  jsnider3 AT gmu.edu
Office Hours:   Josh will be monitoring MyMason discussions

Class Hours & Location:

Tues & Thurs 12 - 1:15 pm;   AB L008


The required textbook for this class is Computer Systems: A Programmer's Perspective by Randal Bryant and David O'Hallaron, Second Edition 2010. (The book's website has links to other helpful material on C and Linux.)

A well-known reference for the C programming language is Kernighan & Ritchie's book C Programming Language, Second edition, Prentice Hall, 1988. (This is a useful resource if you need a C refersher.)

Course Requirements & Grading:

The course grade is based on lab projects, homework assignments, quizzes & class participation, two midterm exams, and a comprehensive final exam:
Lab projects & Homework:   45%
Quizzes & class participation:   10%
Two Midterm Exams:   20 %
Comprehensive Final Exam:    25 %

There will be two homework assignments and at least four lab projects. The relative weight for each assignment is based on the amount of effort that is required. See the Lecture Timetable for important dates. The dates of quizzes will not be announced.

All required coursework must be completed by the stated due date and time. Late coursework will not be accepted and make-up tests will not be given for missed examinations.

Honor Code:

Most of the homework and lab projects must be done individually. However, a few assignments permit students to work in groups of up to two students. All required coursework for this class (assignments, tests, etc) must adhere to Mason's and the CS Department's Academic Integrity and Honor Code Policies described here:
Please note that collaboration between students in different groups within and outside of this course section is not acceptable. Further, MOSS will be used to detect plagiarism in the lab assignments.

Computer Accounts:

Projects for this class are graded using Zeus, a VS&E Linux-based system, so you need to have an account on this system. See http://labs.ite.gmu.edu for information. Even if you use your own computer, you will probably need to run your codes on the VS&E system because they will be graded there.


If you have a documented learning disability or other condition that may affect academic performance you should: (1) make sure this documentation is on file with the Office of Disability Services (SUB I, Rm. 2500; 993-2474; http://ods.gmu.edu/) to determine the accommodations you need; and (2) talk with me to discuss your accommodation needs.

Important Dates:

The tentative timeline describing the dates of required activities can be found on the Lecture Timetable webpage.
Last day to add:  September 3, 2013
Last day to drop: September 3, 2013 (no tuition penalty)
Final day to drop: September 27, 2013

Columbus Day recess: October 14, 2013
Thanksgiving recess: November 27 - December 1, 2013
Last day of classes: December 7, 2013

Final Examination: December 12, 2013: 10:30 am - 1:15 pm

Created: 12 June 2013
P.Y. Wang