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

Logistics and Contact Information: Instructor: Hal Perkins, CSE 548, perkins(at)cs.
Teaching Assistants: Laura Marshall and Orkhan Muradov.
See www.cs.washington.edu/374/ for information about the course, including 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:

Prerequisite: CSE 143 (i.e., intermediate programming in Java, including basic data structures like lists, queues, and binary search trees)

Grading and Exams:

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

Late Policy: Deadlines will be given with each assignment. These deadlines are strict. 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. 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 Pocket Guide is "required" - it is a concise source of information and provides a useful reference to Linux at the level you need for CSE 374 (of course you should not feel responsible for memorizing all of the details in it). The Kernighan & Ritchie book is the classic reference on C from the people who invented the language. It is "optional", but may provide useful explanations and examples beyond the information in class or reference information available online.

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. We will use the UW CSE Linux Virtual Machine as our reference system in the few situations where it matters.

  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. Software-engineering issues (2-3 classes)
    1. Multiperson programming
    2. Specification
    3. Testing
    4. Code-reuse patterns

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

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


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]