CPS 444/544: Systems Programming I/Fall 2006

CPS 444/544 (3 sem hrs) provides an introduction to systems programming in UNIX and C. Topics include operating system structures, system calls and libraries, interprocess communication, pipes, and signals. Students can also expect a survey of various software tools supporting systems programming, including gcc, gdb, make, sed and awk, and lex and yacc. The course does not aim to be comprehensive, but rather focuses on thematic issues. Assignments are designed to provide students with a pragmatic exposure to these tools as well as issues faced by modern practitioners. CPS 444/544 is a programming-intensive course and assumes no prior experience with UNIX.


Pre-requisites: CPS 350 (Data Structures and Algorithms) and CPS 346 (Operating Systems) with a minimum grade of C for students enrolled in CPS 544.

Meeting times: T Th 4:30pm-5:45pm, MH 205

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

Teaching assistant: John Cresencia, AN 130 (connector room between AN 131 and 135), 229-2364, cresenjv at notes dot udayton dot edu, OHs: T Th 12:00pm-2:00pm, F 12:00pm-1:00pm, and by appointment.

Required textbook: [UPE] The UNIX Programming Environment by B.W. Kernighan and R. Pike. Prentice Hall, Second edition, 1984. ISBN: 0-13-937681-X.

Recommended textbook: [CPL] The C Programming Language by B.W. Kernighan and D.M. Ritchie. Prentice Hall, Second edition, 1988. ISBN: 0-13-110362-8.

Course outline and reading assignments (to be completed prior to class):
  1. Introduction to systems programming in UNIX and C ([UPE] Preface,Ch1,2,3,6)
    1. introduction and course outline: Aug 22
    2. system libraries; input/output [vi handout and in-class C exercises]: Aug 24
    3. files and directories (inodes, hard and symbolic links): Aug 29, 31
    4. using the shell: Sep 5, 7, 12
    5. Exam 1: Sep 14 (closed book, closed notes)
    6. using the shell (continued): Sep 19
  2. Pattern matching and filters ([UPE] Ch4)
    1. regular expressions and grep: Sep 21 (in-class regexp exercises i and ii)
    2. extended regular expressions and egrep [exercise in writing REs and more REs]: Sep 26
    3. filters, interprocess communications, and sed: Sep 28
    4. awk: Oct 3
  3. Shell programming ([UPE] Ch3,5)
    1. essential elements, conditionals, and repetition: Oct 5
    2. putting it all together: Oct 12
  4. Automatic program generation ([UPE] Ch8):
    1. make [exercise in writing a Makefile]: Oct 17
    2. finite state automata and lex: Oct 19
    3. Exam 2: Oct 24 (closed book, closed notes)
    4. lex: Oct 26, 31
    5. Backus-Naur form and yacc: Nov 2
    6. lex and yacc: Nov 7, 9, 14
  5. UNIX system calls ([UPE] Ch7):
    1. introduction, I/O (read and write), processes (fork): Nov 16
    2. Exam 3: Nov 21 (closed book, closed notes)
    3. processes (continued; fork and wait): Dec 5

  6. By Dec 5 you should have read [UPE] Preface,Ch1-6,8.

    Final Exam: T Dec 12, 4:30pm-6:20pm, MH 205 (comprehensive, closed book, closed notes)
Homeworks (programming style guide): 1 2 3 4 5 6 7 8

Grades: WebCT

Accounts: CPS account access @ home | UNIX account access | CPS labs hours | Keeping your password safe | A beginner's guide to effective e-mail
If you are unable to log into your CPS (Windows or UNIX) account or if you forget your CPS (Windows or UNIX) account password, contact the CPS systems administrator, Mr. Tramontana, at tramonjr at notes dot udayton dot edu or 229-3835, and be as specific as possible. Mr. Tramontana's office is located in the back of AN 131 and his office hours are M T W Th F 8:30am-4:30pm.

Readings and resources: A Brief Introduction to C by W.M. McKeeman from ACM SIGPLAN Notices, 28(3), 347-348, 1993.

Helpful links: UD academic calendar | UD student handbook | UDit policies 

Feedback: Dr. Perugini welcomes any feedback you may have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, projects, deadlines, course and grading policies, or your general experience in the course.
© Saverio Perugini, Fall 2006, 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.