This 2-unit course aims to teach some essential skills for all Computer Scientists that you'll use throughout your classes, into industry and beyond. The class approaches the Unix Command Line Interface (CLI) as a primary tool for computing, and covers techniques that turn the CLI into a powerful, flexible and extensible toolkit, adding useful historical context along the way.

Updates

[+] Show older updates


Course Pre-Requisites

Previous experience with the command line is not required. Indeed, if you feel comfortable on the command line, this is not the class for you!

We encourage students to have taken at least 1 other CS course (typically 8 or 11) prior to 80 as knowledge of introductory programming and computer terminology is expected.

Syllabus & Essential Info

Course Staff

For any issues, e-mail the course staff at the emails listed below.

Joe DeBlasio David Kohlbrenner Sunjay Cauligi
Joe DeBlasio David Kohlbrenner Sunjay Cauligi
Instructor Instructor TA
(jdeblasio or dkohlbre or scauligi)@cs.ucsd.edu

Course Resources

Course Q&A / Forum – Piazza

Course Meeting Times and Locations

Lecture
CSE B220, Mon/Wed 10:00AM — 12:00PM
Lab (optional)
CSE B220, Mon/Wed 12:00PM — 1:50PM
Office Hours (w/ D&J)
CSE 3140, Tue 10:00AM — 11:00PM, or by appointment
Office Hours (w/ S)
CSE 3144, Tue 2:00PM — 3:00PM, Fri 10:00AM — 12:00PM

The class will take the form of intermixed lectures and terminal-based interactive exercises. This is a 2-unit course, and will meet for approximately two hours, twice a week. Lab time is available to work on assignments and get additional help from the instructors.

You will need to ssh into the course server (cse80.sysnet.ucsd.edu) for all assignments. The ssh command from a terminal on Linux or Mac is "ssh username@hostname" For example: "ssh student@cse80.sysnet.ucsd.edu" is the command we use to log into the test student account.

Schedule

The syllabus is subject to change in response to feedback and class needs throughout the term.
Topic Additional Materials
Lecture 1 07/03/2017

Introduction and Setup

Lecture

  • Intro and syllabus
  • History of terminals
  • What is the command line?
  • Basic shell usage

If you’re interested, check out this video of an old school Altair 8800 with tape reader input and a teletype terminal.

Start thinking about file structures. What file structure or directory organization would be helpful for you in this class? For other classes? For personal work? Media? Other files?


pwdlscdmkdirrmdirrmmvcpmanecho>>>

Homework 1

Due: Wed Jul 5, 9:30am

  • Finish assignments 001, 002, and 003
  • Assignment 003 only requires that you ssh into the course server from home
Lecture 2 07/05/2017

Shells and Editors

Lecture

  • The journey to Vim
  • Basic Vim usage
  • Programming the shell

Check out the assignment on vim for our vim coverage. For basic info on programming the shell, see some notes Joe threw together here

Homework 2

Due: Mon Jul 10, 9:30am

Lecture 3 07/10/2017

Pipelining, Regex, and Scripting

Lecture

  • Pipelining, regex, and scripting

This document is a (hopefully) useful reference for most of what we covered today on pipelining.

Homework 3

Due: Wed Jul 12, 9:30am

  • Finish assignments 006 and 008
Lecture 4 07/12/2017

Git

Lecture

  • What is a version control system?
  • Comparisons of different VCS
  • Basic Git

Command reference is here.

Since there are many many high quality reference documents for git, we’ll link one here but feel free to search around.

Homework 4

Due: Mon Jul 17, 9:30am

  • Finish assignments 009 and 010
  • Assignment 010 doesn't require more git than we discussed in class.
Lecture 5 07/17/2017

Everything is a File

Lecture

  • System functions are files
  • Permissions
  • symbolic links
  • tar and compression

Command reference is here.

Homework 5

Due: Wed Jul 19, 9:30am

  • Complete assignment 012_tarscript
Lecture 6 07/19/2017

Review, Escaping, and ASCII

Lecture

  • Typical Linux file system layout
  • 015_inclassmts done in class
  • Bash and terminal escaping
  • The ASCII table

Homework 6

Due: Mon Jul 24, 9:30am

  • Complete assignment 013_retar
  • (Optional) Complete assignments 015_inclassmts and 016_babynames
Lecture 7 07/24/2017

Midterm & Running your own linux

Topics that may be on the midterm are here. You can grab a copy of a VM here - the password is ‘pleasechangeme’. This VM is a fresh install of Ubuntu 16.04. You can run it for free with VirtualBox.

No homework!

Lecture 8 07/26/2017

Regular expressions and git merging

Here is a handy reference for regular expressions (specifically, POSIX extended regex).

Homework 8

Due: Mon Jul 31, 9:30am

  • Complete 017, 018, 019
Lecture 9 07/31/2017

Productivity tools, job control and misc

No homework!

Lecture 10 08/02/2017

Final Exam

No homework!

Attendance, Grading, and Homework

This course is graded on a credit/no credit basis. You will earn points based on in-class quizzes (50%), homework (20%), and exams (30%). Attendance will not be taken, but it will be very difficult to complete in-class quizzes if you are not present.

Regrading

Regrade requests for automated assignments will only result in a grade change if a bug is found and fixed in the automated assignment.

Regrade requests for free text questions on assignments will result in the entire assignment being regraded, and the entire new grade will be kept permanently.

In-class Quizzes + Attendance (50%)

Lectures will include short quizzes and exercises (no more than 5 minutes each) used to verify comprehension and to give hands-on experience. We reserve the right to experiment with this mechanism a bit throughout the semester and vary when and how we ask questions.

If extenuating circumstances cause you to miss class, please contact us (preferably in advance) and we can work something out.

Homework (20%)

Late assignments will not be accepted. Please contact us before the assignment deadline if there are extenuating circumstances.

This is a 2 credit course and the quizzes and homeworks are designed to be commensurate with that. Homeworks should take no more than 60–90 minutes on average. The goal of the homeworks is to reinforce concepts introduced in class.

Exams (30%)

This class will hold a midterm at the end of week 3, and a final at the end of week 6. The final will be comprehensive, but will focus on the second half of the course. The tests will be in the same style as the quizzes and homeworks, and are meant to ensure that you can retain the skills learned in this course.

Academic Integrity

Academic integrity at UCSD is governed by the Policy on Integrity of Scholarship. Allegations of academic misconduct are handled by the Academic Integrity Office. Cheating will not be tolerated, and any student who engages in forbidden conduct will be subjected to the disciplinary process. The course penalty assessed for any cheating in CSE 80 is a failing course grade. Cheaters may additionally be subject to administrative sanctions.

Any attempt at circumventing the autograder will be considered cheating.

Acceptable Resources

During in-class assignments the only acceptable references are the instructors, TA, manual pages, or other command-line-based reference material. Googling, StackOverflow, etc. is not permitted.

For out of class assignments we strongly encourage students to stick to the same restrictions. However, using Google to search for additional information is permitted. Copy-pasting, or verbatim retyping, from an online source is considered cheating. If you reference an online source be 100% sure you understand the material you are using from it. If we have concerns about a submitted assignment's origins we may ask you to explain each step of the assignment in person to an instructor or TA.

Collaboration and Sharing Code

Knowing what is and is not appropriate information to share in this class is especially tricky because of the type of material covered in this class (i.e. part of this class covers how to find answers on your own). We encourage you to ask either instructor or the TA rather than asking each other for help.

While we encourage the use of version control, posting of any class materials on a public repository (such as on GitHub) will be considered an academic integrity violation, as you are providing your work as a resource to others.