Students in Software Systems work on two projects, roughly five weeks each, chosen to help them develop depth in one of the areas where C and C++ are most commonly used. In some cases, projects follow online tutorials or exercises from classes at other schools.
For many teams, the first project is primarily about learning C or C++; the second project applies that skill to learning about a domain. The following are resources students might find useful.
Here is an excellent collection of links to C/C++ tutorials.
See the reports from Project 1 for ideas and resources.
0) Learning C
These labs that go with Computer Systems: A Programmer's Perspective
Lots of interesting examples here
The Linux Programming Interface
Understanding C by learning assembly
Operating Systems: From 0 to 1
The little book about OS development
Install (and maybe modify) a microkernel
Homeworks from Operating Systems: Three Easy Pieces
The Eudyptula Challenge: programming exercises for the Linux kernel
FIle system lab from an MIT class
Exercises from Distributed Systems: Concepts and Design
Udemy class: High Performance Scientific Computing with C
Online book: Principles of Scientific Computing
Classic text, full of code, but not very good quality C because its translated from FORTRAN: Numerical Recipes in C
Video from SIGGRAPH University : "An Introduction to OpenGL Programming"
This blog article has good info about OpenGL and related libraries, and links to tutorials
An Even Easier Introduction to CUDA
The Arduino synthesizer project from a previous iteration of SoftSys
RTL-SDR (RTL2832U) and software defined radio