CSE 303: Concepts and Tools for Software Development

Spring 2008


Course Information

Academic-Integrity Policy
Extra-Credit Policy
Meetings: MWF 2:30-3:20, EE 037


Class discussion list
Class email list archives


Collection dropbox for homework assignments

Homework 0, due Wed. April 2, at the beginning of class (worth 1 point, but it's an important 1 point!)
Homework 1A, due Monday, April 7 at 2 pm.
Homework 1B, due Friday, April 11 at 9 pm.
Homework 2, due Monday, April 21, at 9 pm. (Problem 1 added on Monday, April 14.)
Homework 3, due Tuesday, April 29, at 9 pm.
Homework 4, due Thursday, May 15, at 9 pm.
Homework 5, due in phases: 0 (partners) Mon. 5/19, 9 pm; 1 (skeleton code) Thur., 5/22, 9 pm; 2 (everything) Thur., 5/29, 9 pm.
Homework 6, due Wednesday, June 4, at 9 pm.
Societal-impact paper, due June 6 at 2 pm. No late assignments will be accepted.    example paper


Some old final exams: au07 (solution) sp07 (solution) wi07 (solution) sp06 (solution) wi06 (solution) sp05 (solution)
This quarter's final: exam (sample solution)

A selection of old midterms: au07 (solution) wi07 (solution) sp07 (solution) sp06 (solution) wi06 (solution) sp05 (solution)
This quarter's midterm: exam (sample solution)

Class Materials

Tentative schedule to be updated as the quarter progresses. Links to slides, sample code, and other files won't work until the associated files are posted shortly after the corresponding lecture.

1. March 31: Course Introduction, Shell Basics   slides   shell history
2. Apr 2: Processes, Users, Shell Special Characters, Emacs   slides   shell history
3. Apr 4: I/O Redirection, Shell Scripts   slides   scripts   shell history
  Hint for accessing the scripts: tar -xf lec3scripts.tar (see man tar)
4. Apr 7: Shell Variables, More Shell Scripts   slides   scripts   shell history
5. Apr 9: Regular Expressions (and more), grep, Other Utilities  slides   shell history
6. Apr 11: sed, command-line-tools wrap-up   slides shell history
7. Apr 14: Introduction to C   slides
8. Apr 16: C: locals, left vs. right expressions   slides   short programs from lecture   more sample code
9. Apr 18: C: pointers, function calls slides   short programs from lecture
10. Apr 21: C: pointers, casts, structs  slides  More examples: generic_swap.c  list.c
11. Apr 23: C: Linked lists, program structure, catch up
12. Apr 25: No class - department event
13. Apr 28: C: preprocessor, scanf/printf slides; summary, function pointers slides
14. Apr 30: Tools: make slides  makefile demo
15. May 2: Makefiles, next assignment, midterm topics (as time permits)
X. May 4, 3 pm: informal review Q&A, 5th floor breakout area
X. May 5: Midterm, in class
16. May 7: gdb  slides  gdb manual; Testing slides
17. May 9: Societal issues - data ownership and privacy  slides
18. May 12: Version control   slides  subversion book;  shell history 1   shell history 2
19. May 14: Testing slides; ; Memory management and hw5
20. May 16: Societal implications: diversity  slides
21. May 19: Specification  slides; C++   slides   code   cplusplus.com tutorial
22. May 21: C++; memory management idioms  slides  str code  code
23. May 23: Societal implications: code quality and liability  slides
X. May 26: No class; Memorial day
24. May 28: C++ (cont)
25. May 30: Linking and libraries slides
26. June 2: Shared-memory concurrency   slides
27. June 4: Concurrency (cont.)  slides
28. June 6: Some last surveys: Profiling and gprof  slides  code  gprof manual; Code-Pointers and Objects; Course Summary   slides   files
X. Tuesday, June 10: Final exam, 2:30-4:30 pm.

Course Glossary


Instructor: Hal Perkins; perkins(at)cs; CSE 548
TA: Kari Christianson; karibeth(at)cs
TA: Dingding Liu; liudd(at)cs
TA: Pamela Vagata; psv3(at)cs

Office hours in CSE 006 (basement lab)
Monday: Perkins, 4:00-4:30+ (i.e., later if people are still around)
Tuesday: Liu, 3:30-4:30
Wednesday: Vagata, 11:30-12:20
Wednesday: Perkins, 4:30-5:00+
Thursday: Christianson, 3:30-4:30
Friday: Liu, 1:30-2:30

Other Resources

A Quick-And-Dirty Getting-Started Guide
Your ACM Chapter's tutorials
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.