ISA 563: Fundamentals of Systems Programming

BulletPrerequisites

    * INFS 590 (Program Design and Data Structures) or permission of instructor.
Further Assumptions:
    * Access to recent (2.6.x) Linux environment.
    * Familiarity with a decent editor (VIM or Emacs) or an IDE, and the GCC.

Bullet Course 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.

Bullet Goals

    * Demystify systems programming
    * Focus on principles, methods, and tools
    * Sound application design principles
    * Efficient and secure implementation strategies
    * Concepts and mechanics of secure programming.
    * UNIX operating system programming environment.
    * Develop applications using popular tools and systems including C, UNIX, IPC, and threading.

BulletTextbooks

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

BulletPolicies

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.

Programs

Programs must be turned in to the TA, and are due before class on the day of their due dates. Please do not skip class to finish your program!

Grading

Student grade is split according to the following schedule: Student letter grade is determined as follows:

Letter Grade Grade
A+ [97,100]
[93,97)
A- [88,93)
B+ [84,88)
[80,84)
B- [75,80)
[65,73)
[0,65)

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

Honor Code

Cheating and Plagiarism are absolutely forbidden. I assume that you have read GMU Honor Code. 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.