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


Academic-Integrity Policy
Extra-Credit Policy
Meetings: MWF 12:30-1:20, JHN 175


Class discussion list
Class email list archives

Staff & Office Hours

Instructor: Hal Perkins; perkins(at)cs; CSE 548, office hours Mon. 3-4 pm, later if people are still here + drop by + appointments.
TA: Tamara Bonaci, tbonaci(at)cs; office hours: T 4:30-5:30, CSE 216; Th 4:30-5:30, CSE 220.
TA: Soumya Vasisht, vasisht@cs; office hour: W 4-5, F 11-12, both in CSE 218.


Dropbox for assignment submissions

Assignment dates are tentative and may be changed, but these might be useful for planning.

Homework 0, due Fri. Jan. 6 at 11 pm.
Homework 1, due Tue. Jan. 10 at 11 pm.
Homework 2, due Tue. Jan. 17 at 11 pm.
Homework 3, due Thur. Jan. 26 Sun. Jan. 29 at 11 pm.
Homework 4, due Thur. Feb. 2 Sat. Feb. 4 at 11 pm.
Homework 5, due Thur. Feb. 16 at 11 pm. Tue. Feb. 21 at 11 pm.
Homework 6, due: Partner info, Monday, Feb. 20 by 11 pm; Headers and skeleton code, Tue. Feb. 28 at 11 pm (no late assignments for this part); Final code, Thur., Mar. 8, at 11 pm.

You have up to four (4) late days to use during the quarter, no more than two (2) of which can be used on any one assignment. For assignments done with partners, late days can only be used if both partners have them available.


Here is a selection of exams from previous offerings of CSE 374. Different offerings of these courses covered slightly different things. You won't be tested on things we did not do this quarter.

This quarter's midterm:  exam  sample solution
This quarter's final:  exam  sample solution

old midterms:  wi11 (solution)  sp10 (solution)   sp09  (solution)
old final exams:  wi11 (solution)  sp10 (solution)  sp09  (solution)

Class Materials

Schedule to be updated as the quarter progresses. This schedule is more tentative than usual because of the Wednesday start this year in addition to the usual Monday holidays during winter quarter. Slides will be usually be posted no later than the night before class. Sample code and other files will be posted shortly after the corresponding lecture. The links below will not work until the corresponding material is posted.

1. Jan. 4: Course Introduction, Shell Basics slides
2. Jan. 6: Processes, Users, Shell Special Characters, Emacs slides; A command sampler slides; shell history from lecture
3. Jan. 9: I/O Redirection, Shell Scripts;  slides, scripts, large picture, shell history
4. Jan. 11: Shell Variables, More Shell Scripts; slides, scripts, shell history
5. Jan. 13: Regular Expressions (and more), grep, Other Utilities; slides shell history
X. Jan. 16: No class, MLK Day
6. Jan. 18: No class: snow, ice
7. Jan. 20: No class: snow, ice, rain, floods
8. Jan. 23: Regular expressions and grep (concl.), sed;  slides shell history
9. Jan. 25: Introduction to C  slides
10. Jan. 27: C: Control constructs, declarations, preprocessor intro, printf  slides shell history, printargs.c demo program
11. Jan. 30: C: locals, left vs. right expressions, pointers  slides
12. Feb. 1: Tools: gdb  slides  gdb manual  original reverse.c  debugging transcript (from wi11) final reverse.c
13. Feb. 3: Pointer examples
14. Feb. 6: Midterm, in class
15. Feb. 8: C: malloc/free  slides; Structs, linked lists, and casts (start) slides  sample code: structs.c  list.c
16. Feb. 10: C: Structs (wrapup); next assignment & tries  slides
17. Feb. 13: Preprocessor revisited, multifile programs slides
18. Feb. 15: Tools: Make and build dependencies  slides  demo project  shell history
19. Feb. 17: Make (concl.); Intro to memory management and hw6
X. Feb. 20: No class, Presidents' Day
20. Feb. 22: Version control and svn demo slides  shell histories: natasha  boris; subversion book
21. Feb. 24: Memory management, hw6
22. Feb. 27: hw6 (concl.); Testing  slides
23. Feb. 29: Testing (concl.);  Specification  slides
24. Mar. 2: Specifications (concl.); Linking and libraries  slides
25. Mar. 5: Linking and libraries (concl.); course evaluations
26. Mar. 7: C++: intro  slides;  example classes: BankAccount  string ;  cplusplus.com tutorial  Google C++ Style Guide
27. Mar. 9: C++: subclasses and inheritance  slides  property classes demo ; course wrapup
X. Wed., Mar. 14: Final exam review, 4:30 pm, EE 037
X. Thur., Mar. 15: Final exam, 8:30-10:20 am, regular classroom

Computing Resources

Getting Started with Linux for CSE 374
UW CSE Home Virtual Machines (e.g., Linux)


Linux Pocket Guide by Daniel J. Barrett, O'Reilly, 2004 (required)
The C Programming Language by Brian W. Kernighan & Dennis M. Ritchie, Prentice-Hall, 2nd ed., 1988 (optional - K&R is a classic that all programmers should read. You may find it useful for this course as a source of examples and explanations about C beyond what you can find in reference sources.)

Other Books & Resources

C: A Reference Manual by Samuel P. Harbison, Guy L. Steele. Prentice Hall, 5th ed., 2002.
Programming in C by Stephen Kochan, Sams, 3rd ed., 2005.
Many useful Unix books published by O'Reilly and others are available online through the UW library as part of the Safari Books Online package.
The Bash Manual
Stanford CS library: Essential C, Unix Programming Tools
There is a tremendous amount of information about Linux, Unix, and C available on the web and in the man(ual) pages and info documents on all Linux/Unix systems.

And for an alternative opinion, The Unix-Haters Handbook by Garfinkle, Weise & Strassmann, IDG, 1994 (i.e., in pre-Linux times).

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]