Course Schedule

1

Introduction, VMs, and a bit of *nix

Lecture

Slides: Google Sheets

Lecture Recordings: Friday

Syllabus week! Today we had an introduction to the class, talked a little bit about *nix and VMs, then did a brief demo on the power of the command line. A light week overall.

  • Introduction
  • Course overview
  • A bit of *nix
  • A bit of VMs
  • Live command line demo

Homework

Due Fri, Jan 24 at 11:59 pm: pdf · LaTeX

  • Installing Ubuntu on a VM
  • Some light reading

Advanced Assignment

Due Fri, Jan 31 at 11:59 pm: pdf · LaTeX

  • Installing a highly customizable Linux distro on a VM

2

Unix and You

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be looking into what Unix is, how it's structured, and how to work in an Unix environment including shells and environment.

  • More Introductions
  • Unix history
  • Shells
  • Files
  • Environment variables
  • Scripting

Homework

Due Mon, Feb 03 at 11:59 pm: pdf · LaTeX

  • Messing with environment variables
  • Scripting

Advanced Assignment

Due Mon, Feb 03 at 11:59 pm: pdf · LaTeX

  • Playing with the prompt
  • Tab completion
  • Automating testing
  • POSIX programming

3

GITing Started

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be introducing version control and looking into how to get started using Git.

  • Week 2 recap and clarifications
  • Version control introduction
  • Git overview
  • Git local work
  • Git branching
  • Git remotes

Homework

Due Mon, Feb 10 at 11:59 pm: pdf · LaTeX

  • Setting up an existing code base
  • Making and merging topics
  • Setting up a remote

Advanced Assignment

Due Mon, Feb 10 at 11:59 pm: pdf · LaTeX

  • Recovering data with Git
  • Git hooks

4

Text Editors

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be looking at various text editors, be they in the terminal or GUI

  • nano
  • vim
  • emacs
  • gedit

Homework

Due Mon, Feb 17 at 11:59 pm: pdf · LaTeX

  • Advanced terminal editor features
  • Working remotely with SSH

Advanced Assignment

Due Mon, Feb 17 at 11:59 pm: pdf · LaTeX

  • Code navigation tools
  • Editor plugins

5

Unix++

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be revisiting the Unix environment and looking more at how to wrangle the command line to do our bidding.

  • File descriptors
  • Deeper look into Bash
  • Regular expressions

Homework

Due Mon, Mar 02 at 11:59 pm: pdf · LaTeX

  • Regular expressions
  • Symbolic links
  • find
  • sed

Advanced Assignment

Due Wed, Feb 26 at 11:59 pm: pdf · LaTeX

  • Automating security
  • More sed fun
  • Option parsing

6

Git Gud

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be taking another look at Git and how to play nicely with others.

  • Rewriting history
  • Stashing
  • Remotes
  • Workflows

Homework

Due Wed, Mar 11 at 11:59 pm: pdf · LaTeX

  • Merge conflicts
  • Cleaning up history

Advanced Assignment

Due Wed, Mar 11 at 11:59 pm: pdf · LaTeX

  • Merge/pull requests

7

Build Systems

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be looking at how to build applications.

  • Build systems
  • Make

Homework

Due Wed, Mar 25 at 11:59 pm: pdf · LaTeX

  • Creating a Makefile from scratch
  • .PHONY targets
  • Prerequisites/dependencies

Advanced Assignment

Due Wed, Mar 25 at 11:59 pm: pdf · LaTeX

  • Custom Makefile
  • Another build system

8

Debugging

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be looking at methods for debugging C/C++ programs

  • printf
  • Logging
  • GDB
  • Valgrind

Homework

Due Fri, Apr 03 at 11:59 pm: pdf · LaTeX

  • Using GDB to debug a C/C++ program
  • Using Valgrind to check for memory errors

Advanced Assignment

Due Fri, Apr 03 at 11:59 pm: pdf · LaTeX

  • Attaching to a running process
  • Your debugging process
  • Pretty printing

Winter/Spring Break!

Lecture

No lecture!

Homework

Advanced Assignment

Cancelled due to COVID-19

Lecture

Classes this week are canceled as part of university-wide COVID-19 prevention measures. Be on the lookout for a Canvas announcement detailing how this course will proceed. I hope you all stay well for the rest semester.

Homework

Advanced Assignment

9

Python!

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be taking a look at this fancy Python thing.

  • What is Python?
  • Python fundamentals
  • Python extras

Homework

Due Fri, Apr 10 at 11:59 pm: pdf · LaTeX

  • Ramping up with Python

Advanced Assignment

Due Fri, Apr 10 at 11:59 pm: pdf · LaTeX

  • Status update
  • Debugging
  • Who needs MATLAB?

10

Libraries

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Friday

We'll be looking into the idea of libraries, how to use them, and how to create them, particularly in the context of C and C++ programs. Similar ideas may apply to other languages as well.

  • What are libraries?
  • Using existing libraries
  • Creating your own

Homework

Due Fri, Apr 17 at 11:59 pm: pdf · LaTeX

  • Linking against libraries
  • Creating libraries

Advanced Assignment

Due Tue, Apr 21 at 11:59 pm: pdf · LaTeX

  • Playing with a ncurses
  • Playing with SDL2
  • Runtime library linking

Cancelled (grading your homework)

Lecture

Homework

Advanced Assignment

Cancelled (grading your homework)

Lecture

Homework

Advanced Assignment

11

Hardware pragmatics

Lecture

Slides: remark(down) · pdf

We'll be looking at how the more academic side of computer hardware ties into the real world, as well as answer questions that you have asked.

  • Hardware and the real world
  • Answering your questions

Homework

Advanced Assignment