Course Schedule

1

Introduction and a dash of *nix

Jan 07, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap. · Google Drive

Lecture 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 Wed, Jan 26 at 11:59 pm: pdf

  • Getting access to Unix(-like) command line
  • Getting access to the course server
  • Some light reading

Advanced

2

GITing started

Jan 14, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap. · 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 Fri, Feb 04 at 11:59 pm: pdf

  • Connecting to the course server
  • Setting up an existing code base
  • Making and merging topic/feature branches
  • Setting up a remote
  • Running the autograder

Advanced

Due Wed, Feb 02 at 11:59 pm: pdf

  • Recovering data with Git

3

Unix and You

Jan 21, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap. · 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

Basic

Due Fri, Feb 11 at 11:59 pm: pdf

  • Redirection
  • Pipelines
  • Variables

Advanced

Due Sat, Feb 12 at 11:59 pm: pdf

  • Writing a minimal shell

4

Shells

Jan 28, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Shells · Shell configuration · Shells (Google Drive) · Shell Configuration (Google Drive)

Lecture Survey

Today we'll be at how to take advantage of Bash.

  • Shell operation
  • Expansion
  • Control flow
  • Scripts
  • Configuration

Basic

Due Wed, Feb 23 at 11:59 pm: pdf

  • Pipelines
  • Expansions
  • Control flow
  • Functions
  • Scripting

Advanced

Due Wed, Feb 23 at 11:59 pm: pdf

  • Shell prompt configuration

5

Regular Expressions

Feb 04, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap. · Google Drive

Lecture Survey

Today we'll be going into regular expressions.

  • Regular expressions

Basic

Due Wed, Mar 09 at 11:59 pm: pdf

  • Regexes with grep
  • Regexes with sed

Advanced

Due Wed, Mar 09 at 11:59 pm: pdf

  • Pig Latin conversion with sed

6

Git Gud

Feb 11, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap. · 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 Fri, Mar 18 at 11:59 pm: pdf

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

Advanced

Due Fri, Mar 18 at 11:59 pm: pdf

  • Git hooks

7

Potpourri

Feb 18, 2021

Lecture

Slides: remark(down) · pdf

Lecture Recordings: Google Drive

Lecture Survey

Today we'll be discussing a medley of topics

  • How do computers understand us?
  • Fields and jobs in EECS

Basic

Due Fri, Apr 15 at 11:59 pm: pdf

  • Internship hunt

Advanced

8

Text Editors

Feb 25, 2022

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 Wed, Mar 30 at 11:59 pm: pdf

  • Getting familiar with terminal editors

Advanced

Due Wed, Mar 30 at 11:59 pm: pdf

  • Extending editors

Break

Lecture

Enjoy your (spring?) break!

Basic

Advanced

9

Build Systems

Mar 11, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap.

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 Wed, Apr 06 at 11:59 pm: pdf

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

Advanced

Due Wed, Apr 06 at 11:59 pm: pdf

  • More Make
  • CMake

10

Python

Mar 18, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap.

Lecture Survey

Today we'll be taking a look at how to program a snake

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

Basic

Due Fri, Apr 08 at 11:59 pm: pdf

  • Getting settled with Python

Advanced

Due Fri, Apr 08 at 11:59 pm: pdf

  • MATLAB alternative
  • Your own path

11

Debugging

Mar 25, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap.

Lecture Survey

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

  • printf
  • Logging
  • GDB
  • Valgrind

Basic

Due Wed, Apr 13 at 11:59 pm: pdf

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

Advanced

Due Wed, Apr 13 at 11:59 pm: pdf

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

12

Libraries

Apr 01, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap.

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 Wed, Apr 20 at 11:59 pm: pdf

  • Linking against libraries
  • Creating libraries

Advanced

Due Wed, Apr 20 at 11:59 pm: pdf

  • Runtime library linking

13

Testing

Apr 08, 2022

Lecture

Slides: remark(down) · pdf

Lecture Recordings: CoE Lec. Cap.

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

14

Staff lectures and conclusion

Apr 15, 2022

Lecture

Slides: remark(down) · pdf · Sowgandhi's · John Paul's

Lecture Recordings: Part 1 · Part 2

Lecture Survey

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

  • Staff lectures

Basic

Due Wed, Apr 27 at 11:59 pm: pdf

  • How's it going?

Advanced

Due Wed, Apr 27 at 11:59 pm: pdf

  • Downloading course resources

GNU/Linux experience (supplemental)

Lecture

Slides: remark(down) · pdf

Lecture Recordings: GNU/Linux · Steal his look

Lecture Survey

This is a supplemental lecture for people interested in running a bone-fide GNU/Linux system. I did a live presentation in class which...ran into some snags. I did do a pre-recorded version last semester which is more structured and doesn't run into nearly as many snags, whose recordings are here.

  • Virtual machines
  • GNU/Linux installation experiences
  • "Steal his look"

Basic

Advanced