Marquette University logo      

Course Goals and Objectives


Here are the COEN 4820 course goals and objectives as prepared for ABET accreditation:

They apply equally well for COSC 3250.

Course goals: To provide students with an understanding of the standard problems and their solutions in the area of operating systems (including process management, storage management, I/O systems design, distributed systems, protection and security) and with practical experience with one or more modern operating systems (usually some versions of Unix and Windows).

Course Objectives: By the end of this course, you should be able to perform the following tasks:

  1. Summarize the principles underlying the design and construction of a typical operating system, giving particular recognition to the wider applicability of the ideas and the influences from such developments as high-level languages, networking, multimedia, and security concerns.
  2. Describe the basic structure of an operating system and its components.
  3. Describe the concept of a process and how processes deal with scheduling, cooperation, and communication with other processes.
  4. Write a program spawning multiple processes and communicate between them using shared memory and using messages.
  5. List the most important CPU scheduling algorithms and be able to compare them.
  6. Explain the classical problems in process synchronization and know several different ways to solve such problems, including semaphores, critical regions, and monitors.
  7. Write a program using synchronization to protect critical regions in multiple processes.
  8. Explain how to characterize and cope with processor deadlock, including prevention, avoidance, detection, and recovery.
  9. Describe several different schemes for managing main memory, including swapping, virtual memory, paging, and segmentation.
  10. Write a program using operating system services to access, organize, and protect files.
  11. Compare and contrast several schemes for file allocation and file management.
  12. Describe the characteristics of an I/O system and explain how the user, the operating system, and the hardware interact with I/O.
  13. Describe how disks are structured and how their space is managed by the operating system.
  14. Describe several different network topologies and network types and the processes involved in designing a network.
  15. Describe the challenges of designing a distributed operating system and a distributed file system and give several design alternatives.
  16. Compare and contrast protection and security in operating systems and distributed web applications and describe how to implement these mechanisms in an operating system.

Course Topics:

  • Introduction to event-driven programming.
  • Using APIs: API programming; class browsers and related tools; programming by example; debugging in the API environment.
  • Overview of operating systems: Role and purpose of the operating system; history of operating system development; functionality of a typical operating system.
  • Operating system principles: Structuring methods; abstractions, processes, and resources; concepts of application program interfaces; device organization; interrupts; concepts of user/system state and protection.
  • Concurrency: Synchronization principles; the "mutual exclusion" problem and some solutions; deadlock avoidance; producer-consumer problems and synchronization.
  • Scheduling and dispatch: Preemptive and non-preemptive scheduling; schedulers and policies; processes and threads; deadlines and real-time issues.
  • Memory management: Review of physical memory and memory management hardware; overlays, swapping, and partitions; paging and segmentation; placement and replacement policies; working sets and thrashing; caching.
  • Distributed algorithms: Consensus and election; fault tolerance.
  • Net-centric computing: Background and history of networking and the Internet; network architectures; the range of specializations within net-centric computing.
  • Networking and communications: Network architectures; issues associated with distributed computing; simple network protocols; APIs for network operations.
  • Web technologies; characteristics of web servers; nature of the client-server relationship; web protocols; support tools for web site creation and web management.
  • Network security: Fundamentals of cryptography; secret-key algorithms; public-key algorithms; authentication protocols; digital signatures; examples.

The issue of motivation is paramount in the design of the course. The area of operating systems is often regarded as difficult for both students and faculty, but nonetheless contains many ideas of relevance to all computer scientists. Faculty must ask themselves how they can make operating systems relevant to undergraduates. This consideration must drive the choice of approach to learning and teaching. To this end, students must see these issues as related to the systems that they use. As an example, students might be asked to consider the impact on the operating system of such developments as networking, multimedia, security, and hand-held devices. Similarly, one could also ask about the impact of other developments, such as the following:

  • Playing music on a CD at the same time as using the computer
  • Downloading TV pictures onto a window
  • Docking systems or devices such as digital cameras and hand-held computers
  • Client-server architectures

In pursuing any course on operating systems, students need to be made aware of the wider relevance of many of the ideas. It is therefore useful to highlight the following connections:

  • The cache idea, while relevant at the hardware level, shows up again in the context of the web and downloading material from web sites.
  • The concepts that arise in the discussion of virtual memory come up again in the development of virtual environments.
  • The material on concurrency is relevant in the wider context of concurrent and parallel programming.
  • The material on resource allocation and scheduling features as a major component of operations research.
  • Much of the course material is relevant to the design and construction of real-time and dependable systems.

Students are likely to take a greater interest in operating systems if they see themselves as working in the context of a real system rather than some highly simplified and more abstract simulation. In this regard, the open-source movement has made an important contribution to pedagogy in the operating systems area, because the source code for several well-known operating systems is now available free of charge. These public-domain resources make it easier to illustrate aspects of operating systems and can often provide useful examples of how different systems implement particular features. It is worth observing that many of the students are likely to be fired up with the idea of installing Linux (for example) on their own machines.


  Marquette University. Be The Difference. Marquette | Corliss |