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


Course Information

Academic-Integrity Policy
Extra-Credit Policy
Meetings: MWF 12:30-1:20, EEB 037


Class discussion list
Class email list archives

Staff & Office Hours

Instructor: Hal Perkins; perkins(at)cs; CSE 548, office hours: Mon. & Wed. 3:30-4:30.
TAs: Christopher Hoover, furby16(at)cs, office hours Thur. 2:30-3:30, CSE 218; Dun-Yu Hsiao, dyhsiao(at)cs; office hours Tue. 3-4, CSE 220.


Dropbox for assignment submission

Homework 1, due Thursday, April 1, at 11 pm.
Homework 2, due Thursday, April 8, at 11 pm.
Homework 3, due Monday, April 19, at 11 pm.
Homework 4, due Wednesday, April 28, at 11 pm.
Homework 5, due Thursday, May 13, at 11 pm.
Homework 6, due: 0. Partner info, Saturday, May 15 at 11 pm; Headers and skeleton code, Thursday, May 20 at 11 pm (no late assignments for this part); Final code, Thursday, May 27, at 11 pm.
Homework 7, due Thursday, June 3, 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 old exams from CSE 374 and the related course, CSE 303. 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 final:  exam  sample solution
Old CSE 374 final exam:  sp09  (solution)
Some old CSE 303 final exams: wi09 (solution); au08 (solution); sp08 (solution); au07 (solution)

This quarter's midterm:  exam  sample solution
Old CSE 374 midterm:  sp09  (solution)
Some old CSE 303 midterms: wi09 (solution); au08 (solution); sp08 (solution); au07 (solution)

Class Materials

Tentative schedule to be updated as the quarter progresses. Slides will be posted no later than the morning before class. Sample code and other files will be posted shortly after the corresponding lecture.

1. March 29: Course Introduction, Shell Basics slides
2. March 31: Processes, Users, Shell Special Characters, Emacs slides; A command sampler slides; shell history from lecture
3. Apr 2: I/O Redirection, Shell Scripts;  slides, scripts, large picture, shell history
4. Apr 5: Shell Variables, More Shell Scripts; slides, scripts, shell history
5. Apr 7: Regular Expressions (and more), grep, Other Utilities; slides shell history
6. Apr 9: Regular expressions and grep (concl.), sed;  slides shell history
7. Apr 12: Command-line tools wrapup, shell history; Introduction to C  slides
8. Apr 14: C intro continued, annotated slides
9. Apr 16: C: Control constructs, declarations, preprocessor intro, printf  slides  annotated slides
10. Apr 19: C: locals, left vs. right expressions  slides  annotated slides
11. Apr 21: C: malloc/free  slides  annotated slides
12. Apr 23: Tools: gdb (start)  slides  gdb manual  original reverse.c  debugging transcript
13. Apr 26: gdb and debugging (concl.) debugging transcript   fixed reverse.c;  C: Structs, linked lists, and casts  slides  sample code: structs.c  list.c
14. Apr 28: C: Structs (concl.)  annotated slides; Preprocessor revisited, multifile programs slides; quick exam review. 
15. April 30: Midterm, in class
X. May 3: No class. NAE symposium downtown for some students.
16. May 5: Next assignment & tries
17. May 7: C: preprocessor wrapup  annotated slides ; Tools: Make and build dependencies  slides  demo project
18. May 10: Make demo
19. May 12: Coding and commenting  annotated slides from lecture
20. May 14 :Memory management and hw6  slides from lecture [updated 5/22]
21. May 17: Version control and svn demo  slides  annotated slides  shell histories: natasha  boris; subversion book
22. May 19: Testing  slides  annotated slides from lecture
23. May 21: Specification  slides  annotated slide from lecture
24. May 24: Specification (concl.); C++: intro  slides;  example classes: BankAccount  string ;  cplusplus.com tutorial  Google C++ Style Guide
25. May 26: C++ (cont.)
26. May 28: C++: subclasses and inheritance  slides  property classes demo
X. May 31: No class, Memorial Day holiday
27. June 2: C++ virtual functions (wrapup); Shared-memory concurrency slides  
28. June 4: Concurrency (concl.); Course Summary
X. Wednesday, June 9: Final exam review, 4:30 pm, CSE 403
X. Thursday, June 10: Final exam, 8:30-10:20 am.

Other Resources

A Quick-And-Dirty Getting-Started Guide
The Bash Manual
Stanford CS library: Essential C, Unix Programming Tools


Are the texts required?
Linux Pocket Guide by Daniel J. Barrett, O'Reilly, 2004.
C: A Reference Manual (5th Edition) by Samuel P. Harbison, Guy L. Steele. Prentice Hall, 2002.
Programming in C by Stephen Kochan, Sams, 2005.

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]