Instructor Information

Timothy Barrett

Course Information

Course Description

This course describes how to implement software systems in a UNIX (POSIX-compliant) operating system environment. Students will discuss and learn the complexities, methodologies, and tools in the development of large systems that contain multiple programs. Topics include an overview of the UNIX system and its general-purpose tools, advanced makefile usage, UNIX system calls, UNIX process management, threads, and basic and advanced interprocess communication. Additional topics include source code configuration control, Perl, and debugging techniques.Prerequisite(s): Familiarity with UNIX, experience with C++ or C.

Course Goal

By the end of the course, the student will be able to design and implement software systems consisting of multiple cooperating programs.

Course Objectives

  • Students will develop and understand the creation of Makefiles and basic Perl use, and how these tools can be used to develop and build complex systems.
  • Students will develop an understanding of UNIX system calls, managing UNIX processes, threads, basic and advanced interprocess communication.
  • Students will develop software applications consisting of several programs and libraries, demonstrating knowledge of the material presented.  These applications will be developed and run on both Solaris and Linux operating systems.

When This Course is Typically Offered

This course is the in person offering and is typically offered in the fall at APL.


  • Unix History and Fundamentals
  • Make and Makefiles
  • Basic Perl
  • Libraries
  • Basic and Advanced File I/O
  • Processes
  • Basic Unix IPC
  • Signals
  • Threads
  • Shared Memory
  • Message Queues
  • Semaphores
  • Terminal I/O

Student Assessment Criteria

Homework Assignment 1 20%
Homework Assignment 2 20%
Homework Assignment 3 25%
Homework Assignment 4 25%
Homework Assignment 5 10%

There are five homework projects assigned throughout the course. The first four assignments will be software applications that are developed on our UNIX and Linux systems.  The last assignment is a non-programming assignment.

Computer and Technical Requirements

-Students should have a working knowledge of UNIX.

-Students must know C/C++.

Participation Expectations

There will be required textbook readings, as well as some optional readings from the recommended text, for each module.  Students are encouraged to complete the readings before working on the module assignments.


Textbook information for this course is available online through the MBS Direct Virtual Bookstore.

Course Notes

There are no notes for this course.

Final Words from the Instructor

Course notes and other class related items are provided via a separate web-page.

(Last Modified: 01/09/2018 08:14:20 PM)