CPTS 360
Systems Programming, Spring 2025
Last updated
Systems Programming, Spring 2025
Last updated
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:
Email: monowar.hasan@wsu.edu
Class time: Tuesday, Thursday 10:35-11:50 AM
Class Location: Pullman Campus,
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
Note: The lectures and code files are hosted on the WSU OneDrive cloud. You need WSU credentials to access the materials.
01/07 (Tue)
Course logistics & overview
01/09 (Thu)
C recap
01/14 (Tue)
Computer memory
01/16 (Thu)
Computer memory (contd.)
01/21 (Tue)
Cache practice problem solution
PA 0 released
01/23 (Thu)
Linking
01/28 (Tue)
No Class
MH is traveling for a meeting
01/30 (Thu)
No Class
MH is traveling for a meeting PA 0 due
02/04 (Tue)
Linking
PA 1 released
02/06 (Thu)
Library Interpositioning
02/11 (Tue)
Scheduling
02/13 (Thu)
Scheduling
02/18 (Tue)
Scheduling Mid-term review
02/20 (Thu)
Exam 1
Exam duration: 60 minutes
02/25 (Tue)
Scheduling (contd.)
PA 2 released
02/27 (Thu)
Scheduling (contd.)
03/04 (Tue)
No Class
MH is traveling for a meeting
03/06 (Thu)
Kernel programming
03/11 (Tue)
No Class
Spring break
03/13 (Thu)
No Class
Spring break
03/18 (Tue)
Kernel programming
PA 2 due PA 3 released
03/20 (Thu)
Virtual memory
03/25 (Tue)
Virtual memory and memory-related bugs
03/27 (Thu)
Process control
PA 3 due
04/01 (Tue)
Signal
PA 4 released
04/03 (Thu)
I/O and Network programming
04/08 (Tue)
Network programming
04/10 (Thu)
No Class
MH is busy for a day-long meeting
04/15 (Tue)
Concurrency issues and bug
04/17 (Thu)
Recap & closing
PA 4 due Done with classes!
04/22 (Tue)
No Class (exam preparation)
04/24 (Thu)
No Class (exam preparation)
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
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.
For information on version control and how to use Git, see:
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.
A repo named wsu-cpts360-term/paX-name
will be automatically created for you and hosted on GitHub with the starter code.
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.
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.
Important: To better prepare yourself for office hours and posting Teams interactions, read carefully the excellent guides from :
This course uses materials from , , , , , , , , , , , and .
The course syllabus is available .
[CSAPP] , 3rd edition, by and .
[OSTEP] by and .
[LKMPG] , Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang. This book is helpful for Lab 3.
Informal early feedback () PA 1 due
Late submissions will not accepted The date/time is chosen based on the
Apple Silicon Mac (, )
Note: for Windows systems, is not recommended. You must install a standalone VM image.
We will use to deliver programming assignments. This way, you can better manage your assignments using a widely-used version control system, .
To learn more about GitHub workflow, see .
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 . Install GitHub CLI using the instructions given . Then run the following command and follow the prompts to authenticate your system: gh auth login
.
, By
GDB ,
GitHub Classroom: ,