Programming in C and the UNIX Environment
CSE 271 Spring 2007 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/ where my office hours and contact information can be found.
Time/Location
Lectures will be held Mon/Wed/Fri 9:10-10:00am in Packard 360, but we will also make regular trips to the PL122 Sun lab.
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.)
Objectives
  • Know how to program in the C programming language
  • Be comfortable using UNIX
  • Know how to use common C and UNIX development tools
  • Be able to write UNIX shell scripts
  • Be able to write moderate C programs utilizing common UNIX system calls
  • Textbooks
    This course has two required texts: Unix in a Nutshell, 4th ed., by Robbins (O'Reilly, 2005) and Understanding Unix/Linux Programming: A Guide to Theory and Practice, by Molay (Prentice Hall, 2003). In addition, you need a C guide: either C Primer Plus, 5th Ed., by Prata (SAMS, 2005), which is more of a teaching book for those of you without a strong C++ background (but is highly recommended), or C: A Reference Manual, 5th Ed., by Harbison and Steele (Prentice Hall, 2002), for those of you who only want/need a good reference book. All are 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...
    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 unannounced 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.

    Course Topics
    We will cover many topics in this course over the semester. They are expected to include:
    • 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
    There are many other university policies described in the course catalog. A few that also apply here include:

    This page is http://www.cse.lehigh.edu/~brian/course/2007/cunix/syllabus.html
    Last revised: 14 January 2006, Prof. Davison.