CSCI 415/515 - Fall 2023
Systems Programming


Syllabus

General Course Information

Instructor Stephen Herwig Office Hours:
WMF 11:00am - 12:00pm, or by appt.
McGlothlin-Street Hall
Room #136
Teaching Assistant Mostafa Ahmed
mnahmed@wm.edu
TuTh, 12:30pm - 1:50pm
McGlothlin-Street Hall
Room #139
Time/Place WMF 10:00am - 10:50am
Blow Memorial Hall
Room #332
Final Exam Wed 12/13: 2:00pm - 5:00pm
  • take-home
  • open-book; open-Internet

Roadmap

Readings Project Notes
Warm-up Weeks 1 and 2 (Wed 8/30 - Fri 9/8)
The Linux Programming Interface:
  • Ch 1: History and Standards
  • Ch 2: Fundamental Concepts
  • Ch 3: Systems Programming Concepts
  • Ch 7: Memory Allocation
  • Appendix B: Parsing Command-Line Options
p1: sgrep
Due: Thu 9/14 @7:00am
  • Mon 9/4: No class (Labor Day)
File I/O and File Systems Weeks 3 and 4 (Mon 9/11 - Fri 9/22)
The Linux Programming Interface:
  • Ch 4: File I/O: The Universal I/O Model
  • Ch 5: File I/O: Further Details
  • Ch 14: File Systems
  • Ch 15: File Attributes
  • Ch 18: Directories and Links
  • Ch 13: File I/O Buffering
p2: fedit
Due: Tue 9/26 @7:00am
  • Mon 9/11: Course drop/add deadline
Signals and Timers Week 5 (Mon 9/25 - Fri 9/29)
The Linux Programming Interface:
  • Ch 20: Signals: Fundamental Concepts
  • Ch 21: Signals: Handlers
  • Ch 22: Signals: Advanced Features
  • Ch 23: Timers and Sleeping
  • Ch 10: Time
p3: mcron
Due: Thu 10/12 @7:00am
Shell Scripting Week 6 (Mon 10/2 - Fri 10/6)
Shell Programming in Unix, Linux, and OS X
  • Ch 1-9, 12
extra credit: cyphr.sh
Due: Tue 12/19 @11:59pm
Processes and Pipes Weeks 7 and 8 (Mon 10/9 - Fri 10/20)
The Linux Programming Interface:
  • Ch 24: Process Creation
  • Ch 25: Process Termination
  • Ch 26: Monitoring Child Processes
  • Ch 27: Program Execution
  • Ch 44: Pipes and FIFOs
  • Ch 28: Process Creation and Program Execution in More Detail
  • Ch 6: Processes
p4: bsh
Due: Mon 10/30 @ 7:00am
  • Fri 10/13: No class (Fall Break)
Sockets Weeks 9, 10, 11 (Mon 10/23 - Fri 11/10)
The Linux Programming Interface:
  • Ch 58: Sockets: Fundamentals of TCP/IP Networks
  • Ch 56: Sockets Introduction
  • Ch 59: Sockets: Internet Domains
  • Ch 60: Sockets: Server Design
  • Ch 63: Alternative I/O Models
p5: adns
Due: Fri 11/17 @ 7:00am
  • Mon 10/30: Withdraw deadline
  • Mon 10/30: No class
Threads Weeks 12, 13 (Mon 11/13 - Fri 11/24)
The Linux Programming Interface:
  • Ch 29: Threads: Introduction
  • Ch 30: Threads: Synchronization
  • Ch 31: Threads: Thread Safety and Per-Thread Storage
p6: revlookup
Due: Fri 12/8 @ 5:00pm
  • Mon 11/20: Remote class
  • Wed 11/22: No class (Thanksgiving Break)
  • Fri 11/24: No class (Thanksgiving Break)
Rust Week 14 (Mon 11/27 - Fri 12/1)
Review Week 15 (Mon 12/4 - Fri 12/8)
  • Fri 12/8: No class