Term: Fall 2026

Instructor: Kelly Shiptoski

Course Info

Welcome to CS223: Systems Programming!

matrix original

Systems programming is the foundation of all software and toolkits that serve as infrastructure for other software, such as compilers, operating systems, networking APIs, and graphics engines. Systems programming directly interacts with machine characteristics and low-level data types. Class topics include pointers, bit representations of data, x86_64 assembly, memory management, processes, and threads. In this class, students will gain hands-on experience implementing low-level algorithms and data structures using C. Additionally, students will build technical skills related to makefiles, interactive debugging, version control, and command-line shell interaction. Modern improvements and an introduction to the Rust programming language will be covered at the end of the course.

Meeting Times

Activity Location Time

Lecture

Park 245

Mondays and Wednesdays 1:10 PM - 2:30 PM

Lab

Park 231

Wednesdays 2:40 PM - 4:00 PM

Office Hours - Prof. Kelly Shiptoski

Park 204

(Tentative) Wednesdays 4:00 PM - 5:00 PM, Thursdays 2:30 PM - 3:30 PM, and by appointment

TA Office Hours - Linh Nguyen

TBA

Fridays 3:00 PM - 5:00 PM

Schedule

The syllabus may change during the semester. Please check here every week for updates on lecture content, worksheets, and assignments.

Week Date Agenda Resources

1

August 31, September 2

Introductions, Hello C

2

September 7 (No Class: Labor Day), 9

Introduction to Pointers

3

September 14, 16

Pointers Continued, NCurses Library, Intro to Data Structures in C

  • Topics: Remaining pointer topics, editor design and implementation, linked lists, trees

  • Read: 2.7.5. Self-Referential Structs

  • Assignment 02: Strings, Structs, & Arrays (due September 18)

  • Lab Feb 3: Practice Quiz 01

4

September 21, 23

Data Structures in C Continued, Introduction to Binary and Data Representation

  • Topics: number systems, integer/float/char binary formats, struct layouts, endianess

  • Read: Chapter 4.1-4.9

  • Assignment 03: Fun with Malloc (due September 25)

  • Lab September 23: Quiz 01: 50 minutes

5

September 28, 30

Binary Continued, Bitwise operators, Introduction to Assembly

  • Topics: bitwise operators, shifts, masking, working with bit fields

  • Read: Section 5, 5.1

  • Read: Chapter 6

  • Assignment 04: Fun with Pointers (due October 2)

  • Lab September 30: Code Jam 02

6

October 5, 7

Assembly

  • Topics: instruction set architecture, machine code, memory forms, x86_64 instructions

  • Read: Chapter 7 (7.1-7.3,7.5,7.10), 10

  • Assignment 05: TBA (due October 9)

  • Lab 7: Quiz 02 Practice

7

October 12, 14

Fall Break

  • NO LECTURES, LABS, HOMEWORKS

8

October 19, 21

Assembly, The operating system

  • Topics: Tracing assembly, loops, conditionals

  • Topics: what is an operating system?, System calls

  • Read: Chapter 7 (7.1-7.3,7.5,7.10), 10

  • Assignment 06: TBA (due October 23)

  • Lab October 21: Quiz 02

9

October 26, 28

Midterm (TBD), Processes

  • Topics: Processes, fork, signals

  • Read: Chapter 13

  • Assignment 07: Some Assembly Required (due October 30)

  • Lab October 28: Code Jam 03

10

November 2, 4

Threads I

11

November 9, 11

Threads II

  • Topics: synchronization, deadlock, producer/consumer pattern

  • Read: Chapter 14

  • Assignment 09: Trust the Process (due November 13)

  • Lab November 11: Quiz 03: 50 minutes

12

November 16, 18

Threads III, Memory

  • Topics: Thread safety, thread performance

  • Topics: Memory hierarchy, spatial/temporal locality, caching

  • Read:"My malloc: mylloc and mhysa" by Johan Montelius

  • Read: Chapter 11.1-11.3

  • Assignment 10: Multiprocess & Multithread (due November 20)

  • Lab November 18: Code Jam 04

13

November 23, 25

Malloc, Code Optimization

  • Topics: TBD

  • Read: Chapter 12

  • Lab November 25: Practice Quiz 04

14

November 30, December 2

Introduction to Rust

  • Topics: Ownership and the Borrow Checker, Rust Abstractions Compared to C equivalents

  • Assignment 11: Sync or Swim (due December 4)

  • Lab December 2: Quiz 04

15

December 7, 9

Rust as a Systems Language, Final Review

  • Topics: Files + I/O, Threads, Shared State, Send / Sync, Final Review

  • Assignment 12: Let’s Get Rusty (due December 11)

  • Lab December 9: Final Review / Practice Final

Text and Tools

  • Dive into Systems by Suzanne J. Matthews, Tia Newhall, and Kevin C. Webb. Available free online from Dive into Systems

  • Data Structures in C by Mark Allen Weiss

  • Github Account Please go to github.com and register. You will be using github to submit assignments.

  • Slack Please go to slack.com. Our workspace is BrynMawr-CS223-S26. You can ask questions and request one-on-one help over zoom using this course’s slack channel.

Grading Policies

All graded work will receive a grade, 4.0, 3.7, 3.3, 3.0, 2.7, 2.3, 2.0, 1.7, 1.3, 1.0, or 0.0. At the end of the semester, final grades will be calculated as a weighted average of all grades according to the following weights:

35%

Final Exam

35%

Midterm Exam

10%

Assignments

15%

Code jams and quizzes

5%

Lab practice and class participation

Labs, quizzes, exams

Labs and Quizzes are mandatory. No credit is possible for missed quizzes. If you must miss a quiz, you must make arrangements to take the quiz at another time BEFORE the scheduled quiz. If you miss a quiz for medical reasons, you must provide a doctor’s note.

Labs will consist of hands-on practice in teams, alternating each week between written exercises and timed coding sessions. Coding sessions will be graded and count towards your quiz grade. Worksheets count towards your participation grade.

There will be one midterm exam and final exam for the semester. Details and dates will be released during the semester. Please read the section on accommodations if you are in need of extra time. You must inform us of accommodations or conflicts at least 2 weeks in advance of the exam.

Quizzes and exams will be closed book.

Late Policy

No extensions will be given. Assignments will be accepted for up to 48 hours after the deadline. 20% penalty applied for every 24 hours the assignment is late.

Academic Integrity

At Bryn Mawr, we assume students are trustworthy and work with honesty and integrity. Look here for information about Bryn Mawr’s Honor Code..

Midterms and the final will be closed book.

Lab coding challenges will be open-book and closed-internet. Thus, you cannot use VS Code, internet browsers, and other programming aids. However, you can use the text book, Dive into Systems, the Linux Programming Manual (available with man), and your class notes. These challenges will be completed in pairs.

Code for homework assignments must be written by you. In addition to the code itself, each assignment will require the submission of a README file explaining how the code works, why it was written that way, and, if applicable, what parts are not working and your reasoning behind those issues. Cheating is taken very seriously, and the use of AI tools is considered cheating.

You can ask questions in class, in office hours, and on slack. We are here to help.

Academic Accommodations

To receive an accommodation for a course activity (such as more time on quizzes and exams), you must have an Accommodation Letter from Access Services and you need to contact us to work out the details of your accommodation at least two weeks prior to the activity. Forms can be emailed to me, the instructor.

You are also welcome to contact us privately to discuss your academic needs. However, all accommodations must be arranged, in advance, through Access Services. Also note that accommodations are not retroactive and require advance notice to implement. More information can be obtained at the Access Services website. (http://www.brynmawr.edu/access-services/)

Covid Policy

If you are sick, please wear a mask or stay at home and let me know so that we can reschedule your missed work.

I am on immmunosuppressing medications, so I can get sick very easily, and I get very ill when I am sick. I am kindly asking you to follow this policy.

Academic support

Title IX

Bryn Mawr/Haverford College is committed to fostering a safe and inclusive living and learning environment where all can feel secure and free from harassment. All forms of sexual misconduct, including sexual assault, sexual harassment, stalking, domestic violence, and dating violence are violations of Bryn Mawr/Haverford’s policies, whether they occur on or off campus. Bryn Mawr/Haverford faculty are committed to helping to create a safe learning environment for all students and for the College community as a whole. If you have experienced any form of gender or sex-based discrimination, harassment, or violence, know that help and support are available. Staff members are trained to support students in navigating campus life, accessing health and counseling services, providing academic and housing accommodations, and more.

The College strongly encourages all students to report any incidents of sexual misconduct. Please be aware that all Bryn Mawr/Haverford employees (other than those designated as confidential resources such as counselors, clergy, and healthcare providers) are required to report information about such discrimination and harassment to the Bi-College Title IX Coordinator.

Information about the College’s Sexual Misconduct policy, reporting options, and a list of campus and local resources can be found on the College’s website: