Skip to content

Codio Courseware Catalog

Introductory level operating system ideas, techniques, and implementations. This course is divided into four parts: (1) Virtualization, (2) Memory Management, (3) Concurrency, and (4) Persistence.

Examples of practical applications include implementing a command line interpreter, and multi-threaded operating system tools.

Course Modules & Assignments

Introduction - Intro to Operating Systems
- C Primer
Processes and Execution - Processes
- Process API
- Direct Execution
- Summative Assessments
Scheduling - CPU Scheduling
- Multi-Level Feedback
- Lottery Scheduling
- Summative Assessment
Memory - Address Spaces
- Memory API
- Address Translation: Base & Bounds
- Summative Assessment
Segmentation - Segmentation
- Free Space Management
- Implementing Malloc & Free
- Summative Assessment
Paging - Introduction to Paging
- Translation Lookaside Buffers
- Advanced Page Tables
- Summative Assessment
Swapping - Swapping: Mechanisms
- Swapping Policies
- Summative Assessment
Virtual Memory - Complete VM Systems
- Virtual Memory for Linux
- Summative Assessment
Concurrency & Threads - Concurrency & Threads
- Thread API
- Locks
- Summative Assessment
Data Structures & Variables - Locked Data Structures
- Condition Variables
- Semaphores
- Summative Assessment
Advanced Concurrency - Multi-CPU Scheduling
- Concurrency Bugs
- Event Based Concurrency
- Summative Assessment
I/O & Hard Disk Drives - I/O Devices
- Hard Disk Drives
- Redundant Disk Arrays (RAID)
- Summative Assessment
File Systems - Files & Directories
- Fast File System (FFS)
- File System Implementation
- Summative Assessment
Data Integrity & Protection - FSCK and Journaling
- Log-structured File System
- Flash-based SSDs
- Summative Assessment
Distributed Systems - Distributed Systems
- Data Integrity and Protection
- Network File System (NFS)
- Andrew File System (AFS)
- Summative Assessment

Constructing Knowledge Through Coding

Introduction to Operating Systems emphasizes students applying and exploring the information presented. A code editor accompanies each page with new concepts so students can see for themselves how the computer responds to code. In addition, the content provides code snippets to get students started as well as suggested avenues for investigation.

Auto-Graded Assessments

Students receive immediate, rich feedback. In addition to correctness feedback (i.e. right or wrong), students will also see an explanation with the complete solution. There are a wide variety of questions — all of which are auto-graded, giving students a sense of their understanding of the material right after they are introduced to it and as they attempt harder and harder problems.

Lowering the Barrier to Entry

Introduction to Operating Systems reflects the need for computer science education to meet students where they are. Like any specialized community, computer science has its own jargon. The formal teaching of computer science should not burden students with the assumption that they are fluent in this special language. The material is presented in smaller units that are more manageable for the students. The same vocabulary and concepts are covered, but in a more approachable way — state things as plainly as possible, and, when appropriate, use images, tables, or lists.

Another way in which this content is more approachable is that it uses many small programs instead of one large program. Research shows that a variety of smaller problems increase student performance and reduce stress. Using many small programs leads to students spend a sufficient amount of time on their work, and they do not wait until the last moment to begin their work. 

Encouraging Customization Through Modularity

This content is not a one-size-fits-all solution. Instead, it implements a modular format. Natural break points occur in the curriculum where instructors can make the changes they deem necessary. Instructors can re-name, re-order, or remove units.

Using Codio’s excellent content authoring tools, they can author new material. This modular approach gives instructors flexibility when designing the learner’s experience

What's Included