CSc 352 Systems Programming and UNIX — Final Version
Fall 2008, Tuesday-Thursday, 5:00 - 6:15 p.m.
Description: Programming in C, including single and multi-dimensional arrays, lists, stacks, queues, trees, and bit manipulation. Unix topics, including debuggers, makefiles, shell programming, and other topics that support C programming.
Instructor:
Patrick T. Homer
Email: patrick
Email domain: cs.arizona.edu
Office: Gould-Simpson 811, 621-7267
Home: see the printed syllabus. Please do not call after 9:30 p.m.
TA:    
Ajeya Naithani
Email: naithani
Email domain: cs.arizona.edu
Office: Gould-Simpson 710-D, 621-4089
Office Hours:
See the class web page. Office hours are subject to change during the semester. We will update the class web page and will email the listserv when changes are needed.
You are welcome to stop by or call at times other than during posted office hours.  If we have time, we will answer questions.  If not, we will make an appointment with you for a later meeting (in-person or on the phone).
Email: Email questions can be sent to cs352fall08 (email domain: cs.arizona.edu). This alias will send your email to both of us. This is the preferred email address regarding questions about assignments, grading, etc.
When sending email, always include a subject line. The subject line must have 352 at the start, and must be “reasonable”. Bad examples include “help”, “a question”, etc. Good examples include:
    352 - Help on pointer error
    352 - Clarification on turnin time
    csc352: Question about gdb
Email is a *very* useful tool in helping you understand the course material. This is true for other courses as well. Having a good subject line helps immensely in filtering the important email (that related to class work) from less important email.
Email should contain information that is relevant. Including previous email’s on a topic can be useful, but can also be a waste of time. Include information that is relevant; remove that which is not. Note that this means you should not automatically include previous email in the message.
Provide your name in the message. Do not rely on us knowing who you are based only on your email address. When asking about a program, include your cs login.
Use full sentences and write as clear a message as possible. Email that is poorly written simply results in us sending a reply that asks for more information. As an example, tell us specifically what your program is doing wrong, where (what line) it fails on, what output is wrong, which test case(s) do not work, etc.  Tell us what you already know about the problem as this saves us troubleshooting time and prevents us from telling you something you already know.
Email summary:
    subject line contains 352 and a short version of the contents
    include your name and your cs login
    provide as much information as possible
    include previous email only when useful in understanding your message
Email that does not follow these guidelines will be returned unanswered.
Listserv: A listserv has been setup. I will add students to the listserv on August 29th based on the official class roster using your email.arizona.edu address. You can subscribe using a different address by sending an email message to listserv@listserv.arizona.edu with the body of the message containing the line:
          subscribe sysprog FirstName LastName
Note that all 4 parts have to be present. You will also have to (later) answer the email response from the listserv in order to complete the subscription.
You can remove an email address from the listserv by sending an unsubscribe message to remove an old email address. Help with an unsubscribe message or other listserv commands is available at: http://listserv.arizona.edu/. (And, we will answer questions about the listserv as well.)
The listserv is set up to always include 352 at the beginning of the subject line.
You can send email to the listserv using the address sysprog@listserv.arizona.edu. Email that asks a question of general interest to the class is appropriate for the listserv. Questions that are specific to your solution to an assignment should be sent to cs352fall08@cs and not to the sysprog listserv.
Prerequisite or Concurrent Registration: CSc 252 — Computer Organization.
Required texts:
K. N. King
C Programming: A Modern Approach, 2nd edition
2008, W. W. Norton & Company,  ISBN 978-0-393-97950-3
 
If you have a copy of the first edition (ISBN: 0-393-96945-2), that will be sufficient.
I do not require a specific Unix book. I will provide most of what you need in the lecture notes. Manpages are available for all the Unix tools you will be using. There are numerous on-line sources of information. If you would like recommendations, I can suggest the following:
    Learning the Korn Shell
    Bill Rosenblatt and Arnold Robbins
    2002, O’Reilly
    ISBN: 0-596-00195-9
 
Grading: Grades will be based on a set of in-class quizzes, a final exam, and a set of programming/homework assignments. The final grade, subject to modification, will be determined by:
    65% from 14 weekly programming/homework assignments.
    25% from the quizzes.
    10% from the final exam.
The final grades may be curved, but a weighted total of 89.5% and above is guaranteed to be an ‘A’, 79.5% and above at least a ‘B’, 69.5% and above at least a ‘C’, and 59.5% and above at least a ‘D’.
I do not post grades. I will periodically email your current grades to your CS department login. This email will show up in your email.arizona.edu mail. If you do not read email at that address, you will need to set a .forward to forward such email to your preferred email address.  You can set forwarding using the Filters option from the webmail interface at http://www.email.arizona.edu/.
Quiz Policies: A 30-minute quiz will be given in-class on every other Thursday, beginning Thursday, September 11th (see specific dates below). Each quiz will be handed out promptly at 5:00 p.m. and collected at 5:30 p.m. A five minute break and a 40-minute lecture will follow each quiz.
• Late arrivals will not be granted extra time. Quizzes will be collected at 5:30 p.m.
• Missed quizzes may not be made up.
• Your lowest two quiz grades will be dropped.
Quiz Dates:
Quiz 1: Thursday, September 11th.
Quiz 2: Thursday, September 25th.
Quiz 3: Thursday, October 9th.
Quiz 4: Thursday, October 23rd.
Quiz 5: Thursday, November 6th.
Quiz 6: Thursday, November 20th.
Quiz 7: Thursday, December 4th.
Assignment Policies:
Assignments will be due each Thursday evening, at 9:00 p.m. The assignment will be handed out or posted to the web site one week in advance. No assignment will be due on Thursday, November 27th due to Thanksgiving. The last assignment will be due on Wednesday, December 10th.
  1. There may be one or two “double” assignments during the C part of the class. These will be assignments that take longer than one week to complete. Each “double” assignment will count as two assignment grades.
  2. The lowest assignment grade from assignments 1 to 13 will be dropped. If your lowest assignment grade is a “double” assignment, only one of the two grades for the assignment will be dropped.
  3. The last (14th) assignment grade cannot be dropped.
  4. The first assignment will be handed out on Tuesday, August 26th. It will be due on Thursday, September 4th.
Assignment Grading:
Assignments will be graded based primarily on whether the program/script/command does, or does not, work. In general, we will run your program/script against a set of test cases. For each test case, you will receive the points for the test case if your output is correct; you will receive zero points if your output is not correct.  Note this is a binary function, you will get all or none of the points for each test case.  For scripts/programs, there will also be points assigned for style (comments, indenting, readability), error-free compilation, and for satisfying specific requirements of the assignment (such as malloc’ing/free’ing memory, makefile use, etc.). In general, 60% to 80% of the grade will be based on the test cases. We will provide some test cases, along with the output of our solution prior to the due date of each assignment. We may use additional test cases during the grading process.
Unless stated differently in the assignment, scripts and programs will be graded on lectura. You can use other platforms for development and testing. You should allow time for testing (and fixing as needed) your solutions on lectura.
Re-grades: If grading seems incorrect, unfair, or inconsistent on an assignment or exam, you may appeal for a re-grade. You may talk with the TA or me about the re-grade. Re-grades on assignments and quizzes will only be accepted during the seven days following their return. The re-grade does not necessarily have to be fully resolved, but the initial request must be made during the one week period. Re-grades on the final exam and assignments/quizzes returned within one week of the final exam date will be accepted through Friday, February 13th — the end of the five-week period during which grade appeals can be initiated:
You will be able to submit a revised program/script for re-grade on an assignment. Points lost due to factors other than test cases cannot be reclaimed by a re-grade. Points lost due to failing test cases can be partially regained, depending on the amount of change in your code from the original turnin. In general, the formula for this is: 90% for less than 2% changed, 70% for less than 10% changed, 50% for less than 25% changed. The amount of change will be based on the lines of code: comments, and blank lines will be not be counted. Variations to this formula may be applied to specific assignments; see the class web site.
To request a re-grade on an assignment, you will first need to fix your code (we are available to help with this). Next, use the turnin command for the assignment to turnin your corrected code (turnin will be set to a different directory after the due date has passed, so a re-grade turnin will not overwrite your original turnin). Third, send us (cs352fall08@cs) an email requesting the re-grade. All three steps will need to be completed within the re-grade time limit specified for the assignment.
See the class web pages for re-grade information specific to each assignment.
Do not question or challenge the decisions of the TA on grades and on re-grades! The TA can only assign grades, and change grades, according to instructions that I have given. If you do not agree with the TA, talk to me.
Important Dates:
Monday, August 25: First day to file for grade replacement option (GRO).
Friday, September 19: Last day to drop resulting in deletion of course enrollment and last day to file for GRO.
Friday, October 17: Last day for dropping class or changing to audit.
Thursday, December 18: Final Exam 5:00 - 7:00 p.m.
Computer accounts: You will need CS department computer accounts for this course. You can obtain these through the web page: http://www.cs.arizona.edu/computing/services/. If you already have CS department accounts, you still need to do the apply process to update the department’s data base as to the courses you are taking. If you need physical access to the computer labs in Gould-Simpson, you can obtain a swipe card that will let you into the facilities; the CS computer labs are available 7/24.
Late work: Students are strongly encouraged to complete the programming and homework assignments on time. There are two reasons:
• You will not have time to work on an assignment after its due date is passed. It is more important that you proceed to the next assignment.
• Late assignments are burdensome, and detract from time otherwise available to help students with the current assignment.
Do not feel that your program or assignment must be complete to be turned in. Partial credit will be given for those test cases your program does pass. You may be able to submit the program for a re-grade.
Machine down-time will be taken into account in extending the due dates for programs only if persistent and repeated outages occur over the life-span of the assignment. You should therefore endeavor to complete each program well before the deadline.
Cooperation & Cheating: I encourage you to talk with your friends about the course work; both giving and receiving advice will help you learn. However, students are responsible for understanding and following the University’s Code of Academic Integrity. Briefly, you will not accept solutions from other persons, you will not give solutions to others, and you will not tamper with graded papers, code, or exams. It is OK to talk with other students about algorithms and general approaches, but each student must develop and write her/his own code, and each person must turn in her or his own work. I also consider misuse of your computer account a violation of academic integrity.
The one exception to this is for test cases. You are allowed to share test cases and expected results of these test cases for the programming assignments.
Students who violate the Code should expect at a minimum to fail the course and have charges recorded by the Dean of Students office. They may also be subject to other penalties. Refer to the “Code of Academic Integrity”
for further details on what constitutes cheating,  the penalties that may result, and the procedures involved.
Exams: The dates/times for the quizzes and the final exam are firm. Each student must be careful to present a self-contained effort during each exam, and to keep her/his exam paper from easy display. Violations will be dealt with severely, with penalties that may exceed the value of the exam.
Attendance: Attendance is not recorded. However, each student is fully responsible for all material covered by reading assignments, lectures, and handouts.
Variances: Exceptional circumstances do sometimes arise. If such occurs in your case, please get in touch with me (not the TA) as soon as practicable. This can be done in person, in writing, by phone, and/or by email.