Weekly Syllabus


Date

Topic

Reading

Notes

January 18
Introduction / Course Overview   Introductory notes




January 23
The System Interface - background
Ch. 1
Old Linux notes (for background to how syscalls are made)
January 25
Libraries versus system calls
Ch. 3
Assignment 0 (primer)




January 30
Assignment 0 discussion
Building static and dynamic libraries
From the links in the assignment, read about static and dynamic libraries, and the BFD library
Notes on benchmarking time measurements

Also see information from the first lab
February 1
File I/O: file descriptors, unbuffered I/O etc
Ch. 3 Notes on file IO




February 6
File I/O operations, file descriptor duplication, file types, kernel data structures
Ch. 4 Notes on files and directories
February 8
File access rights, set-user/group-ID, file status (stat/fstat/lstat) etc
Ch. 4





February 13
Filesystems, i-nodes, hard vs symbolic links
Ch. 5 Primer assignment due February 14

You must demo your assignment in a lab time slot that will be available via a signup sheet

Please make sure all files are submitted via Gradescope before labs, as there will be a timeout for file uploads and you will not be graded otherwise.
February 15
The Standard I/O library: buffered I/O
Ch. 7 Assignment 1




February 20
Standard I/O library continued (writing your own printf, supporting variadic arguments, function calling conventions, comparison of buffering semantics)

Notes on the standard I/O Library
February 22
Assignment 1 discussion: file tree walking, grep/regular expressions Ch. 7
Notes on regular expressions
Additional notes on Perl, which has powerful regexp capabilities




February 27
Process control -- creation and execution
Ch. 8 Notes on process creation and execution
February 29
Process control -- environment, address spaces
Ch. 10 Notes on the process environment




March 5
Control flow -- setjmp/longjmp

Signals
Ch. 10 Assignment 1 due via Gradescope on March 6

Demos will be conducted during lab times
March 7
Signals
Ch. 11 Notes on signals




March 12
Spring Recess


March 14
Spring Recess






March 19
Overview of assignment 2

Introduction to threads: pthreads, creation, execution and termination
Ch. 11 Assignment 2

Notes on threads
Pthread example with circular buffer
Context function example
March 21
Thread concepts continued: synchronization (mutexes, condition variables), attributes, semantics

Producer -- consumer example
Ch. 15 Second & Third Editions of the textbook have a chapter on threads




March 26
Synchronous vs asynchronous communication -- Simpson's 4-slot vs fifo-buffered communication

Code examples

4-slot buffering example
Supporting Perl script to work with live gnuplots
March 28
Sigaltstack approach to portable multi-threading (code walkthrough)
Ch. 15
Portable multithreading
See technical paper in Assignment 2 for details of writing your own threads using sigaltstack, setjmp, and longjmp




April 2
Interprocess communication overview: pipes, FIFOs, semaphores, message queues, etc
Ch. 14 Notes on inter process communication 
April 4
Shared memory-based IPC Ch. 14





April 9
Non-blocking I/O, asynchronous I/O, I/O multiplexing, poll vs select

Assignment 2 due via Gradescope on April 10
April 11
Miscellaneous I/O topics: scatter-gather, memory-mapped I/O, Linux sendfile, record locking

Notes on advanced I/O topics




16
Assignment 3 discussion: sockets, web/file servers, serial communication/terminal I/O

Assignment 3 (Group Project)

Example socket files
Exam guide
18
Class Exam

Notes on network sockets




23
Physical computing: Arduino basics, Raspberry Pi basics
Physical computing and more advanced features: GPIOs, Linux sysfs, etc
See information on AVR libc, newlib (alternate C library implementations)
Example code (aactrl.c and aactrl.h) to show
how I use sockets to communicate between a remote
device (for me, an Android device) and a PC, followed by relaying commands from a PC to an Arduino via serial terminal IO
25
Short (5-10) minute slide presentations for group assignments -- Session 1





April 30
Short (5-10) minute slide presentations for group assignments -- Session 2    - Last Day of Classes -

Assignment 3 due 3 via Gradescope