ISA 563: Fundamentals of Systems Programming (Fall 2008)

Introduces systems and network programming using lectures and hands-on Labs. Covers ANSI C programming, system libraries and APIs, forking and threads, synchronization, debugging, and inter-process communications.
Michael E. Locasto

[GMU's Academic Honesty Page] [GMU Honor Code] [ACM Code of Ethics] [policies] [academic calendar (PDF)] [PuTTY (SSH client)]

General Information:

Prerequisites: INFS 590 or permission of Instructor. I also assume you have access to a recent (2.6.x) Linux enviroment, a decent editor (such as emacs or vi) or IDE, and the gcc compiler.

Description: This course is a hands-on in-depth introduction to the structure of the Unix operating system with emphasis to the system libraries using ANSI C. It is appropriate for students who want to learn the principles of how to design and implement system applications. The course begins with an introduction of the C programming language and continues with the basic Unix Operating System data structures and Application Programming Interfaces (APIs). Using hands-on laboratory exercises students will be exposed to the concepts of inter-process communications, synchronization, and process and thread management with emphasis on security applications.


Name Role email Office Hours
Michael E. Locasto Instructor mlocasto 17:00 - 19:00 :: Thursdays, ST2 Rm 333, or by appointment
Venkatesh Laxminarayanan TA vlaxmina 14:00 - 15:00 :: Fridays, location TBD

Class Time: Thursday 19:20 -- 22:00
Class Duration: August 25th to December 17th *
Class Location: Innovation Hall 223 [map] [floor plan]

* the first meeting will be on Thursday, September 4th, 2008.

Course Texts:


  1. The C Programming Language, Second Edition by Kernighan and Ritchie. (ISBN 0-13-110362-8) [Prentice Hall] [Amazon] (wikipedia entry)
  2. Advanced Programming in the UNIX(R) Environment by W. Richard Stevens, Addison-Wesley Professional; 2nd edition (June 17, 2005), ISBN-10: 0201433079, ISBN-13: 978-0201433074.

Supplemental Texts: (not required, but helpful C references)

  1. UNIX Systems Programming: Communication, Concurrency and Threads, 2 Ed. by Kay Robbins and Steve Robbins. San Antonio, Texas, Prentice Hall ISBN-10:0130424110, ISBN-13: 978013042411
  2. Practical C Programming, Third Edition by Steve Oualline. (ISBN 1-56592-306-5) [Barnes & Noble][Amazon][OReilly]
  3. Mastering Algorithms with C by Kyle Loudon. (ISBN 1-56592-453-3). [Amazon][OReilly][Barnes & Noble]
  4. C How To Program, Fourth Edition by Harvey and Paul Deitel. (ISBN 0-13-142644-3). [Prentice Hall][Barnes & Noble][Amazon]

If you're really interested in learning C and mastering it, then the Loudon book is a good second step. The Oualline book covers much of what Deitel2 covers on C anyway.

Lecture Notes and Course Schedule:

Course Policies:

The point of this course is your intellectual enlightenment and enjoyment. I want the course to run as smoothly as possible, so I encourage feedback on both positive and negative aspects. Feel free to drop by my office, send email, or leave a note. Note that the Instructor reserves the right to modify the schedule and topics as needed.

Your grade is based on 1000 points and is split according to the following schedule:

When your work is returned to you, check it. If you disagree about a particular solution, please document in writing what you think the grading mistake is. Please do not make immediate verbal complaints to the professor or TA.

Class participation counts toward your grade. I expect and encourage thoughtful and lively participation and discussion.

I typically DO NOT scale or curve grades unless there is a classwide epidemic of failure. Plan your work and effort based on the assumption that there will be no curve.

You can contact me via email, but please start your email's subject with the string [ISA563]; it helps me filter my email. Short (one or two paragraphs) emails are appreciated.

While collaboration on homework and projects is greatly encouraged, your answers must be original. No collaboration is allowed on the final or midterm. Students collaborating on assignments must clearly list with whom they worked. The bottom line is that general discussion is welcome, but specific solutions cross the line.

Cheating and Plagiarism are absolutely forbidden. I assume that you have read GMU's policies on academic honesty. Please refer to the links at the top of this page. It is almost absurdly easy to discover cheating.

Late work is generally not accepted. Late submission loses 10% of the assignment's value per day.

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

last updated: 2 September 2008
Copyright © Michael E. Locasto 2008