CPS 444/544: Systems Programming I

Fall 2005

(from the undergraduate bulletin)
Analysis of compilers and their construction; programming techniques discussed in the current literature; advanced computer applications in mathematical and nonnumeric areas (3 semester hours).

(instructor's perspective)
The goal of CPS 444/544 is to establish an understanding of the design and development of systems software, such as command interpreters, compilers, debuggers, and compilation and configuration management tools, through the study of pattern matching and filters, system libraries, interprocess communication, and automatic program generation. Students can expect a survey of various software tools supporting systems programming, including make, RCS, sed and awk, and lex and yacc, and an illustration of their role in compiler construction. Assignments are designed to provide students with a pragmatic exposure to these tools as well as issues faced by modern practitioners. Examples will be presented using C, the Korn shell, and ML in the UNIX programming environment. This is a programming-intensive course.

Syllabus (pdf)

Meeting Times: T Th 4:30-5:45p, SC150

Instructor: Dr. Saverio Perugini, AN 145, 229-4079, perugisa at notes dot udayton dot edu, OHs: M W 3:30-4:30p, T Th 5:45-6:45p and by appointment.

Recommended Texts:
(added as the course progresses)
  1. [KR] B.W. Kernighan and D.M. Ritchie. The C Programming Language. Prentice Hall, Second edition, 1988. ISBN: 0-13-110362-8
  2. [KP] B.W. Kernighan and R. Pike. The UNIX Programming Environment. Prentice Hall, Second edition, 1984. ISBN: 0-13-937681-X.

Lectures and Course Notes

(click on a date to view lecture summary for that class)
  1. Introduction to systems programming in UNIX and C: Aug 23, 25, 30, Sep 1
  2. Using the shell: Sep 6, 8
  3. Regular expressions and filters (sed and awk); compilation management (make): Sep 13, 15, 20, 22 27, 29, Oct 4, 6
  4. Shell programming: Oct 13, 18
  5. Lexical analysis and parsing (lex and yacc): Oct 20, 25, 27, Nov 1, 3
  6. ML: Nov 8, 10, 15, 17, 22, 29, Dec 1

    Midterm Exam (Oct 27, closed book, closed notes; no exemptions)
    Final Exam (4:30-6:20p, Dec 13, SC150; comprehensive, closed book, closed notes; no exemptions)


programming style guide)
    Homework #1
    Homework #2
    Homework #3
    Homework #4
    Homework #5
    Homework #6
    Homework #7 (due Dec 1, 4:30p, in class)


    Lexical Analysis (due Dec 9, 4:30p)

Account Info

Readings and Resources

(added as the course progresses)


(most frequent @ top)
    Q: Opps! I forgot my CPS (Windows or UNIX) account password. What should I do?

    A: Contact the CPS system administrator, Mr. Halter. He will be able to reset it for you.

Helpful Links


Please feel welcome to contact your instructor, Dr. Saverio Perugini, to provide any feedback you may have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, the course project, deadlines, course and grading policies, or your general experience in the course.

"If you give me the right kind of Tinker Toys, I can imagine the building. I can sit there and see primitives and recognize their power to build structures a half mile high, if only I had just one more to make it functionally complete."
              -- Ken Thompson, creator of UNIX and the 1983 ACM A.M. Turing Award Recipient, quoted in IEEE Computer, May 1999.
(c) Saverio Perugini, Fall 2005, University of Dayton. Permission to use ideas about the organization of topics and any notes or material is granted, provided suitable acknowledgments and citations are made.