CS197U: A Hands-on Introduction to UNIX:
This course offers a 6-week introduction to working with Unix, and it is intended to help students work with tools commonly used in CS courses. The class is comprised of both discussion and hands-on exercises in the EdLab. Topics covered include working with the command line, installing and maintaining the OS and software packages, version control systems, compiling programs, and more. No previous experience with Unix is required. This course is for CS minors and majors only, but it does not count towards either degree. 1 credit.
Late Assignments and Assignment Corrections
Because this is a short, hands-on class, it is much more valuable for you as a student to retry assignments and learn from your submissions than it is for you to receive poor grades or no grades for late assignments.
If your assignment is late, there will be a (-10) point penalty assessed on the top per late day. An assignment delivered on time will receive full credit. An assignment a day late will receive only a 90.
Your assignments will be graded fully. For every regrade, a (-10) point penalty will be assessed. This means that if you were to get a 50 on an assignment turned in on time, if you corrected your mistakes, you could achieve a 90. If it took you two submissions to get a perfect grade, you could still achieve an 80.
This grading policy is only available on Labs, which are manually graded hands-on activiites, and not the Skills Quizzes, which are automatically graded assignments for building skill. It is imperative you complete these in a timely manner, so there will be *no late credit for Skills Quizzes.
- Course Website http://cs.umass.edu/~jfoley/cs197u/
- Instructor: John Foley firstname.lastname@example.org
- Office Hours: By RSVP (TBD) in the EdLab (Lederle Tower, 2nd floor) or by appointment.
- Class Times: TuTh 4:00 - 5:15 in Engineering Lab 323
As this is an introductory course that assumes no experience with unix-like systems, so it is strongly recommended that you get a textbook for background reading. I’ve recommended two textbooks: A, which has been used by this course before, and B, which I feel is a little more detail-oriented. Take a look at the free preview on Amazon for each, and decide which one you like better.
Engineering Lab (ELAB) is a building just next to the Computer Science Building. Room 323 is on the third floor.
This is a Pass/Fail course. - 5% of the grade will be assigned for participation. - 20% of the grade will be attendance. - 25% of the grade will be based on your Skills Quizzes. - 50% of the grade will be based on Lab Assignments.
I reserve the right to add “in-class”, paper labs and quizzes that are not part of the planned schedule.
Since this class is so short and we intend to cover so much material, class attendance is mandatory, except for special circumstances (e.g. doctor’s note, prior notice of conflicts). Please inform the instructor as soon as possible of any conflicts.
Assignments are due 5 minutes before class at the latest. Late assignments will receive no credit, as we will be discussing them immediately after they are due.
Academic Honesty Policy
If you have not already done so, please consult the official University Academic Honesty Policy.
All assignments must be completed individually. While discussion of assignments is allowed, I recommend not writing down anything while discussing with others, so that your solutions are yours.
The textbook and online resources are strongly encouraged, however, please cite your source if you found any signficant part of your answer in this way. This is extremely good practice and will be expected of you in later classes.
In an attempt to deliver repetition, practice, and build familiarity with content, most commands and their uses will not be discussed in class. This content will be delivered in online quizzes that are graded automatically. Students will be able to take the quizzes until they feel they have mastered the material or achieved an appropriate grade. These quizzes will introduce and build familiarity with commands that are evaluated in the Lab assignments. Quizzes will typically be due before the next class session. Later quizzes will reuse questions from previous quizzes, to continuously reinforce fundamentals, such as navigational commands.
Lab assignments are short, hands-on assignments to be completed on the EdLab machines, usually with the goal of producing one or more files as output. Sometimes these assigments will have accompanying questions where the answers will be submitted on Moodle, and sometimes not. These will put into practice the concepts discussed in class, the commands introduced in the “Quizzes”. The outline below discusses relatively where the labs are introduced, as opposed to when they are due. Labs might be given more time than quizzes, depending on their complexity.
- Introduction, Survival Skills 1
- Basic overview and history of UNIX
- Shells and bash
- Arguments and bash grammar
- Navigation in a tree
- Connecting to the EdLab with PuTTY or SSH
- Skills Quiz 1:
touch, ls, $USER, pwd, cd, mkdir, arguments, less, man, cp, rm -r, rmdir rm, tab-completion.
- Survival Skills 2, Linux Ecosystem
- Starting a fire without matches, or why VI?
- Plumbing with grep.
- Linux/UNIX distributions, package managers and choice
- Lab 1: vimtutor
- Lab 2: Needle in a pipe-haystack
- Skills Quiz 2:
vi, grep, head, tail, cat, sort, uniq, pipes
- Operating Systems and Permissions
- Sharing a computer and privacy
- Permissions, superuser
- Virtual Machines
- Compiling and installing applications
- Lab 3: Installing your own copy of Linux
- Skills Quiz 3:
chmod, find, locate, whoami, useradd, passwd, chgrp, sudo, su, apt-get, reboot, halt, shutdown, uname, users
- Do it again: Scripting
- Execute permissions and “shebang”
- Here be dragons:
- How does it know what to run?
- Configuration by scripting,
- Lab 4:
- Skills Quiz 4: scripting,
if, for, test, watch, sleep, undefined variables, special variables,
alias, whereis, which
- Execute permissions and “shebang”
- Processes and Management
- Running things later and now:
fork, fg, bg, crontab
- Signals and hanging up:
screen, nohup, kill
- Monitoring: top
- Lab 5: Leave a process running.
- Lab 6: Shut down your process.
- Skills Quiz 4:
fg, bg, cron, screen, nohup, top, ps, disown, nice, df, du, iotop, kill, disown, nice
- Running things later and now:
- Internet Literacy
- How does the internet work? What is a server? Port? UDP/TCP?
- Encodings and files: What do these bytes mean?
- Sharing your files:
rsync, scp, (s)ftp
- Lab 7: Download, edit, and share back.
- Lab 8: Mystery File Detective.
- Skills Quiz 5:
ping, host, /etc/hosts, tar, zip, scp, rsync, sftp, ssh
- Skills Quiz 6: Midmidterm Review of Skills
- File Sharing With Rules
- Version control: principles and goals
- Lab 9: Practical version control (
- Skills Quiz 7:
gitcommands and state
- Privacy and Security
- Codes, Ciphers, Encryption: What and Why
- Encryption in practice:
- Lab 10: Leave me an encrypted message.
- Advanced Topics I: Awk and Sed
- Looking at commands in depth
- Problem solving with text streams
- Discussion: Why and when to use a “real” programming language instead.
- Skills Quiz 8: pipes and one-liners
- Advanced Topics II: Make and Students’ Choice
- A program for doing things
- Lab 11: Fix a broken and
- Professional Requirements and HTML
- Discussion: Do you need a website? Is github your resumé?
- Basic HTML
- Lab 12: Build a personal website.
- Skills Quiz 9:
a, href, link, script, title, img, p, ul, ol, strong, emph, div, span
- Slack topics, and review
- Discussion: What makes a competent UNIX programmer?
- Course Evaluations
- Skills Quiz 10: Final Review