Course Schedule

0

Syllabus

Sep 08, 2023

Content and Videos

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class Survey

Syllabus week! Today we will look at what this course is and how it's organized, and strategies for success.

  • Introduction
  • Course overview

Basic

Advanced

1

Intro and getting started

Sep 15, 2023

Content and Videos

1 - What is a command line?
2 - What is Unix?
3 - Getting around the Unix command line
4 - Playing around with the Unix command line
5 - Getting an SSH key

Quiz due at Fri, Sep 15 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class Survey

Let's get acquainted with the command line :)

  • What is a command line?
  • Intro to *nix

Basic

Due Fri, Sep 29 at 11:59 pm on Gradescope - pdf

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

Advanced

Cancelled

Sep 22, 2023

Content and Videos

Class

Enjoy a week off!

Basic

Advanced

2

GITing started

Sep 29, 2023

Content and Videos

1 - What is version control?
2 - What is Git?
3 - GITing around
4 - GITing things back
5 - Git branches
6 - Git remotes

Quiz due at Fri, Sep 29 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class Survey

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

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

Basic

Due Wed, Oct 11 at 11:59 pm on EECS GitLab - 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, Oct 11 at 11:59 pm on Gradescope - pdf

  • Recovering data with Git

3

Unix and You

Oct 06, 2023

Content and Videos

1 - What is Unix 2, Electric Boogaloo (2:03)
2 - Unix principles (4:39)
3 - Unix processes (16:26)
4 - Unix files (12:11)
5 - Shell background (2:17)
6 - Shell operation (8:28)
7 - Variables (4:35)
8 - Walking the PATH (3:41)
9 - Executables and shell scripts (8:02)

Quiz due at Fri, Oct 06 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class 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, Oct 20 at 11:59 pm on Gradescope - pdf

  • Redirection
  • Pipelines
  • Variables

Advanced

Due Fri, Oct 20 at 11:59 pm on EECS GitLab - pdf

  • Writing a minimal shell

4

Shells

Oct 13, 2023

Content and Videos

1 - Shell introduction (2:39)
2 - Job control (13:41)
3 - File redirection++ (11:02)
4 - Command grouping (3:47)
5 - Expansions (15:19)
6 - Quoting (4:35)
7 - Control flow (23:16)
8 - Sourcing (3:40)
9 - Shell configuration (5:31)

Quiz due at Fri, Oct 13 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class Survey

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

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

Basic

Due Wed, Oct 25 at 11:59 pm on EECS GitLab - pdf

  • Pipelines
  • Expansions
  • Control flow
  • Functions
  • Scripting

Advanced

Due Wed, Oct 25 at 11:59 pm on Gradescope - pdf

  • Shell prompt configuration

5

Regular Expressions

Oct 20, 2023

Content and Videos

1 - Regex introduction (4:33)
2 - Character literals (4:05)
3 - Special characters (9:15)
4 - Brackets (5:56)
5 - Quantifiers (7:27)
6 - Anchors (4:53)
7 - Backreferences (6:10)

Quiz due at Fri, Oct 20 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: WN 2023 Lec. Cap. · FA 2023 Zoom recording

Class Survey

Today we'll be going into regular expressions.

  • Regular expressions

Basic

Due Wed, Nov 01 at 11:59 pm on EECS GitLab - pdf

  • Regexes with grep
  • Regexes with sed

Advanced

Due Wed, Nov 01 at 11:59 pm on EECS GitLab - pdf

  • Pig Latin conversion with sed

6

Git Gud

Oct 27, 2023

Content and Videos

1 - Fixing commits (12:49)
2 - Rebase (12:45)
3 - Caveats of rewriting history (5:34)
4 - Stash (4:07)
5 - Remotes and tracking (10:12)
6 - Workflows (19:42)
7 - Conflicts (7:47)

Quiz due at Fri, Oct 27 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class 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, Nov 08 at 11:59 pm on EECS GitLab - pdf

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

Advanced

Due Wed, Nov 08 at 11:59 pm on EECS GitLab - pdf

  • Git hooks

7

Build Systems and Make

Nov 03, 2023

Content and Videos

1 - What are programs? (3:20)
2 - What is a build system? (3:11)
3 - What is Make? (1:29)
4 - Rules and targets (9:34)
5 - Variables (6:37)
6 - Automatic variables (5:46)
7 - Functions and expansions (1:26)
8 - Pattern matching (6:24)

Quiz due at Fri, Nov 03 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class 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, Nov 15 at 11:59 pm on EECS GitLab - pdf

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

Advanced

Due Wed, Nov 15 at 11:59 pm on EECS GitLab - pdf

  • More Make
  • CMake

8

Python

Nov 10, 2023

Content and Videos

1 - Intro (0:46)
2 - What is Python? (3:11)
3 - Variables and data (3:34)
4 - Types (9:39)
5 - Expressions (3:26)
6 - Comprehensions (2:58)
7 - Simple statements (1:26)
8 - Compound statements (1:51)
9 - Functions (0:42)
10 - Classes (1:35)
11 - Modules (3:10)
12 - Conclusion (0:26)

Quiz due at Fri, Nov 10 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class 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, Dec 01 at 11:59 pm on EECS GitLab - pdf

  • Getting settled with Python

Advanced

Due Fri, Dec 01 at 11:59 pm on Gradescope - pdf

  • MATLAB alternative
  • Your own path

9

Libraries

Nov 17, 2023

Content and Videos

1 - Intro (1:12)
2 - Types of libraries (4:41)
3 - Using libraries (7:26)
4 - Creating libraries (15:17)

Quiz due at Fri, Nov 10 at 10:30 am on Canvas

Slides: remark(down) · pdf

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class Survey

We'll be looking into the idea of libraries, how to use them, and how to create them. This class 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 01 at 11:59 pm on EECS GitLab - pdf

  • Linking against libraries
  • Creating libraries

Advanced

Due Fri, Dec 01 at 11:59 pm on EECS GitLab - pdf

  • Runtime library linking

Break

Nov 24, 2023

Content and Videos

Class

Enjoy your Thanksgiving break!

Basic

Advanced

10

Testing

Dec 01, 2023

Content and Videos

Slides:

Class

Slides: remark(down) · pdf

Class 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

11

Conclusion

Content and Videos

Class

Slides: remark(down) · pdf

Class Recordings: CoE Lec. Cap.

Class Survey

In another semester, we'll have handed the floor over to our IAs to give some small classs

Basic

Due Wed, Dec 06 at 11:59 pm - pdf

  • How's it going?

Advanced

Due Wed, Dec 06 at 11:59 pm - pdf

  • Internships/jobs/summer plans

12

Text Editors

Content and Videos

1 - Intro (1:25)
2 - The editors around us (9:01)
3 - Intro to Vim (15:07)
4 - Vim counts, motions, and operators (3:00)
5 - Vim macros (3:26)
6 - Vim configuration (3:35)

Quiz due at Fri, Dec 08 at 11:59 pm on Canvas

Slides: remark(down) · pdf

Class

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, Dec 01 at 11:59 pm - pdf

  • Getting familiar with terminal editors

Advanced

Due Fri, Dec 01 at 11:59 pm - pdf

  • Extending editors

13

Debugging

Content and Videos

1 -Intro (0:27)
2 - Print debugging (9:30)
3 - Logging (13:00)
4 - Interactive debuggers feat. GDB and LLDB (21:04)
5 - Valgrind Memcheck (7:09)
6 - Conclusion (9:14)

Quiz due at Fri, Dec 08 at 11:59 pm on Canvas

Slides: remark(down) · pdf

Class

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

  • printf
  • Logging
  • GDB
  • Valgrind

Basic

Due Wed, Dec 06 at 11:59 pm - pdf

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

Advanced

Due Wed, Dec 06 at 11:59 pm - pdf

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