CSE 303: Concepts and Tools for Software Development

Autumn 2007


Course Information

Academic-Integrity Policy
Extra-Credit Policy
Meetings: MWF 2:30-3:20, PAA A110


Class discussion list
Class email list archives


Homework 0 "due" Sept. 28, worth zero points, but important(!)
Homework 1, due Monday, Oct. 8 at noon
Homework 2, due Wednesday Oct. 17 at noon
Homework 3, due Monday, Oct. 29 at noon
Homework 4, due Wednesday, Nov. 14 at noon.
Homework 5, due Wednesday Thursday, Nov. 28 29, at 9 pm.
Societal-implication paper, due Dec. 7 at noon. No late assignments will be accepted.   assignment    example paper   turn-in link


Old midterm exams: sp05 (solution); wi06 (solution); sp06 (solution); wi07 solution; sp07 (solution)
This quarter's midterm:   exam   sample solution
Old final exams: sp05 (solution); wi06 (solution); sp06 (solution); wi07 (solution); sp07 (solution)
This quarter's final:  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. Sept. 26: Course Introduction, Shell Basics   slides   shell history
2. Sept. 28: Processes, Users, Shell Special Characters, Emacs   slides   shell history
3. Oct. 1: I/O Redirection, Shell Scripts   slides   scripts   shell history
  Hint for accessing the scripts: tar -xf lec3scripts.tar (see man tar)
4. Oct. 3: Shell Variables, More Shell Scripts   slides   scripts   shell history
5. Oct. 5: Regular Expressions (and more), grep, Other Utilities  slides   shell history
6. Oct. 8: sed, command-line-tools wrap-up   slides (forgot to save shell history, alas)
7. Oct. 10: Introduction to C   slides
8. Oct. 12: C: locals, left vs. right expressions   slides   sample code
9. Oct. 15: C: pointers, function calls slides
10. Oct. 17: C: structs, array parameters, the heap
11. Oct. 19: Societal implications: data privacy  slides, ORCA pass: Daily article; What-About Radio; CSE letter (CSE only)
12. Oct. 22: C: casts, linked-lists, preprocessor  slides   generic_swap.c   list.c
13. Oct. 24: C: printf/scanf; summary slides
14. Oct. 26: C summary; make slides
15. Oct. 29: Societal implications: Software quality, licensing, defect disclosure   slides
X. Oct. 31: Midterm, in class
16. Nov. 2: Make; gdb  slides  makefile demo
17. Nov. 5: gdb  gdb manual; Testing   slides
18. Nov. 7: Version control   slides
19. Nov. 9: Version control (cont.); Specification  slides
X. Nov. 12: No class; Veterans Day
20. Nov. 14: Societal implications: Electronic voting   slides   links from sp07
21. Nov. 16: Specification (concl.); Memory management and hw5
22. Nov. 19: Shared-memory concurrency   slides   demos and eclipse plugin
23. Nov 21: Concurrency (cont.)  slides
X. Nov. 23: No class; Thanksgiving holiday
24. Nov. 26: C++   slides   code   cplusplus.com tutorial
25. Nov. 28: C++   slides   code
26. Nov. 30: Societal Implications: Obligations of Software Professionals   ACM Code   questions
27. Dec. 3: course evaluations; Linking and libraries slides
28. Dec. 5: Profiling and gprof  slides  code  gprof manual
29. Dec. 7: Code-Pointers and Objects; Course Summary   slides   files
X. Dec. 11: Final exam, 2:30-4:30 pm.

Course Glossary


Instructor: Hal Perkins; perkins(at)cs; CSE 548
TA: Robert Fraser; xycos(at)cs
TA: Dingding Liu; liudd(at)u
TA: Brian Ngo; brianngo(at)cs

Office hours in CSE 006 (basement lab)
   Perkins: Mon. 4-5pm, Wed. 4:30-5:30pm (also drop-ins & appointments in CSE548 office)
   Fraser: Tue. 12:30-1:30
   Liu: Thur. 4:30-5:30
   Ngo: Fri. 3:30-4: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, Binky


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