home blog portfolio Ian Fisher

CS644, spring 2025

The spring 2025 edition of CS644: Intro to Systems Programming, taught at FractalU in New York City.

CS644 is an introduction to systems programming via the Linux system interface. It covers the basic operations and concepts that all Linux software is built on top of, including files, processes, IPC, networking, multithreading, and signals.

Schedule

Solutions to each week's homework will be posted following the next week's class.

Week Date Topic
Week 1 2/18 Course introduction
Week 2 2/25 Filesystems, part 1
Week 3 3/4 Filesystems, part 2
Week 4 3/11 Process control
Week 5 3/18 Interprocess communication
Week 6 3/25 Networking
Week 7 4/1 Multithreading
Week 8 4/8 Signals
Week 9 4/15 Advanced I/O
Week 10 4/22 Review

Homework exercises

Each homework exercise has a rating in stars. One star means you should be able to answer it solely by reading the course materials. Two stars means you will have to do some outside work (e.g., writing code), but it shouldn't take more than 30 minutes. Three star exercises are more open-ended and challenging.

I recommend completing all one-star exercises, as many two-star exercises as you can, and trying a couple three-star exercises per week that strike your fancy.

Final project

Throughout the course, you will work on a capstone project that ties together all the topics we cover in lecture. Each week there will be a core milestone to reach, but also many opportunities for you to customize your project.

Languages

Lecture examples will be in C. You may use any language you wish to complete the homework exercises and final project.

Languages you can definitely use:

Languages you definitely can't use:

If your favorite language is not on either list, check with me.

The shared server

We have a shared Linux cloud server running Ubuntu 24.01 for our coursework. If you are enrolled in the course, I emailed you log-in instructions.

Guidelines

Installed software

If there is anything else you would like installed, let me know.

Remote development

Both standard Vim and Neovim are installed on the server, if you'd like to do everything on the command line.

If you want to use VS Code running on your laptop, follow these steps to set up remote development.

Sharing files

Your home directory is private. If you want to share a file with your classmates, you can put it in /home/shared/$USER (note that everyone else has both read and write access).

Collaboration

You are welcome and encouraged to collaborate on homework exercises. I recommend doing your own final project, though.

Source code

Source code for the course is available at https://github.com/iafisher/cs644.