Winter Quarter 2004: January 5, 2004 - March 12, 2004
| Less: | Basics | Coordinates | Books | Schedule | Project | Teams | Assessment | | | More: | Scores | Policies |
Catalog Description: Development and construction of software products. Topics include design, coding layout, and style; implementation strategies; quality attributes; prototyping, reuse, and components; debugging, testing, and performance; integration and maintenance; documentation; standards, analysis, and selection of tools and environment; and personal software processes.
Prerequisite(s): CS 141: Intermediate Data Structures and Algorithms. Let me emphasize that you should be reasonably comfortable with C++ programming and the Unix environment, otherwise you will spend more time "catching up" than doing course work. You should also have reasonable writing and presentation skills, or at least you should be willing to develop them.
Time Requirements: Four units (12-16 hours/week): lecture (3 hours/week), laboratory (3 hours/week), individual study (6-10 hours/week; includes reading, writing, and hacking).
Instructor:
Peter H. Fröhlich
Office Hours:
Monday, Wednesday, Friday, 2:10 pm - 3:00 pm
(email for additional appointments)
Location:
Surge,
Room 341
Lectures:
Monday, Wednesday, Friday, 10:10 am - 11:00 am
Location:
Boyce Hall,
Room 1471
Assistant:
Dhananjay Kulkarni
Office Hours:
Tuesday, 2:30 pm - 4:30 pm
(email for additional appointments)
Location:
Surge,
Room 282
Lab:
Monday, Tuesday 11:10 am - 2:00 pm
Location:
Surge,
Room 172
Mailing List: cs100@lists.cs.ucr.edu (Archive)
Andrew Hunt, David Thomas: The Pragmatic Programmer. Addison-Wesley, 1999. A wealth of practical advice on various topics relevant to software construction, including design, implementation, testing, debugging, etc. Organized in 46 relatively small "lessons," extensively cross-referenced, including 70 "rules" and several check lists on a reference card. You can download additional material for this book here. An errata is available.
Martin Fowler, Kendall Scott: UML Distilled. Addison-Wesley, 3rd edition, 2003. Succinct introduction to the Unified Modeling Language (UML) and also a concise summary of basic software engineering and software construction concerns. The 2nd edition is also good enough for the course, and it's available much cheaper.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns. Addison-Wesley, 1995. The standard reference for object-oriented design patterns: well-documented solutions to recurring design and implementation problems. The case study in chapter 2 is also a great introduction to object-oriented design and programming.
Brian Kernighan, Rob Pike: The Practice of Programming. Addison-Wesley, 1999. Succinct discussion of a variety of programming topics. Deals with style, documentation, design, testing, debugging, portability, etc. Uses several programming languages (C, C++, Java, Perl) and discusses the tradeoffs involved. I used this one in Spring 2003 as the main text, but I think the new choice is more comprehensive and accessible; still, get this one if you feel like it, goes nicely with the current text. An errata is available.
Barbara Liskov, John Guttag: Program Development in Java. Addison-Wesley, 2001. Do not be fooled by the title. This is an excellent advanced programming text that deals with many software engineering concerns as well. If you want to learn some Java and along the way pick up lots of programming and design skills, get this book.
Steve McConnell: Code Complete. Microsoft Press, 1993. Another excellent advanced programming text, again covering many software engineering concerns as well. This is a real classic, but currently out of print as far as I know. An errata is available.
Note the word tentative above. Things seldom go according to plan, and I expect changes here and there as we go along. Please also read the notes below.
| Week | Lecture | Lab | Assignment | Exam | Reading |
|---|---|---|---|---|---|
| 1 | Software Engineering [Lecture 1], Requirements (H 36) [Lecture 2], Teams (H 41) [Lecture 3] | Register Teams, LaTeX [The Not So Short Introduction to LaTeX], Boost project, filesystem library, Discussion: Broken (H 2), Frogs (H 3) | [Assignment 1] |
[Entrance]
[Solution] |
Preface; H 1, 2, 3, 5, 6, 15, 36, 41 |
| 2 | Reviews [Lecture 4], Style [Lecture 5], Estimating (H 13), Documentation & Writing (H 44) [Lecture 6] | Register Teams, XHTML, doxygen, Discussion: Plain (H 14), Editing (H 16) | [Assignment 2] | - | H 13, 14, 16, 32, 44 |
| 3 | Configuration Management (H 17) [Lecture 7], Automation (H 42) [Lecture 8] | Open Lab: Subversion, cron, make, gdb | [Assignment 3] |
[Quiz 1]
[Solution] |
H 17, 19, 42 |
| 4 | Debugging (H 18) [Lecture 9], Assertions (H 22, 23) [Lecture 10], Contracts (H 21) [Lecture 11] | nana, Discussion: Balancing (H 25), Puzzles (H 37) | [Assignment 4] [debug.tar.gz] | - | H 18, 21, 22, 23, 24, 25, 37 |
| 5 | Guest Lecture (Dan Berger), Midterm Review | Open Lab: Introduction to Python [Instant Python], Midterm Review | - |
[Midterm]
[Solution] |
all the above |
| 6 | Testing (H 34, 43) [Lecture 12] [Lecture 13], Performance [Lecture 14] | gcov, gprof, Discussion: Enough (H 4), Ready (H 38) | [Assignment 5] | - | H 4, 34, 38, 40, 43 |
| 7 | Introduction to UML [Lecture 15], UML Case Study [Lecture 16], | Open Lab: UML Case Study, Discussion: Reversibility (H 9), Coincidence (H 31) | [Assignment 6] | - | H 7, 8, 9, 31, 33 |
| 8 | Design Patterns [Lecture 17], Demeter (H 26), Views (H 29) [Lecture 18], Composite & Visitor Patterns [Lecture 19] | UML Case Study, More Design Patterns, Discussion: Domain (H 12), Code (H 20) | [Assignment 7] |
[Quiz 2]
[Solution] |
H 12, 20, 26, 29, 35 |
| 9 | Specifications (H 39) [Lecture 20], Bullets (H 10) [Lecture 21], Prototypes (H 11) [Lecture 22] | UML Case Study, More Design Patterns, Discussion: Expectations (H 45), Pride (H 46) | [Assignment 8] [Michael Jackson] | - | H 10, 11, 39, 45, 46 |
| 10 | Legal Issues [Lecture 23], Comprehensive Review | Open Lab: Comprehensive Review | - |
[Comprehensive]
[Solution] |
complete text |
Open Lab means you can attend any lab section offered that week: You don't have to attend the one you're enrolled in, and you can even attend all of them if you want to.
The term "H s" refers to the required text by Hunt et.al.; for example, "H 27" refers to section 27. It's a good idea to skim related sections as well (as indicated in the book).
Bold sections are not discussed in lecture or lab (unless you ask about them), but the material is relevant. Some topics we go over in lecture or lab are not covered in the text; I will try to provide additional references for those.
You are expected to do the assigned reading before a topic is covered in lecture or lab. Reading assigned in the week of an exam is part of the exam (except for the entrance exam of course).
The department's programming guidelines make for quite interesting reading, often highly relevant to this course.
There is not really a "distinct" project in CS 100, instead all
project work is integrated with the weekly assignments.
In
Spring 2003,
the assignments focused on an improved implementation of the standard
Unix wc command, the so-called "word count" tool.
In
Fall 2003
the assignments focused on a "schedule generator" application
called sg, which takes a plain text list of events
and produces nice XHTML output.
This quarter, the assignments will be about a tool
code-named fd.
The purpose of fd is
finding duplicate files
in complex directory structures.
The tool offers the following basic services to its user:
The motivation for fd is simple:
With increasingly large storage devices and ubiquitous Internet
access, it is becoming harder and harder for users to keep track
of what information has been downloaded before.
A tool like fd can be run at regular intervals to
keep duplicates (and therefore wasted space) to a minimum, a
task that is usually too time-consuming to do by hand.
More details on what fd must be able to do will be
given as we go along.
Assignments (8): 50%, Quizzes (2): 10%, Midterm (1): 15%, Comprehensive (1): 25%. See my policies for more information.
|
Copyright © 2003-2004
Peter H. Fröhlich.
All rights reserved.
$Id: index.html,v 1.22 2004/03/15 19:41:11 phf Exp $ |
|