Page cover

CPTS 360

Systems Programming, Spring 2025


Overview

This course aims to equip students with the skills to craft system software, utilize system capabilities, and construct small-to-medium scale software systems. Throughout this course, students will (a) develop and execute C programs, (b) comprehend the fundamental methods of creating applications through libraries and interfacing with services, (c) understand memory layout, program, and process representations, and (d) implement Unix/Linux abstractions for memory management, processes, process control, inter-process communication, scheduling, file systems, and networks.

  • Instructor: Monowar Hasan

  • Email: monowar.hasan@wsu.edu

  • Class time: Tuesday, Thursday 10:35-11:50 AM

  • Class Location: Pullman Campus, Carpenter Hall 102

  • Office Hours (EME B53): Monday, Friday 2:15-3:00 PM or by appointment

  • Course Staff (TA):

    • Aayush Shrestha (aayush.shrestha@wsu.edu)

    • Bruno Sanchez Parra (bruno.sanchezparra@wsu.edu)

    • YuQun Song (yuqun.song@wsu.edu)

    • Md Tasnim Farhan Fatin (m.fatin@wsu.edu)

  • TA Office Hours:

    • Aayush: Wednesday, 1:00 - 2:00 PM, Sloan 345

    • Bruno: Tuesdays and Thursdays 2:30 PM - 3:30 PM, Sloan 344

    • Fatin: Thursday, 1:00 PM - 2:00 PM, Sloan 345

    • Song: Tuesday, 2:00 PM - 3:00 PM, Sloan 343

Important: To better prepare yourself for office hours and posting Teams interactions, read carefully the excellent guides from Gabriel Parmer:


Acknowledgment

This course uses materials from Randal E. Bryant, David R. O'Hallaron, Remzi Arpaci-Dusseau, Andrea Arpaci-Dusseau, Kung-Chi Wang, Bob Lewis, Youjip Won, Tianyin Xu, Mathias Payer, Sanidhya Kashyap, Peter Reiher, and Hugh Lauer.


Course Syllabus

The course syllabus is available here.


Textbook

  1. [LKMPG] The Linux Kernel Module Programming Guide, Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang. This book is helpful for Lab 3.


Course Schedule

Note: The lectures and code files are hosted on the WSU OneDrive cloud. You need WSU credentials to access the materials.

WK
Date
Topic
Remarks
1

01/07 (Tue)

Course logistics & overview

1

01/09 (Thu)

C recap

2

01/14 (Tue)

Computer memory

2

01/16 (Thu)

Computer memory (contd.)

3

01/21 (Tue)

Cache practice problem solution

PA 0 released

3

01/23 (Thu)

Linking

4

01/28 (Tue)

No Class

MH is traveling for a meeting

4

01/30 (Thu)

No Class

MH is traveling for a meeting PA 0 due

5

02/04 (Tue)

Linking

PA 1 released

5

02/06 (Thu)

Library Interpositioning

6

02/11 (Tue)

Scheduling

6

02/13 (Thu)

Scheduling

Informal early feedback (link) PA 1 due

7

02/18 (Tue)

Scheduling Mid-term review

7

02/20 (Thu)

Exam 1

Exam duration: 60 minutes

8

02/25 (Tue)

Scheduling (contd.)

PA 2 released

8

02/27 (Thu)

Scheduling (contd.)

9

03/04 (Tue)

No Class

MH is traveling for a meeting

9

03/06 (Thu)

Kernel programming

10

03/11 (Tue)

No Class

Spring break

10

03/13 (Thu)

No Class

Spring break

11

03/18 (Tue)

Kernel programming

PA 2 due PA 3 released

11

03/20 (Thu)

Virtual memory

12

03/25 (Tue)

Virtual memory and memory-related bugs

12

03/27 (Thu)

Process control

PA 3 due

13

04/01 (Tue)

Signal

PA 4 released

13

04/03 (Thu)

I/O and Network programming

14

04/08 (Tue)

Network programming

14

04/10 (Thu)

No Class

MH is busy for a day-long meeting

15

04/15 (Tue)

Concurrency issues and bug

15

04/17 (Thu)

Recap & closing

PA 4 due Done with classes!

16

04/22 (Tue)

No Class (exam preparation)

16

04/24 (Thu)

No Class (exam preparation)

17

Finals Week

Exam 2 (in-class) Exam 3 (online submission)

Exam 2 5/1/25 10:30-11:30 AM Exam 3 due by 5/1/25, 1:00 PM

Late submissions will not accepted The date/time is chosen based on the final exam master schedule


Programming Assignments

We will have five programming assignments in this course. The assignments must be completed individually.

  • PA 0: C skill rehash: Design a Unix filesystem tree simulator using C Tree data structures

  • PA 1: Simulating a cache memory system

  • PA 2: Implement various CPU schedulers (first-come-first-serve, round-robin, shortest-job-first)

  • PA 3: Basic kernel-level programming on Linux

  • PA 4: Develop a web proxy that interacts with the browser and the Internet

We strongly recommend using a Linux machine (or VM) to complete the labs, as we will use a Linux environment to grade your submissions. Some labs (e.g., PA 3) will not work without a Linux environment. Check the following links for details about setting up virtual machines on your systems.

Note: for Windows systems, WSL is not recommended. You must install a standalone VM image.

Programming Assignment Submission

We will use GitHub Classroom to deliver programming assignments. This way, you can better manage your assignments using a widely-used version control system, Git.

For information on version control and how to use Git, see:

To learn more about GitHub workflow, see GitHub Quickstart.

Are you using GitHub on your machine for the first time? If you are using GitHub for the first time on your development machine, you need to authenticate your account — one way to do this is by using GitHub CLI. Install GitHub CLI using the instructions given here. Then run the following command and follow the prompts to authenticate your system: gh auth login.

Submission Workflow

  1. For each lab, you will find a GitHub Classroom link on Canvas. Once you click the link and log into your GitHub account, find your name in the student list and click it to accept the assignment. Please double-check your name and email address before accepting the assignment. If you accidentally choose another student's name, please contact the instructor.

  2. A repo named wsu-cpts360-term/paX-name will be automatically created for you and hosted on GitHub with the starter code.

  3. You can then "clone" your repository onto your development machine. You will complete assignments on your development computer and then "push" your work to the GitHub-hosted remote repository for us to grade.

  4. Final submission:

    • Copy the URL of your GitHub repository on the corresponding assignment section on Canvas.

If you have any questions about setting up GitHub, please contact the TA.


Useful Resources


Got stuck? Questions about anything? Feel free to contact the instructor on Teams (preferred) or via email: monowar.hasan@wsu.edu!

Last updated