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


Course Information

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


Class discussion list
Class email list archives

Staff & Office Hours

Instructor: Hal Perkins; perkins(at)cs; CSE 548, office hours: Mon. 3:30-4:30, Tue. 2:00-3:00.
TA: Daniel Jones; dcjones(at)cs; office hours Wed. 1:30-2:20, Thur. 1-2; CSE 216.


Dropbox for assignment submission

Homework 1, due Thursday, April 2, at 11 pm.
Homework 2, due Thursday, April 9, at 11 pm.
Homework 3, due Monday, April 20, at 11 pm.
Homework 4, due Wednesday, April 29, at 11 pm.
Homework 5, due Thursday, May 14, at 11 pm.
Homework 6, due in phases: part 0: (partners) Fri.. 5/15, 4 pm; part 1: (skeleton code) Thur., 5/21, 11 pm; part 2: (everything) Thur., 5/28, 11 pm. No late assignments accepted for parts 0 and 1, even if you have late days remaining.
Homework 7, due Thursday, June 4, 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.


This quarter's final:  exam  sample solution
Old CSE 303 final exams. Topics may differ slightly from what we did this quarter, but most of the questions should be useful for review.
wi09 (solution); au08 (solution); sp08 (solution); au07 (solution); sp07 (solution); wi07 (solution); sp06 (solution); wi06 (solution); sp05 (solution)

This quarter's midterm:  exam  sample solution
Old CSE 303 midterms: wi09 (solution); au08 (solution); sp08 (solution); au07 (solution); sp07 (solution); wi07 (solution); sp06 (solution); wi06 (solution); sp05 (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. Until slides and lecture materials are posted, the links below will not work.

1. March 30: Course Introduction, Shell Basics   slides   shell history
2. Apr 1: Processes, Users, Shell Special Characters, Emacs   slides   shell history
3. Apr 3: I/O Redirection, Shell Scripts   slides   scripts   large picture   shell history
    Hint for accessing the scripts: tar -xf lec3scripts.tar (see man tar)
4. Apr 6: Shell Variables, More Shell Scripts   slides   scripts   shell history
5. Apr 8: Regular Expressions (and more), grep, Other Utilities  slides   shell history
6. Apr 10: sed, command-line-tools wrap-up   slides  shell history
7. Apr 13: Introduction to C   slides
8. Apr 15: C intro continued (no slides)
9. Apr 17: C: locals, left vs. right expressions   slides   some sample programs
10. Apr 20: C: catch up; more examples
11. Apr 22: C: malloc/free: slides; C: Preprocessor basics and printf/scanf  slides  
12. Apr 24: Tools: gdb  slides  gdb manual  buggy reverse.c   shell history  debug session transcript  fixed reverse.c
13. Apr 27: C: Structs, linked lists, and casts slides;  structs.c  list.c
14. Apr 29: C Casts (finished); C: Preprocessor revisited, multifile programs slides
15. May 1: Catch up and review for midterm
X. May 4: Midterm, in class
16. May 6: Next assignment & tries; Tools: make (start)  slides  makefile demo code
17. May 8: Make and build dependencies
18. May 11: Testing slides
19. May 13: Version control   slides  subversion book
20. May 15:Memory management and hw6
21. May 18: svn demo  shell history 1   shell history 2
22. May 20: specification  slides
23. May 22: Linking and libraries slides
X. May 25: No class; Memorial day
24. May 27: C++   slides  bankaccount class  string class   cplusplus.com tutorial
25. May 29: C++ subclasses and inheritance  slides   property class hierarchy
26. June 1: C++ inheritance (concl.), C code pointers and objects  slides  files
27. June 3: Shared-memory concurrency   slides
28. June 5: Concurrency (cont.); Course Summary
X. Wednesday, June 10: Final exam review, 4:30-5:30++, CSE 403
X. Thursday, June 11: Final exam, 8:30-10:20 pm.

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.

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]