CSE 303: Concepts and Tools for Software Development

Winter 2006

Course Information

Syllabus
Academic-Integrity Policy
Extra-Credit Policy
Anonymous Feedback
Meetings: MWF 12:30-1:20, MGH 231

Our midterm:   without solutions   with solutions
Our final:   without solutions   with solutions
Sample midterm:   without solutions   with solutions
Sample final:   without solutions   with solutions

Staff

Instructor: Dan Grossman, , Allen Center Room 556
    (careful: the userid equal to the instructor's last name belongs to a different person)
TA: Benjamin Ylvisaker ben8@cs.washington.edu
TA: Robert Spies wilford@cs.washington.edu

Office hours:
   Grossman: Tuesdays 2-3, Fridays 1:30-2:30, and by appointment
   Ylvisaker: Mondays 3:30-4:30, and by appointment
   Spies: Thursdays 12:30-1:30, and by appointment in CSE 002

Course Glossary

Homework

Homework 1, due Monday January 16, 9:00AM
Homework 2, due Friday January 27, 9:00AM   example output   mycat2buggy
   (example input mailed to you directly and via a web link)
Homework 3, due Friday February 3, 9:00AM   points.c   wordfind.c
Homework 4, due Monday Feburary 13, 9:00AM   hw4.tar
Homework 5, due Wednesday February 22, 9:00AM  5A  5B  5C   (do the one your groupmates are not doing)
Homework 6, due Wednesday March 1, 9:00AM
Homework 7, due Friday March 10, 9:00AM   takeoutTester skeleton   example output

Short Paper, due Friday March 10, 9:00AM   description   example

Class Materials

X. Jan 2: Holiday
1. Jan 4: Course Introduction, Shell Basics   slides   shell history
2. Jan 6: Processes, Users, Shell Special Characters, Emacs   slides   shell history
3. Jan 9: I/O Redirection, Shell Scripts   slides   shell history   scripts
  Hint for accessing the scripts: tar -xf lec3scripts.tar (see man tar)
4. Jan 11: Shell Variables, More Shell Scripts   slides   shell history   scripts
5. Jan 13: Regular Expressions (and more), grep, Other Utilities   slides   shell history
X. Jan 16: Holiday
6. Jan 18: sed, command-line-tools wrap-up   slides   sed programs
7. Jan 20: Introduction to C   slides
8. Jan 23: C: locals, left vs. right expressions, dangling pointers   slides   sums.c   pointers.c
9. Jan 25: C: structs, the heap and manual memory-management   slides   structs.c
10. Jan 27: Societal implications: Responsibility for web data   links   slides
11. Jan 30: C: casts, linked lists  slides   code
12. Feb 1: The C Pre-Processor; printf and scanf slides examples
13. Feb 3: C: Function-Pointers; Post-Overview  slides   code
14. Feb 6: Societal Implications: Software Quality, Licensing, Patents, ...  slides
X. Feb 8: Midterm
15. Feb 10: Debuggers, e.g., gdb  slides   code   gdb manual
16. Feb 13: Profilers, e.g., gprof  slides   code   gprof manual
17. Feb 15: Testing, stubs, specification  slides   code
18. Feb 17: Build scripting, make  slides
X. Feb 20: Holiday
19. Feb 22: Version control, cvs  slides  shell history  more info
20. Feb 24: Societal implications: Future/purpose of computer science (education)  slides   links
21. Feb 27: Linkers, Libraries, Archives  slides
22. March 1: Linking wrapup; Threads, concurrency  slides
23. March 3: Security, defensive programming  slides  security_eg.c  security_eg.sh
24. March 6: Societal implications: Voting   links  slides
25. March 8: Memory-management idioms  slides
26. March 10: Wrap-up, taste of C++  slides  C++ code

Textbooks

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.

Other Resources

A Quick-And-Dirty Getting-Started Guide OS X Addendum
Your ACM Chapter's tutorials
The CSE department's Computing Resources for Undergrads
More than enough HTML for Homework 2
The Bash Manual

Preliminaries

Join the course mailing list
Homework 0 "due" January 6, worth zero points