CPS [45]44: UNIX/Linux Programming/Fall 2015

CPS [45]44 (3 hours) prepares students for developing software in the UNIX/Linux environment using the C and Go programming languages. Topics include libraries and system calls, shells, system structures and internals, interprocess communication (pipes and signals), communicating sequential processes, network programming (client-server model and sockets), pattern matching and filters, shell programming, automatic program generation, and GUI programming. 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 [45]44 is a programming-intensive course.

CPS [45]44: UNIX/Linux Programming/Fall 2015
Pre-requisite(s): CPS 350 (Data Structures & Algorithms) (with a minimum grade of C for students enrolled in CPS 544) & CPS 356 (Operating Systems)

Meeting times: T Th 12:30pm-1:45pm, MH 201

Instructor: Dr. S. Perugini, AN 145, 229-4079, sperugini1, OHs: T Th 5:00pm-6:30pm (only when class is in session) & by appointment.

Teaching assistant: Conrad Merling (e-mail id: merlingc2), MH 21, OHs: M W 3:30pm-6:30pm (only when class is in session), & by appointment.

Required textbook: [LP] Linux Programming by S. Perugini. 2015. Draft.

Recommended textbooks:
    [CARM] C: A reference manual (2nd ed.) by Harbison, S.P. & Steele Jr., G.L. (1995). Englewood Cliffs, NJ: Prentice Hall. ISBN: 0-13-326232-4. This book is on reserve at the Roesch library.
    [UPE] The UNIX programming environment (2nd ed.) by Kernighan, B.W. & Pike, R. (1984). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-937681-X. This book is on reserve at the Roesch library.
    [CPL] The C programming language (2nd ed.) by Kernighan, B.W. & Ritchie, D.M. (1988). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-110362-8. This book is on reserve at the Roesch library.
    [PG] Programming in Go: Creating applications for the 21st century by Summerfield, M. (2012). Boston, MA: Addison-Wesley. ISBN: 9780321774637.
    [USP] UNIX systems programming: Concurrency, communication, & threads (2nd ed.) by Robbins, K.A. & Robbins, S. (2003). Upper Saddle River, NJ: Prentice Hall. ISBN: 0-13-042411-0. This book is on reserve at the Roesch library, and an eBook of [USP] is available free to all UD students in the library's eContent collection. To access it conduct a search for the title in the library's catalog at library.udayton.edu.
Course objectives:
  • Develop a proficiency in UNIX/Linux, C, and Go.
  • Survey various system-oriented software tools, including debuggers, and compilation and configuration managers.
  • Establish an understanding of the design and development of systems software, such as command shells and parsers, through the study of system libraries, pattern matching and filters, interprocess communication, automatic program generation, and signals.
  • Explore UNIX internals and establish an understanding of UNIX system calls.
  • Introduce the client-server model and GUI programming.
Evaluation, workload, & policies

Course outline, required reading assignments, lecture notes, & homeworks:

Grades: available in Isidore

Lecture summaries (courtesy Joey Perme)

Computer accounts: Linux account access | UDit | A beginner's guide to effective e-mail

Helpful links: academic calendar | student handbook | UDit policies

Feedback: Dr. Perugini welcomes any feedback you have on the style of the lectures, the concepts presented in class, the course webpage, homeworks, deadlines, course and grading policies, or yourexperience in the course.
“It is not a sign of ignorance not to know the answers. But there is great merit in facing the questions." -- David Mamet