CS 720/820: Operating System Programming

(Coordinator: Robert Russell)

Catalog description

Detailed discussion of operating system concepts and features. Practical examples and exercises that utilize advanced operating system features, including interprocess communication, synchronization, client-server communication, shared memory, and threads. Discussion of POSIX 1003.1 Part I Standards. Prereq: CS 520 and CS 619.

Attributes

  • This course is one of the CS electives designated as implementation intensive.
  • This course can be taken as CS720H by honors students.

Course Outcomes and their Relationship to Program Outcomes

  • Utilizing advanced features of POSIX from C programs. [methodologies of software development and principles of operating systems]
  • Familiarity with issues in, and a working knowledge of, program portability. [methodologies of software development, think abstractly and reason logically about computer science problems, and principles and techniques of a range of advanced topics in computer science]
  • Familiarity with issues in, and a working knowledge of, program testing. [methodologies of software development and think abstractly and reason logically about computer science problems]
  • Familiarity with issues in operating system standardization. [methodologies of software development, principles of data structures, principles of operating systems, think abstractly and reason logically about computer science problems, and principles and techniques of a range of advanced topics in computer science]
  • Gaining a working knowledge of interprocess communication facilities. [methodologies of software development, principles of data structures, principles of operating systems, think abstractly and reason logically about computer science problems, and principles and techniques of a range of advanced topics in computer science]
  • Gaining a working knowledge of POSIX threads. [methodologies of software development, principles of data structures, principles of operating systems, think abstractly and reason logically about computer science problems, and principles and techniques of a range of advanced topics in computer science]
  • Gaining a working knowledge of TCP/IP sockets. [methodologies of software development, principles of data structures, principles of operating systems, think abstractly and reason logically about computer science problems, and principles and techniques of a range of advanced topics in computer science]
  • Gaining a working knowledge of how to produce “industrial strength” software. [methodologies of software development, principles of operating systems, think abstractly and reason logically about computer science problems, and principles and techniques of a range of advanced topics in computer science]

Evaluation

Three or four programming assignments (60–70%), a midterm and final exam (30–40%).

Major Topics

  • Introduction to and history of UNIX/POSIX
  • Command line interface
  • POSIX environments and processes
  • POSIX extended and real-time signals
  • File systems
  • Interprocess communication and synchronization
  • POSIX pthreads
  • Networking and sockets
  • Testing and monitoring

Required Textbook

W. Richard Stevens and Stephen A. Rago. Advanced Programming in the UNIX Environment, Third Edition, Addison-Wesley Professional Computing Series, 2013. ISBN: 978–0321637734.