UCR CS 21: Introduction to Unix
Winter Quarter 2005
This page is currently under construction
Quick Links
Course Schedule
Electronic Turn-in
Anonymously Report
Suspected Cheating
Anonymously Provide Comments/Suggestions
In CS 21 you'll learn your way around the Unix operating system and
how to accomplish common tasks in Unix. You'll also learn scripting
techniques that will greatly improve your productivity when using
Unix, as well as how to use a few of the main tools at your disposal
in a Unix system.
Catalog description:
CS 021. Introduction to UNIX (4) Lecture, 3 hours; laboratory, 3
hours. Prerequisite(s): CS 005 or CS 008 or CS 010. A comprehensive
introduction to fundamental UNIX principles, architecture, and
applications. Covers command-line utilities, piping, redirection,
filters, basic shell scripting, file system architecture and
permissions, and tools for software compilation, debugging, and
version control. Topics are relevant to and enhance student's work in
most lower- and upper-division Computer Science Courses.
Instructor:
Jason Villarreal
(villarre@cs.ucr.edu)
Surge 348
Office hours: Tuesday 1:00 pm - 4:00 pm or by appointment
Feel free to email me any questions or if you can't make my office hours.
Teaching Assistant:
Ioannis Drougas
Surge 282
Office Hour - TBA
Lectures:
Tuesday and Thursday, 9:40 am - 11:00 am GEOL 1408
Labs:
Section 022: Thursday 6:10 pm - 9:00 pm
Textbook:
Teach Yourself Unix in 24 Hours,
Dave Taylor
For optional textbooks, visit the Additional Resources section
below.
Course Grading:
The course will be graded as follows, combined as a weighted sum to
total 100%.
- 3 Quizzes - 15% total (5% each)
- 1 Midterm - 20%
- 1 Final - 30%
- Lab Assignments (including at-home programming assignments) - 25%
- Homework - 10%
Letter grades will be assigned roughly according to the
standard 90/80/70/60 scale out of 100 percentage points overall,
with a 90 and above corresponding to an A, 80 and above to a B,
70 and above to a C, 60 and above to a D, and less than 60 to an
F. +/- grades will also be given. Students are not competing against
one another, but rather against the scale -- all students can get
good grades if all do well. I may scale ("curve") an individual item
if it HELPS the class.
Subject to change as the quarter progresses.
Lectures are designed to enhance and deepen the concepts presented in
the textbook, but are not designed as a replacement for the textbook.
Similarly, the textbook is not a replacement for lecture. You will be
tested on material presented in the textbook and assigned readings
that might not be covered in the lecture as well as material presented
in the lecture that does not appear in the textbook.
-
Week 1: Jan 4 and 6
-
Lecture - Class Introduction, a brief history of Unix,
getting inside the "hacker" mentality and how that relates
to the design of Unix. Getting onto the system and
getting help. Navigating through the directory
structure. Environment variables and how to set them.
- Lecture 1
- Lecture 2
-
Textbook Readings: Chapter 1 and Chapter 2. "The Art of
Unix Programming" History and Philosophy sections. "In
The Beginning was the Command Line."
-
Lab 1 - Getting started with Unix.
-
Lab 1 Answers
-
Week 2: Jan 11 and 13
-
Week 3: Jan 18 and 20
- Lecture - Using piping, filters, and file redirection in
order to build complete Unix processes. Looking in
detail at regular expressions and the grep command.
Using the grep command to find information in files.
- Quiz # 1 on Thursday, January 20th.
- Homework # 1 due on Thursday, January 20th.
- Lecture 5
- Lecture 6
- Lab 3
-
Lab 3 Answers
-
Week 4: Jan 25 and 27
-
Week 5: Feb 1 and Feb 3
- Lecture - Shell introduction. History mechanisms and
aliasing in bash.
- Lecture 9
- Midterm - February 3
- Lab 5
-
Week 6: Feb 8 and 10
- Lecture - Job control, moving processes into the
foreground and background, and terminating rogue
processes. Introductory shell programming including
argument passing and control structures.
- Lecture 10
- Lecture 11
- Homework #2
- Lab 6
-
Week 7: Feb 15 and 17
-
Week 8: Feb 22 and 24 (21 is a holiday)
-
Week 9: March 1 and 3
- Lecture - Latex and Make. Document construction and
formatting. Using make to manage compilation.
- Lecture 16
- Lecture 17
- Lab 9
-
Week 10: March 8 and 10
Week 11:
Final - Tuesday, March 15, 2005, 8:00 am - 11:00 am.
-
Material covered: You'll be responsible for
learning material covered in lecture, in the textbook, and in
lab. Lecture does not cover all required material alone. Be
prepared for homework/quiz/midterm/final questions on
material from the readings that was not covered in lecture.
-
Academic dishonesty and collaboration policy:
cheating is strongly punished, often with an F in the
course, plus a letter to the vice-chancellor; UCR suspends or
expels repeat offenders. Help us detect cheating by reporting
cheating anonymously at:
https://www.cs.ucr.edu/cheating/. You should also visit the
offical Judicial Affairs webpage
for the University.
-
Academic dishonesty statement - All students
are required to sign the academic dishonesty
guidelines of the University to verify that you have
read and understand these guidelines. You should also read the
University policies.
Students not submitting the signed statement will receive a grade delay
in the class until the form is returned.
-
Midterm, final, quizzes, lab practicals - Obviously
there will be no collaboration allowed in any of these areas
-
At-home programming assignments - Limited
collaboration may be acceptable, but programs must represent
YOUR OWN original work. Sharing code or team-coding are strictly
not allowed. Copying code from ANY source (any book, current or
past students, past solutions, any work you have turned in
for a previous class, web, etc) is
strictly not allowed even with citation. Collaboration may
consist of discussing the general approach to solving the
problem, but should not involve communicating in code or even
pseudo-code. Students may help others find bugs. Your code MUST
be unique -- the odds of randomly producing similar code is
very low. Computing, like surgery or driving a car or playing
golf, can only be learned by doing it yourself!
-
PROTECT YOUR CODE!! - Do not allow anybody
to purposefully or inadvertently obtain a copy of your code even after
this course is completed. For example, if
you print your code and the printer is out of paper, DO NOT
LEAVE. Either get paper from systems or cancel your print
job. If you leave, later on someone will put paper in the
printer and out will come your code. Furthermore, do not throw
any code into the trashcans in the lab.
-
It is considered against computer account policy to tamper with
another's account. Thus, if you give someone else your password and they copy
your work or turn something in for you, both parties will have committed
academic dishonesty.
-
Be aware that programs are
automatically compared to the current and prior quarter's
programs for plagiarism, using a sophisticated code-comparison
tool that ignores insignificant differences (like whitespace and
variable names). If you're smart enough to fool the instructors,
TAs, and code-comparison tools, you're more than smart enough to
do the programs on your own!
-
A couple more notes. Be aware that completed exams
are photocopied. Those photocopies may be used for comparison with
exams submitted for regrades, so don't make changes. Also, be aware that
lying to an instructor in order to
be able to make up a missed exam or in other ways to obtain a
better grade can be treated as academic dishonesty. During
exams, cell phones and PDAs must be stored away in a place
not visible (e.g., inside a backpack).
-
Regrade policy: regrade requests must be
submitted in writing and within one week of the
distribution of the graded material. Grade-database errors
should also be pointed out within one week of posting.
-
Final grades: Per university policy, changes to
your final grade will be made only in the event of a
clerical error. Asking your instructor how far you were from a
cutoff and what extra work you can do to improve the grade is
not appropriate.
-
Switching/adding/dropping lab and lecture
sections: all add, drop, and section changes of all
lower division Computer Science courses, after the period when
students can do so electronically is over, are done through the
College of Engineering's Student Affairs office. Neither
the instructors nor the CS department itself can sign any
add/drop forms, nor can they arrange for section changes. Please
go to Student Affairs, Bourns Hall A159, for any such changes.
-
Communicating with the instructors and TAs: when
sending electronic mail to the instructors or TAs, please
remember that many students have the same name, and instructors/TAs may
be involved in more than one course. So please use your full name, preferably
including your student ID number, and be as specific as you can (list
the course, section, etc. -- whatever is relevant to your communication).
Also, please try to be professional and use reasonable grammar and
formatting.
-
Cell phones: During lectures and lab sessions,
please turn off your cell phone.
- Time Requirements: This is a four-unit CS course. As such, you should expect to spend 3 hours/week in lecture, 3 hours/week in lab, and 6 to 10 hours/week doing individual study (readings, homeworks, programming, lab preparation, etc) -- no exaggerating here! Please don't underestimate the time you will need to spend on this course. These are real time amounts spent by successful past students. Computer Science and Engineering are challenging disciplines requiring extensive time to master -- it's worth it in the end (great jobs, great pay, respect, etc.), but those things don't come for free. So practice, practice, practice! Work hard in school, then reap the rewards of a great career.
A short list of all commands covered so far can be found here.
Below are a list of recommended books for this class. The books
marked with a * are available online for UCR students.
-
*Unix Power Tools, 3rd edition, by Mike Loukides, Tim O'reilly,
Jerry Peek, and Shelley Powers.
-
*Perl in a Nutshell, by Nathan Patwardhan, Ellen Siever, and
Stephen Spainhour.
-
*Linux in a Nutshell, 4th Edition, by Stephen Figgins, Ellen
Siever, and Aaron Weber.
-
The Latex Companion, 2nd Edition, by Frank Mittelbach, Michel
Goossens, Johannes Braams, David Carlisle, and Chris Rowley.
-
The C Programming Language, 2nd Edition, by Brian Kernighan and
Dennis Ritchie.
© 2003 UC
Riverside Department of
Computer Science & Engineering. All rights
reserved.