GEORGE MASON UNIVERSITY
DEPARTMENT OF COMPUTER SCIENCE

CS 367 - Computer Systems and Programming

Spring 2005


Tuesday 4:30 - 7:10 pm, Innovation Hall 105

Prof. Sanjeev Setia
setia at cs dot gmu dot edu
703-993-4098

Description

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.

Readings

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).

Course Outline

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

Grading

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.

Tentative Exam Schedule

Mid-term exam: March 8 (tentative) ; Final exam: May 10

Programming Assignments

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

Office hours will be on Monday from 2-4 pm in my office (S & T II Room 347), or by appointment.

TA

TBA

Class Home Page

All handouts and other course material will be available at URL http://www.cs.gmu.edu/~setia/cs367/

Computer Accounts

If you're planning to use the computers on campus for doing your projects, please obtain an IT&E labs account