CSE logo University of Washington Computer Science & Engineering
 CSE 374 Programming Concepts and Tools - Course Information and Syllabus - Spring 2009
  CSE Home   About Us    Search    Contact Info 

Logistics and Contact Information: Instructor: Hal Perkins, CSE 548, perkins(at)cs. See www.cs.washington.edu/374/ for information about teaching assistants, office hours, etc.

Communications: A discussion list is linked to the course home page so we can keep in touch outside of class meetings. Please participate. You will also automatically be subscribed to a class mailing list at your uwnetid address. This will primarily be used for announcements, clarifications, hints, and other notices from the course staff, and you are responsible for everything that is mailed there.

Goals: Successful course participants will:

Grading and Exams:

In general, all homeworks contribute equally to the 50%, but larger programming projects may be weighted slightly more that other assignments. Percentages are tentative and may be adjusted slightly.

Late Policy: Deadlines will be given in each assignment. These deadlines are strict. Therefore, it is exceedingly unlikely that skipping class or being late to class because of homework is in your interest. For the entire quarter, you may have four "late days". You are strongly advised to save them for emergencies. You may not use more than two for the same assignment, and on group projects you may only use late days if all members of the group have them available, and all members of the group will be charged for each late day used. They must be used in 24-hour (integer) chunks. This policy may not be the same as in other classes. You are responsible for understanding it if you choose to submit late work.

Academic Integrity: Any attempt to misrepresent the work you did will be dealt with via the appropriate University mechanisms, and your instructor will make every attempt to ensure the harshest allowable penalty. The guidelines for this course and more information about academic integrity are in a separate document. You are responsible for knowing the information in that document.

Text: There are two books listed for the course. The course webpage discusses the texts' "requiredness."

Advice: This course will expose you to a tremendous number of tools, concepts, and issues. Be warned:

Approximate Topics (subject to change): We will do almost all of the following, but not necessarily in this order.

  1. Files, processes, and shells (6 classes)
    1. Command-line utilities
    2. File editing
    3. Shell scripting
    4. String processing; regular expressions
    5. Web basics (http, html)
    Note: For consistency, we will all use Linux and bash. The concepts are similar for other operating systems and shells.

  2. C Programming (6-7 classes)
    1. Memory model
    2. Pointers
    3. Arrays
    4. Manual resource management
    5. The preprocessor
    6. Idioms for safe programming

  3. Programming tools (6 classes)
    1. Debuggers
    2. Profilers
    3. Linkers
    4. Compilation managers
    5. Version-control systems

  4. Concurrency (2-3 classes)
    1. Threads
    2. Races and deadlocks
    3. Locks and Transactions
    4. Message-passing

  5. C++ (2 classes)
    1. C with classes and objects
    2. Other differences from C

  6. Software-engineering issues (3-4 classes)
    1. Multiperson programming
    2. Specification
    3. Testing
    4. Code-reuse patterns


CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to Hal Perkins]