Fall Quarter 2003: September 25, 2003 - December 5, 2003
| 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, hacking, and homework).
Instructor:
Peter H. Fröhlich
Office Hours:
Monday, Wednesday, Friday, 11:00 am - 12:00 pm, Surge 341
(email for additional appointments)
Lectures:
Tuesday, Thursday, 5:10 pm - 6:30 pm
Location:
Watkins Hall,
Room 1111
Assistant:
Dragomir Yankov
Office Hours:
Tuesday, 2:30 pm - 3:30 pm, Surge 282
(email for additional appointments)
Lab:
Thursday, 6:30 pm - 9:00 pm
Location:
Surge,
Room 170
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, 2nd edition, 2000. Succinct introduction to the Unified Modeling Language (UML) and also a concise summary of basic software engineering and software construction concerns. Third edition about to be published!
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 |
|---|---|---|---|---|---|
| 0 | Welcome, Software Engineering [Lecture 1] | Open Lab: Accounts, Basics | - | - | Preface; H 1, 5, 6, 15 |
| 1 | Requirements (H 36), Teams (H 41), Estimating (H 13) [Lecture 2] [Lecture 3] | Register Teams, LaTeX [The Not So Short Introduction to LaTeX], Discussion: Broken (H 2), Frogs (H 3) | [Assignment 1] | - | H 2, 3, 13, 36, 41 |
| 2 | Style, Documentation & Writing (H 44), Inspections [Lecture 4] [Lecture 5] | Register Teams, XHTML, doxygen, Discussion: Plain (H 14), Editing (H 16) | [Assignment 2] |
[Quiz 1]
[Solution] |
H 14, 16, 32, 44 |
| 3 | Configuration Managment (H 17), Debugging (H 18), Automation (H 42) [Lecture 6] [Lecture 7] | Subversion, cron, Discussion: make, gdb | [Assignment 3] | - | H 17, 18, 19, 42 |
| 4 | Assertions (H 22, 23), Contracts (H 21) & Abstract Data Types [Handout], Exceptions (H 24) [Lecture 8] [Lecture 9] | nana, Discussion: Balancing (H 25), Puzzles (H 37) | [Assignment 4] [debug.tar.gz] | - | H 21, 22, 23, 24, 25, 37 |
| 5 | Python [Instant Python], Review [Lecture 10] [Lecture 11] | Open Lab: Patterns & Python | - |
[Midterm]
[Solution] |
all the above |
| 6 | Testing (H 34, 43), Performance [Lecture 12] [Lecture 13] | Coverage, gcov, prof, Discussion: Enough (H 4), Ready (H 38) | [Assignment 5] | - | H 4, 34, 38, 40, 43 |
| 7 | UML, Duplication (H 7), Orthogonality (H 8), Refactoring (H 33) [Lecture 14] | Open Lab: UML Case Study, Discussion: Reversibility (H 9), Coincidence (H 31) | [Assignment 6] | - | H 7, 8, 9, 31, 33 |
| 8 | Demeter (H 26), Views (H 29), Composite & Visitor Patterns [Lecture 15] [Lecture 16] | UML Case Study, Discussion: Domain (H 12), Code (H 20) | [Assignment 7] |
[Quiz 2]
[Solution] |
H 12, 20, 26, 29, 35 |
| 9 | Specifications (H 39), Bullets (H 10), Prototypes (H 11) | Open Lab: UML Case Study, Discussion: Expectations (H 45), Pride (H 46) | [Assignment 8] [No Silver Bullet] | - | H 10, 11, 39, 45, 46 |
| 10 | Legal Issues, Review | Open Lab: Review | - |
[Final]
[Solution] |
complete text |
Week 0 refers to the September 25-26 pseudo-week. 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 attend all of them as well.
The term "H s" refers to the required text by Hunt et.al.; for example, "H 27" refers to section 27. When sections are assigned, it's a good idea to skim the material "around" those sections as well.
Some topics we go over in lecture or lab are not covered in the text; I will try to provide additional references for those. Also, some parts of the book are assigned as reading only and are not covered in lecture or lab (unless you ask about what you have read).
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.
The department's programming guidelines make for quite interesting reading, often highly relevant for this course.
There is not really a "distinct" project in CS 100, instead all
project work is integrated with the regular assignments.
For the
Spring 2003
offering of this course, all of
the assignments focused on an implementation of the standard Unix
wc command, the so-called "word count" tool.
This quarter, all the assignments will be about a simple scheduling
application, called sg for "schedule generator" here.
For its user, sg offers the following basic service:
This simplifies maintaining an online schedule considerably:
Editing the text file is much easier than finding
your way around various
XHTML 1.1
tags for tables, and even repeating events are only present
once in the input file.
Once they are posted (soon I hope), you can find an example
input and the corresponding
output here.
More details on what sg must be able to do
will be given as we go along.
| Name | Members |
|---|---|
| TBD | TBD, TBD, TBD |
| TBD | TBD, TBD, TBD |
Testing: Assignments 50% (8), Quizzes 10% (2), Midterm 10% (1), Final 30% (1). See my policies for more information.
|
Copyright © 2003
Peter H. Fröhlich.
All rights reserved.
$Id: index.html,v 1.36 2003/11/24 01:36:56 phf Exp $ |
|