CS 160B, Sec 831: Unix/Linux Shell Scripting (2 Units)
CRN 76123, 8/17-10/14
Syllabus

Instructor: Peter Wood
Contact Infoe-mail:  pwood@ccsf.edu  (usually the best way to reach me),  web:  http://fog.ccsf.edu/~pwood
  phone: 415.239.3229,   office:   Science 35B,  office hours:  usually the hour after my classes in Cloud 218, by phone using Skype, or by appt.

Course Description: Analyze, create, write, and debug Unix shell scripts. Students review basic scripting techniques and develop scripting skills needed for Unix System Administration courses.

 
Required Text:  SAMS Teach Yourself Shell Programming in 24 Hours, 2nd Edition, by Sriranga Veeraraghavan. SAMS:  March, 2002. ISBN: 0-672-32358-3.
Optional Texts:  Learning the Bash Shell, 3rd Edition, by Newham.  O'Reilly: March, 2005.   ISBN 10: 0-596-00965-8.
Unix Shell Programming, 3rd Edition, by Kochan and Wood. 2003. ISBN: 0-672-32490-3. Updated classic on shell programming.  Great, and still not much on functions.
 
Prerequisite: CS 160A, Introduction to Unix.  I assume that you have a basic knowledge of user level Unix/Linux.   If you have not passed CS 160A (or CIS 167) at CCSF and want to challenge the prerequisite, you may need to take a short exam that tests your knowledge of basic Unix.  Here is a more detailed list of CS 160A Exit Skills.
 
Course Objectives: In CS 160A students learn the history of Unix, the directory structure, commands & utilities to move around, create, edit, and remove files & directories, and  to work with text files.  All this is done from the Unix shell command line.   In CS 160B you learn about Unix shell scripting.  Unix shell scripts are simply groups of Unix commands collected together into a file that can be run as a batch.   They are very useful whenever you need to repeat tasks.   Shell scripting is a kind of programming.  You learn all the shell script commands you need to be able to write and document your own scripts to solve common unix  administration problems.   Equally important is the ability to read the scripts of others.   You are given some scripts to read, analyze, and sometimes fix.   The purpose of this class is to give you enough conceptual knowledge and practice with shell scripting to prepare you for your  later classes in Unix System and Network Administration.  In this one half semester course students write ten or more shell scripts of varying degrees of difficulty.
 
Methodology:
The course is an Online class.  It has no required face-to-face class meetings.    Online notes supplement the textbook.  Most of your time is spent reading, practicing exercises from the book & notes, and writing scripts to solve problems. The book is chosen to provide a structured, largely self-paced, opportunity for you to systematically study Unix Shell Scripting. As you practice your scripts, sometimes you get stuck. At that point I (or your fellow students) will help you. By the end of the class, I expect that you will be able to read and write Unix scripts with more confidence.  
 
Weekly Effort: My assumption is that everyone who is motivated and adequately prepared can succeed in this class.  (If you passed CS 160A then you have adequate preparation.)   We do not meet face-to-face each week.   It takes time to do the reading, practice, and complete the labs.   The amount of time needed  varies widely between students and topics.   How much is this?    One guideline is 1 - 3 hours/week outside of class for every hour in class.   A 2 unit, 1/2 semester class meets 4 hours per week.  So in order to have a good chance for success, I suggest you plan to spend 8 to 16 hours per week for this class.

Accounts: Each student in the class will get two computer accounts. One is on a web server running Insight (insight.ccsf.edu).  Insight is a Learning Management System built on the Moodle Open Source software.  Insight is where you find the class notes, assignments, discussions, and grades. The other account is a Unix command line account on the CCSF student server (hills.ccsf.edu). This is where you can practice Unix. (You can also use your own Unix or Linux computers, but the assignments must also run under HP-UX .)    If you are adding the class, do so as soon as possible.  You CCSF accounts are created a few days after you finish the enrollment process.   Your Insight username & password are emailed to the email address that you have in WebStars (where you register for classes).

Grading: This is mostly a skill-building class, so your grade is based mostly on your completed assignments. There are weekly lab assignments. I usually post these on the class Web page, and you turn them in by placing them in a special directory or through e-mail.  There is also a participation component.  This comes from logging into WebCT each week, reading the bulletin board, and making at least 5 posts or replies during the class.   In addition there are several short, online quizzes and a comprehensive final exam. The Quizzes and Final Exam are given online and are open book.   (Please note that this is the first time an in-person Final Exam is not required!)
 
Final grades will be determined in the following manner:

Quizzes
20%
Labs
50%
Class Participation 10%
Final Exam
20%

 
 
Quiz and Assignment Deadlines: The quizzes are open book, but they are available only for a limited amount of time.   You get two chances to take the quizzes.  Questions may change between quiz attempts.   The lowest quiz score will be dropped.   There are six lab  assignments that include a total of about a dozen scripts and functions.   There is extra credit available as part of some of the labs.  Due Dates:  Labs & Quizzes are due by 11:55pm on the date listed in the Class Calendar.  (Due dates are usually on Mondays.)  Check the Class Calendar periodically for updates.   Extending Due Dates: Due Dates are extended if we have a problem on the CCSF network that prevents you from doing the work.   This does NOT include problems with your home computer or ISP.   I encourage you to identify & get familiar with a backup computer in advance.  This could be at the CCSF Computer Labs,  your local library, work, or a friend.   Grade timing:  Your Quiz scores are available immediately.  Your Lab scores will be available about one week after the due date.   Late Labs & Quizzes:  Quizzes & Labs can be completed late, but there is a 10% penalty per week up to a maximum of 3 weeks.   The window for completing Quizzes and Labs late ends if I post answers online, but will always be at least one week.  
 
Attendance:  You need to login at least once each week to the class website. If you do not login during the first week or for any two weeks in a row after that, I may drop you from the class. If you need to miss several weeks in a row due to an emergency, please let me know so that I can try to help you with your class work. If you decide to drop the course, it is your responsibility to do so by the deadlines. Please do not depend on me to drop you.  Add/Drop Deadlines:  Last Day to Add: 8/26/09.  Last Day to Drop with a Refund:  8/20/09.  Last Day to Drop without a "W": 9/02/09.  Last Day to Drop with a "W":  9/30/09. 
 
Plagarism: Since this is largely an online class, it is difficult to determine who has really done an assignment or taken an exam. Mostly I rely on your honesty and integrity, and that you are taking this class in order to improve your own skills. However, if you are tempted to copy someone else’s work, remember that when you copy someone’s assignment you also usually copy their mistakes. If I find plagarism, then everyone with the same submission will receive no credit for that assignment. If you really want to help a friend with an assignment, then instead of giving them the answers or letting them just copy your work, help them learn how to figure it out for themselves!
 
Communications: We communicate mostly through a class website, e-mail and a class bulletin board. When you have a question about what the book is saying or about an assignment, post it to the class bulletin board. I respond to the bulletin board. That way everyone can see the question, suggest answers, and see my answer. It is a lot like asking a question in class. Also, if someone else has the answer, I hope they post it so you can get an answer more quickly.   When you have a personal question regarding your grade or other matters, then please send it to my regular e-mail address.  If you prefer to discuss an issue face-to-face, then you may come to my regular office hours or make an appointment to meet with me.  We can also setup a phone or video office hour using Skype.
 
Please remember the limitations of online communication.  Take the time to re-read your questions or answers before actually posting them. It is very easy when you are tired or in a hurry to say things that you do not mean.   As usual, offensive language or other breaches of CCSF Computer Policy are not acceptable.  If you like to talk a lot, please do not talk too often or too long before giving others a chance to respond.  If you are a quieter person, please take a chance and ask or answer some questions.
 
Schedule of Topics & Due Dates:   Class Calendar