Course Schedule

1

Introduction and a dash of *nix

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Resources: VMs and Ubuntu (Google Drive) · VMs and Ubuntu (Survey) · Arch: Behind the Curtain (Google Drive) · Arch: Behind the Curtain (Survey)

Syllabus week! Today we will look at what this course is and how it's organized and then jump right into talking about one of my favorite things: command lines.

  • Introduction
  • Course overview
  • Intro to *nix
  • What is a command line?
  • Why a command line?
  • Live command line demo

Basic

Due Fri, Sep 18 at 11:59 pm: pdf · LaTeX

  • Installing Ubuntu on a VM
  • Some light reading

Advanced

Due Wed, Sep 30 at 11:59 pm: pdf · LaTeX

  • Installing Arch on a VM
  • Setting up a graphical environment in Arch

2

GITing started

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be taking a bit of a detour and looking at the basics of version control and Git

  • Recap of Lec 1
  • What is version control?
  • Basic Git flow
  • Git branches
  • A taste of Git remotes

Basic

Due Wed, Sep 30 at 11:59 pm: pdf · LaTeX

  • Setting up an existing code base
  • Making and merging topic/feature branches
  • Setting up a remote

Advanced

Due Wed, Sep 30 at 11:59 pm: pdf · LaTeX

  • Recovering data with Git

3

Unix and You

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be looking at Unix and its workings and how they tie into Bash and other shells.

  • What is Unix?
  • How does Unix work?
  • Interacting with Unix via Shells
  • Bash

Basic

Due Wed, Oct 14 at 11:59 pm: pdf · LaTeX

  • Redirection
  • Pipelines
  • Variables
  • Expansion

Advanced

Due Wed, Oct 14 at 11:59 pm: pdf · LaTeX

  • Small testing framework
  • Writing a minimal shell

4

Review and Regular Expressions

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be reviewing and working through some examples and using Bash and then go into regular expressions.

  • Reviewing Bash
  • Regular expressions

Basic

Due Fri, Oct 23 at 11:59 pm: pdf · LaTeX

  • Regexes with grep
  • Regexes with sed

Advanced

Due Fri, Oct 23 at 11:59 pm: pdf · LaTeX

  • Pig Latin conversion with sed

5

Git Gud

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be reviewing and working through some examples and using Bash and then go into regular expressions.

  • Rewriting history
  • Stashing
  • Remotes
  • Workflows
  • Merge conflicts

Basic

Due Wed, Oct 28 at 11:59 pm: pdf · LaTeX

  • Changing remotes
  • Dealing with a merge conflict
  • Cleaning up by rebasing

Advanced

Due Wed, Oct 28 at 11:59 pm: pdf · LaTeX

  • Git hooks

6

Text Editors

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be looking at text editor history and look at more "advanced" text editor features, featuring vim

  • Text editor history
  • vim

Basic

Due Fri, Oct 30 at 11:59 pm: pdf · LaTeX

  • Getting familiar with terminal editors

Advanced

Due Fri, Oct 30 at 11:59 pm: pdf · LaTeX

  • Extending editors

7

Build Systems

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be looking at how code gets built and the tools that help them out

  • Building programs
  • Build systems
  • Make

Basic

Due Fri, Nov 13 at 11:59 pm: pdf · LaTeX

  • Basic Makefile
  • Makefile phonies
  • Makefile dependencies
  • Variables and reuse

Advanced

Due Fri, Nov 13 at 11:59 pm: pdf · LaTeX

  • More Make
  • CMake

8

Python

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be taking a look at this fancy Python thing

  • Higher level scripting
  • What is Python?
  • Python extras

Basic

Due Fri, Nov 20 at 11:59 pm: pdf · LaTeX

  • Getting settled with Python

Advanced

Due Fri, Nov 20 at 11:59 pm: pdf · LaTeX

  • MATLAB alternative
  • Your own path

9

Debugging

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

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

  • printf
  • Logging
  • GDB
  • Valgrind

Basic

Due Wed, Dec 02 at 11:59 pm: pdf · LaTeX

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

Advanced

Due Wed, Dec 02 at 11:59 pm: pdf · LaTeX

  • Debugging a running process
  • Your debugging process
  • Pretty printing

Cancelled

Lecture

Enjoy a week off!

Basic

Advanced

Due Fri, Dec 04 at 11:59 pm: pdf · LaTeX

  • How's it going?

10

Libraries

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

We'll be looking into the idea of libraries, how to use them, and how to create them. This lecture will be in the context of C and C++, but the general idea can apply to other languages as well.

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

Basic

Due Fri, Dec 04 at 11:59 pm: pdf · LaTeX

  • Linking against libraries
  • Creating libraries

Advanced

Due Fri, Dec 04 at 11:59 pm: pdf · LaTeX

  • Runtime library linking

11

Testing

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

We'll be taking a dip into testing software

  • What is and why testing?
  • Kinds of testing
  • Unit testing
  • Test-driven development
  • Live TTD demo

Basic

Advanced

12

Staff lectures and conclusion

Lecture

Slides: remark(down) · pdf · Arav's · Sowgandhi's

Lecture Recordings: Google Drive

Lecture Survey

We'll hand the floor over to our IAs to give some small lectures

  • Staff lectures

Basic

Advanced