CSE logo University of Washington Computer Science & Engineering
 CSE 303 Concepts and Tools for Software Development - Winter 2009
  CSE Home   About Us    Search    Contact Info 


Course Information

Academic-Integrity Policy
Extra-Credit Policy
Meetings: MWF 10:30-11:20, JHN 175


Class discussion list
Class email list archives

Staff & Office Hours

All office hours are in the CSE 006 lab.

Instructor: Hal Perkins; perkins(at)cs; CSE 548, Mon. & Tue. 2-3 pm
TA: Xia Cam; mcam at cs, Wed. 2-3:30
TA: Joseph Chen; lidor7 at cs, Mon. 11:30-12:20, Thur. 11-12.
TA: Deepak Vijaywargi; deepakv at cs, Tue 11-12, Fri 12-1.


Dropbox for assignment submission

Homework 0, "due" Wednesday, Jan. 7 at the beginning of class (on paper, not online).
Homework 1A, due Friday, Jan. 9 at 11 pm
Homework 1B, due Thursday, Jan. 15 at 11 pm
Homework 2, due Monday, Jan. 26 at 11 pm
Homework 3, due Wednesday, Feb. 4 at 11 pm
Homework 4, due Thursday Wednesday, Feb. 19 18at 11 pm
Homework 5: pick partners by Friday, Feb. 20, 2 pm; part A (skeleton code) due Wednesday, Feb. 25 at 11 pm; part B (everything) due Wednesday, March 4 at 11 pm.
Homework 6: due Wednesday, March 11 at 11 pm.
Societal-impact paper, due Friday, March 13 at 11 pm.  No late assignments will be accepted.   example paper


A selection of old exams for review. Topics covered in previous quarters may not be exactly the same.

Old midterm exams: sp05 (solution); wi06 (solution); sp06 (solution); wi07 solution; sp07 (solution)  au07 (solution)  sp08 (solution) au08 (solution)
This quarter's midterm:  exam  sample solution

Old final exams: sp05 (solution); wi06 (solution); sp06 (solution); wi07 (solution); sp07 (solution); au07 (solution); sp08 (solution); au08 (solution)
This quarter's final:  exam   sample 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. Jan. 5: Course Introduction, Shell Basics   slides   shell history
2. Jan. 7: Processes, Users, Shell Special Characters, Emacs   slides   shell history
3. Jan. 9: I/O Redirection, Shell Scripts   slides  scripts  big jpg file  shell history
  Hint for accessing the scripts: tar -xf lec3scripts.tar (see man tar)
4. Jan. 12: Shell Variables, More Shell Scripts   slides   scripts   shell history
5. Jan. 14: Regular Expressions (and more), grep, Other Utilities  slides   shell history
6. Jan. 16: sed, command-line-tools wrap-up   slides  shell history
X. Jan. 19: No class; MLK birthday.
7. Jan. 21: Introduction to C   slides
8. Jan. 23: C: locals, left vs. right expressions   slides   some sample code shell history hello.c that prints arguments
9. Jan. 26: C: structs, pointers, heap memory slides   more sample code
10. Jan. 28: C: preprocessor basics, printf/scanf slides
11. Jan. 30: gdb slides  gdb manual   buggy reverse.c  gdb session transcript
12. Feb. 2: gdb (concl); C: structs, casts  slides   generic_swap.c   list.c
13. Feb. 4: C: Linked lists, More about the preprocessor slides
14. Feb. 6: next assignment; make intro slides  makefile demo
15. Feb. 9: Make basics; C: summary slides
X. Feb. 11: Midterm, in class
16. Feb. 13: Make (concl.); Testing   slides
X. Feb. 16: No class; Presidents' day
17. Feb. 18: Testing:  slides; Memory management and hw5;
18. Feb. 20: HW5; Version control (intro)  slides   Subversion book
19. Feb. 23: Version control demo first shell history  second user shell history; Specification  slides
20. Feb. 25: Societal issues: data ownership & privacy slides
21. Feb. 27: Linking and libraries slides
22. Mar. 2: C++   slides   bankaccount code   cplusplus.com tutorial
23. Mar. 4: C++   slides   string class code   properties code (inheritance)
24. Mar. 6: Societal issues: Diversity slides
25. Mar. 9: Societal issues: Software quality and liability  slides
26. Mar. 11: Shared-memory concurrency   slides
27. Mar. 13: Concurrency (cont.)  slides; course wrapup
X. Mar. 15: Review, afternoon
X. Mar. 16: Final exam, 8:30-10:20 am, regular classroom.

Other Resources

A Quick-And-Dirty Getting-Started Guide
Your ACM Chapter's tutorials (updated 1/9/08)
The CSE department's Computing Resources for Undergrads
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]