Lectures

DateDescription
March 26 Course intro; Linux basics [intro notes] [shell basics notes]
March 28 Processes, users, shell characters, emacs [notes]
March 30 I/O redirection, shell scripts [notes]
April 2 Shell variables, more shell scripts [notes] [makethumbnail] [fibonacci] [countdown]
April 4 Shell scripts (concl.) [notes] [sdel]
April 6 Regular expressions & grep [notes] [words file] [gnu grep manual]
April 9 sed [notes] [gnu sed manual]
April 11 Introduction to C [notes] [hello.c]
April 13 C: control, declarations, preprocessor, printf [notes] [echo.c]
April 16 C: parameters, scope, left vs. right expressions [notes] [mystery1] [mystery2] [mystery3] [mystery4] [dangling]
April 18 gdb [notes] [reverse.c (buggy)] [reverse.c (fixed)] [demo]
April 20 More pointers, structs [notes] [pointer mystery (hard)] [point.c]
April 23 malloc/free, linked lists [notes] [linked list]
April 25 data structures, tries [notes] [linked list with remove] [Old slides about T9]
April 30 Preprocessor revisited, multifile programs [notes] [files]
May 2 Tools: make and build dependencies [notes] [files]
May 4 git, version control [notes]
May 7 Intro to hw6 [notes]
May 9 More memory management [notes]
May 11 Testing, specifications [notes]
May 14 Buffer overflows [notes]
May 16 Intro to C++ [notes] [hello.cpp]
May 18 C++ Classes [notes] [files]
May 21 C++ Subclasses and Inheritance [notes] [files]
May 23 More C++
May 25 shared-memory concurrency and mutual exclusion [notes]
May 30 programming with locks and critical sections [notes] [files]
June 1 Wrap-up & review [notes]