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
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 |
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
Topic | Additional Materials | ||
---|---|---|---|
Lecture 1 | 07/03/2017 |
Introduction and Setup Lecture
|
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? pwd ● ls ● cd ● mkdir ● rmdir ● rm ● mv ● cp ● man ● echo ● > ● >> |
Homework 1 Due: Wed Jul 5, 9:30am
|
|||
Lecture 2 | 07/05/2017 |
Shells and Editors Lecture
|
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
|
This document is a (hopefully) useful reference for most of what we covered today on pipelining. |
Homework 3 Due: Wed Jul 12, 9:30am
|
|||
Lecture 4 | 07/12/2017 |
Git Lecture
|
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
|
|||
Lecture 5 | 07/17/2017 |
Everything is a File Lecture
|
Command reference is here. |
Homework 5 Due: Wed Jul 19, 9:30am
|
|||
Lecture 6 | 07/19/2017 |
Review, Escaping, and ASCII Lecture
|
|
Homework 6 Due: Mon Jul 24, 9:30am
|
|||
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
|
|||
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.