Term: Fall 2025

Instructor: Aline Normoyle

  • Welcome to systems programming!

  • Congratulations to last week’s worksheet champions: JE2, U.G., and NY.

  • Coding challenge 03 will be in Lab, October 28.

  • Assignment 04 is due on October 31st. Assignment checkins are due during office hours on October 23rd and 24th.

  • The final exam will be on Tuesday, December 16th at 9:30 AM (3 hours, closed book, 1 written cheat sheet)

Course Info

Welcome to CS223: Systems Programming!

matrix original

Systems programming is the foundation for creating software that serves as controllers and infrastructure, such as drivers, embedded system controllers, compilers, databases, operating systems, networking APIs, and graphics engines. Systems programming involves writing code that directly interacts with hardware, memory, or the operating system. 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. C++ and STL will be introduced at the end of the course.

Meeting Times

Activity Location Time

Lecture

Park 337

Tuesday and Thursday 10:10 AM - 11:30 AM

Lab

Park 230

Tuesdays 2:40 PM - 4:00 PM

Office Hours - Prof. Aline Normoyle

Zoom (See slack for details)

3-4 PM

Office Hours - Rebecca Lassman

Park 230/231

Fridays 6-8 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

September 2, 4

Introductions, Hello C

  • Topics: Programming at the command line, Makefiles, From Java to C, strings, arrays, function stack, basic pointers

  • Read: Chapter 1: From JAVA to C

  • Assignment 01: Due Friday, September 5th

  • Lab: SSH and Github setup

2

September 9, 11

More C, Pointers

3

September 16, 18

Data structures in C

4

September 23, 25

Binary and Data Representations

  • Topics: Designing data structures in C

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

  • Read: Chapter 4.1-4.9

  • Assignment 03: Due Friday, Oct 3rd

  • Lab: Check-ins

  • Congrats to this week’s worksheet champions: Stackers and Turtles

5

September 30, Oct 2

Bitwise operators, Introduction to Assembly

6

October 7, 9

Assembly, Review

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

  • Lab: Systems Quizzo

  • Midterm 01: In-class Thursday, October 9th (80 minutes)

  • Assignment 04: Due Friday, October 31st

7

October 14, 16

Break

  • NO LECTURES, LABS, HOMEWORKS

8

October 21, 23

Assembly

  • topics: Tracing assembly, buffer exploits, loops, conditionals

  • Read: Chapter 13, skip section 13.3

  • Lab: Check-ins, worksheet practice. Congratulations to last week’s worksheet champions: JE2, U.G., and NY.

  • Assignment 04: Office hour check-ins due

9

October 28, 30

The operating system, processes, fork

  • Topics: what is an operating system?, system calls, processes, fork

  • Lab: Coding Challenge 03, Coding problems 3

  • Assignment 04: Due Friday, October 31st

TBD

10

November 4, 6

Threads I

TBD

11

November 11, 13

Threads II

  • topics: performance, deadlock, thread safety, producer/consumer pattern

  • Lab: Coding Challenge 04, Coding problems 4

  • Assignment 06: Office hours check-ins due

12

November 18, 20

Threads III, Memory, memory allocation

13

November 25, 27

Memory, allocation

  • Lab: Memory allocators

  • Read:"My malloc: mylloc and mhysa" by Johan Montelius (see slack)

  • Read: Chapter 11.1-11.3

  • Thanksgiving: No Class Thursday

14

December 2, 4

Review and midterm 2

  • Midterm 02, In-class Thursday, December 4th (80 minutes)

  • Lab: Review

15

December 9, 11

Code Optimization, C++

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-S25. 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:

40%

Final Exam

15%

Assignments

20%

Lab code activities

20%

Midterms

5%

Attendance and participation

Late Policy

You may always request 1 late day for any assignment.

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. You may work with others and with online materials for assignments, but you will be expected to explain and reproduce your submitted assignment on your own.

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 the Office of Student Disability 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 disability-related accommodations must be arranged, in advance, through Student Disability 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/)

Academic support