Assignments

Assignment 0: Getting Set Up!

Due Wednesday, January 18. Worth 1 point.

Your task for this assignment is to follow the “Setting up your Shell Environment” instructions from the software setup page. Then, run the uname -a command and submit it to Gradescope under Assignment Zero!

Assignment 1: Shell We?

Due Monday, January 23. Worth 3 points.

This assignment consists of two different components:

  1. You'll familiarize yourself with RegEx by conpleting a few exercises
  2. You'll combine your RegEx and shell expertise to wrangle some words

Assignment 2: Bourne to Be Wild

Due Monday, January 30. Worth 3 points.

This assignment consists of two different components:

  1. You’ll write a simple shell script that does some data analysis
  2. You’ll get some practice using vim

There's an extra (optional) section at the bottom of the assignment that will walk you through a couple more uses of grep and sed. We highly recommend following along in your own terminal!

We expect this assignment to take 1-3 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling (spinning in circles), ask on Ed and/or go to office hours!

Assignment 3: Off The Beaten $PATH

Due Monday, February 6. Worth 3 points.

This assignment consists of three different components:

  1. You will modify your $PATH variable, shell prompt, and add aliases
  2. You’ll get some practice using the networking tools we learned about in Lecture 7
  3. You’ll run a small server that our grading machine will connect to

We expect this assignment to take 1-3 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling (spinning in circles), ask on Ed and/or go to office hours!

Assignment 4: It's git-ting HOT in here!

Due Wednesday, February 15. Worth 3 points.

This assignment consists of three different components:

  1. You will complete a git tutorial
  2. You'll get practice using git from the command line
  3. You'll get some practice using GitHub

We expect this assignment to take 1-3 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling (spinning in circles), ask on Ed and/or go to office hours!

Assignment 5: It all makes sense!

Due Wednesday, February 22. Worth 3 points.

This assignment consists of two different components:

  1. Practice using make and CI tools
  2. Practice with profiling tools

We expect this assignment to take 1-3 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling, ask on Ed and/or go to office hours!

Assignment 6: It's like Magick

Due Wednesday, March 1. Worth 3 points.

This assignment consists of one component:

  1. Practice using Pandoc and ImageMagick to convert documents and images

We expect this assignment to take 0-1 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling, ask on Ed and/or go to office hours!

Assignment 7: The (Public) Key to My Heart

Due Wednesday, March 8. Worth 3 points.

This assignment consists of two components:

  1. Spoof an email
  2. Set up SSH keys to sign a message

We expect this assignment to take 1-3 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling, ask on Ed and/or go to office hours!

Assignment 8: On Cloud Nine

Due Wednesday, March 15. Worth 3 points.

This assignment consists of two interconnected components:

  1. Create and publish a Docker image on DockerHub
  2. Launch a free tier instance on AWS and run a server on it (the same server you built in part 1!)

We expect this assignment to take 1-3 hours depending on your proficiency level with the tools. If you find yourself unproductively stuck or unproductively struggling, ask on Ed and/or go to office hours!

Final Project

Due Monday, March 20. Worth 5 points.

For your final project, we want you to explore a tool or concept from the course (or a tool that we didn't discuss in the course but that you are interested in!) in further detail. Your role is to do a deep dive into this tool/concept, and summarize what you've learned in order to help others learn about how and when to use it. We want you to become an expert in one of these tools and teach the rest of us about it :)