CIS 416 Operating Systems and Computer Architecture (3)

Catalog Description:

Overview modern multitasking operating systems:  alternative kernel structures, file systems, process management, synchronization in concurrent programs, memory management, virtual memory. Multithreaded Java programming, basic systems programming in Linux and Windows. (Offered spring semester only.)


CIS 384 Elements of Computing Systems

Required Course Materials:

Randal Bryant and David O’Hallaron, Computer Systems: A Programmer’s Perspective, 2nd edition, Prentice Hall, 2011 (ISBN: 9780136108047)

Course Coordinator:

David R. Owen, Associate Professor of Computer Science

Course Audience:

Required course for Information Science majors.

Course Objectives:


  1. To write C programs in a Unix / Linux environment, with an understanding of security and reliability issues related to low-level representation of data.
  2. To understand and discuss the impact of hardware and software memory management technologies, including virtual memory, on application software performance and correctness.
  3. To understand and discuss exception handling, context switching, interprocess communication, and process scheduling in a modern multitasking operating system.
  4. To understand and discuss system-level I/O, including file I/O and communication over a network.
  5. To write a simple web server to handle multiple concurrent clients, with an understanding of efficiency vs. complexity tradeoffs in a multithreaded (or multiprocess) software system.




  1. Low-level representation of data, IA32 machine language, accessing elements of arrays and structures, pointers, preventing buffer overflow attacks.
  2. Locality of reference, memory hierarchy, cache management schemes, virtual memory, dynamic memory allocation, common memory-related bugs in C programs.
  3. Compilation of high-level code, dynamic linking, system libraries, user and system processes, process scheduling, system calls, interprocess communication via Unix / Linux signals.
  4. Files: opening, closing, reading, writing; file metadata, sharing files between multiple processes, I/O redirection, network programming, IP addresses, sockets, web servers.
  5. Concurrent programming: multiple processes, I/O multiplexing, multiple threads; communication via shared memory, synchronization, thread safety, deadlocks.



Revised: February 2013 (course renumbering); July 2011 (catalog description)

Return to Course Index