Programming in C and the UNIX Environment
CSE 271 Spring 2005 Syllabus

Course Web page
The course Web page is http://www.cse.lehigh.edu/~brian/course/cunix/. Announcements, assignments, and some lecture notes will be available there.
Instructor
The course will be taught by Prof. Brian D. Davison. My email is davison (at) cse.lehigh.edu. My homepage is http://www.cse.lehigh.edu/~brian/. My office is in Packard 251A (inside my PL251 lab), and my office hours are 11-noon Mondays and Thursdays. All other meetings should be by appointment. My office phone is 610-758-3453 (but I much prefer email). The TA for the course is Osama Ahmed Khan, and his email is oak204 (at) lehigh.edu. His office hours are Mon 5:30pm - 6:30pm and Wed 1:15pm - 2:15pm, both in the PL122 Sun lab.
Time/Location
Lectures will be held Mon/Wed/Fri 10:10-11:00am in Maginnes 112, but we will also make occasional trips to the PL122 Sun lab.
Textbooks
This course has two required texts: Programming in C, 3rd ed., by Kochan (Sams Publishing, 2005), and Understanding Unix/Linux Programming: A Guide to Theory and Practice, by Molay (Prentice Hall, 2003). There is one additional, optional text: UNIX Shells By Example, 4th ed., by Quigley (Prentice Hall, 2005). All are (or will be) available from the university and online bookstores.

In addition, a number of useful books are available for free in electronic form via the library:

  • GNU Emacs Pocket Reference
  • UNIX in a Nutshell, 3rd ed
  • Learning the UNIX Operating System, 5th ed
  • Linux in a Nutshell, 4th ed
  • Advanced Linux Programming
  • SSH, The Secure Shell: The Definitive Guide
  • vi Editor Pocket Reference
  • Learning Perl, 3rd ed
  • Programming Perl, 3rd ed
  • and more...
Prerequisites
Students are expected to have a strong background in structured programming (CSE 17 or equivalent) and some machine organization/architecture understanding (binary, bits, bytes, addresses, etc.)
Expected Work
Homework and programming assignments will consist mostly of C programs and Unix shell scripts. Tests will consist of two hour exams, a final, and many short quizzes.
Grading Components
Expected grading: homeworks, quizzes, and class participation will be worth 20%; programs 40%; hourly exam 1 - 10%; hourly exam 2 - 10%; and final exam 20%.
Grading Policies

Attendance is strongly encouraged and pop quizzes may occur at any time. You are responsible for everything that occurs in class. A grade may be changed up to two weeks after an assignment, program, or exam is returned. After the final exam, no grades may be contested.

Quizzes:
Short quizzes will be given at the beginning of class on Fridays unless there is an hour exam. These quizzes should take no more than 10 minutes, and are closed book, closed notes.

Homework:
Late homework will be penalized according to the same process as for programs, below, unless a solution has been posted or presented in class, after which there will be no credit.

Programs:
Programs will be graded on correctness, style, and documentation. Each program will typically be graded out of 100 points, and then the score will be weighted to reflect its complexity. Programming assignments will consist of small (10-200 lines), medium (200-600), and large (600+ lines) projects.

Unless explicitly stated otherwise, programs are due electronically at 11:59pm (local time) on the due date. Late programs will be accepted, but will be penalized 10% per day that it is late.

Tests:
No makeup exams will be given. Students who are excused from an hour exam will be graded out of the remaining percentages.

Topics expected to be covered
  • C programming: syntax, statements, data types, operators; the standard libraries; separate compilation; machine architecture concerns; safe programming practices.
  • Software development issues: Text editing; Automatic program testing; Source tools for compilation (make), maintenance (indent, cxref, cflow, cvs) and debugging (gdb, gprof).
  • Unix operation.
  • Shell programming/scripting.
  • Text Processing: awk, diff, grep, perl; LaTeX.
  • Unix systems programming: system calls; signals; processes and inter-process communication; files and filesystems.
Computer Facilities
The primary computer resource will be the various CSE/ECE Sun workstations (e.g., those in PL122) running the Solaris version of the UNIX operating system, but students are free to utilize other (equivalent) computers for developing their programming assignments. However, all programming assignments, unless explicitly stated otherwise, must work correctly and be submitted on the Suns. A list of the names of those machines can be found here.
Policy on Academic Integrity and Collaboration
All work, unless explicitly stated in the problem definition, is to be an individual effort. You are encouraged to discuss assignments with one another, your friends, and with the instructors and graders of the course. Indeed, this may be the most effective method of learning. You may share concepts, approaches and strategies for producing a solution. However all work submitted in your name must be your own. If necessary, violations will be considered as cases of academic dishonesty.

It is sometimes difficult to know where to draw the line between educationally useful sharing of ideas and the educationally destructive copying of ideas. Please refer to the "Collaboration Policy" statement for more examples of what is and what is not unfair collaboration.

Policy on Disabilities
If you have a disability for which you are or may be requesting accommodations, please contact your professor and the Office of Academic Services, Room 212, University Center or call (610-758-4152) as early as possible in the semester. University policy states that you must notify your professor seven (7) days prior to the exam.
Other Relevant University Policies
Important Dates
Mon Jan 17First day of classes
Fri Jan 21Last day to add online
Fri Jan 28Last day to drop without W
Fri Feb 181st Hour Exam
Sat Mar 05-Sun Mar 13Spring Break
Fri Apr 012nd Hour Exam
Fri Apr 08Last day to drop with a W
Fri Apr 29Last class day, last day to drop WP/WF
Tue May 03-Wed May 11Final Exams

This page is http://www.cse.lehigh.edu/~brian/course/cunix/syllabus.html
Last revised: 2 February 2005, Prof. Davison.