Skip to content

Course Description

Organization: University of Minnesota Department of Computer Science and Engineering (CSE)
Course Identifier: CSCI 4061
Offering Course Title: : Introduction to Operating Systems

Course Overview

This course provides an in-depth study of operating systems, focusing on their architecture, core functionalities, and role in managing computer hardware and software. Students will explore how operating systems allocate resources, manage processes, and facilitate user interaction. Key topics include process management, memory hierarchy, file systems, concurrency, and security. Through hands-on projects and assignments, students will work directly with operating system components, reinforcing both theoretical knowledge and practical skills essential for systems programming and software development.

Learning Objectives

By the end of this course, students will be able to:

  • Explain the purpose, structure, and design of modern operating systems.
  • Analyze process management techniques, including scheduling, inter-process communication, and synchronization.
  • Evaluate memory management strategies such as paging, segmentation, and virtual memory.
  • Compare and contrast different file system architectures and storage management methods.
  • Assess security models, access control mechanisms, and system protection strategies.
  • Utilize system calls, shell scripting, and fundamental kernel-level programming techniques.
  • Differentiate between major operating systems such as Linux, Windows, and macOS based on design and implementation.

Prerequisites

  • Grade of C- or Better in CSCI 2021 or EE 2361
  • Admission to Computer Science Major or Minor, Computer Engineering Major

In addition to the formal prerequisites, a solid understanding of C programming is essential to completing this course. We will briefly survey aspects of C programming at the start of the course. However, if you are out of practice with C, you will need to thoroughly review this material. Suggested resources on C programming are available here.

Course Structure

This course integrates theoretical and hands-on learning through:
- Lectures: Covering essential concepts, case studies, and real-world applications.
- Course Projects: Exploring system-level programming and operating system behavior.
- Exams and Quizzes: Evaluating conceptual understanding and problem-solving skills.
- Final Exam: Cumulative exam to test entire comprehension on course topics throughout the semester.

Topics Covered

  1. Programs and Processes
  2. I/O Basics & Redirection
  3. File Systems
  4. Virtual Memory
  5. Signals
  6. Pipes
  7. Shared Memory
  8. Sockets and Communication
  9. TCP & UDP
  10. Threads

Expected Outcomes

Upon completion, students will have a comprehensive understanding of operating system principles and the skills necessary to analyze, debug, and optimize OS components. This foundation will prepare them for advanced topics such as systems programming, distributed computing, and cybersecurity.

Source

Much of this course description is from CSCI 4061 Intro to Operating Systems at the University of Minnesota - Twin Cities, taught by Jack Kolb.