CS2043: Unix Tools & Scripting
Time & Place: MWF 11:15am - 12:00pm (Holister B14)
- 1/29/2014: Hussam Abu-Libdeh, Atheendra PT, Sangha Im, and Harsh Shah joined the course staff. See their
hours and contact info below.
- 1/24/2014: Couldn't register for the course?
Enter your info here: Waiting List. Update 1/29: Sorry, registration is now closed.
UNIX-like systems are increasingly being used on personal computers,
mobile phones, web servers, and many other systems. They represent a
wonderful family of programming environments useful both to computer
scientists and to people in many other fields, such as computational
biology and computational linguistics, in which data is naturally
represented by strings. This course provides an intensive training to
develop skills in Unix command line tools and scripting that enable the
accomplishment and automation of large and challenging computing tasks.
The syllabus takes students from shell basics and piping, to
regular-expression processing tools, to shell scripting and Python.
CS2043 is a six week, two credit, S/U only course. It runs from
January 22 through March 5, 2014. The drop deadline is February 5, 2014, two weeks
into the course.
Join the discussion on Piazza
||Wednesday 3-4pm, Gates Hall, room G21
|| Hussam Abu-Libdeh
||Tuesday 2-3pm, Gates Hall, room 440
||Monday 1:30-2:30pm, Upson Hall, room 360
||Thursday 2-3pm, Gates Hall, room G17
||Friday 2-3pm, Gates Hall, room G11
Note: Please don't disclose parts of
your solution on piazza. You can ask for clarifications without revealing
your attempts to solve the problem.
There is no official textbook for this course; we will post pointers
to some books and websites that might be helpful.
The course prerequisites include elementary-level background in computer
programming without assuming mastery in any particular language.
The work for the course will consist primarily of 5 or 6 homework assignments. You must successfully complete all these
assignments to pass this class. Coursework should be handed in through CMS.
- 1/22/2014 Lecture 1: A brief intro to Unix.
- 1/24/2014 Lecture 2: The Unix file system.
- 1/27/2014 Lecture 3: More on the Unix file system, text editing: nano and vim (basics).
- 1/29/2014 Lecture 4: Shortcuts keys, history, aliasing, character expansion, and file compression.
- 1/31/2014 Lecture 5: wc, sort, uniq, tr, pipes and redirection, tee, backticks
- 2/03/2014 Lecture 6: cut, paste, split, join, bc, find, grep
- 2/05/2014 Lecture 7: ssh, scp, processes: nice, kill, top; jobs.
- 2/07/2014 Lecture 8: Regular Expressions
- 2/10/2014 Lecture 9: sed, cron
- 2/12/2014 Lecture 10: diff, awk (1/3)
- 2/14/2014 Lecture 11: awk (2/3)
- 2/19/2014 Lecture 12: screen, gnuplot
- 2/21/2014 Lecture 13: awk (3/3), scripting preliminaries
- 2/24/2014 Lecture 14: conditionals
- 2/26/2014 Lecture 15: loops
- 2/28/2014 Lecture 16: Bash tips, arrays, and functions
- 3/03/2014 Lecture 17: Python 1/2
- 3/05/2014 Lecture 18: Python 2/2
- 1/24/2014 Homework 1. Due Wednesday, January 29, 2014.
- 2/03/2014 Homework 2. Due Sunday, February 9, 2014, 11:59pm EST. Solutions
- 2/10/2014 Homework 3. Due Sunday, February 16, 2014, 11:59pm EST. Solutions
- 2/21/2014 Homework 4. Due Friday, February 28, 2014, 11:59pm EST. Solutions
- 3/02/2014 Final Project. Due Sunday, March 9, 2014, 11:59pm EST. Solutions
Instructions for installing a clone of a CSUG Lab machine on your computer.
Information on the CSUG Lab.
New: Updated Late Homework Policy (comes into effect
starting with Homework 2): Each student will be granted a total of two
late days that can be spent towards submitting homeworks late. We will
deduct a late day from your account whenever you submit an assignment
after the deadline, and we will grade assignments only if you have enough
credit to account for the late days. If you are unable to submit your
homework because of extenuating circumstances (medical or family
emergency), contact an instructor beforehand.
Important: You will need to notify the course staff whenever you make a late
submission, otherwise we won't notice your assignment in the system.
Useful references (not required)
- The Linux Command Line book (Free)
- Learning Python (5th Edition), Mark Lutz, O'Reilly, 2013
- Python Pocket Reference, Mark Lutz, O'Reilly, 2014
- Python in a Nutshell (2nd Edition), Alex Martelli, O'Reilly, 2006
- Mastering Regular Expressions, Jeffrey Friedl, O'Reilly, 2006