Spring Quarter 2003: March 31, 2003 - June 6, 2003
| Less: | Basics | Coordinates | Books | Schedule | Assessment | | | More: | Teams | Policies | Scores | | | Home |
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. 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:
By appointment only (email me);
Monday & Friday, 3:00 pm - 4:00 pm.
Assistant:
Terrance Hamilton
Office Hours:
Friday, 1:30 pm - 2:30 pm, Surge 358
Assistant:
Honomount Rawat
Office Hours:
Friday, 12:30 pm - 1:30 pm, Surge 282
Assistant:
Ashish Sharma
Office Hours:
Wednesday, 11:30 am - 12:30 pm, Surge 282
Mailing List: cs100@lists.cs.ucr.edu (Archive)
Lectures:
Monday, Wednesday, Friday, 5:10 pm - 6:00 pm
Location:
Sproul Hall,
Room 1340
| Author | Title | Comment |
|---|---|---|
| Kernighan, Pike (KP) | The Practice of Programming |
Required! 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. |
| Fowler, Scott (FS) | UML Distilled |
Required! Succinct discussion of a variety of software engineering topics centered on the UML notation. Deals with development processes, use cases, class diagrams, interaction diagrams, state diagrams, activity diagrams, etc. Also discusses various programming techniques. |
| Hunt, Thomas | The Pragmatic Programmer |
Recommended! Lots of practical advice on programming and software development in general, e.g. how to organize your code, how to debug, how to test, etc. Similar in intent to the text by Kernighan and Pike, but quite a different approach; the books complement each other nicely. |
| Gamma, Helm, Johnson, Vlissides | Design Patterns |
Recommended! The standard reference for design patterns: well-documented solutions to recurring design and implementation problems. |
| Liskov, Guttag | Program Development in Java |
Recommended! 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. |
| McConnell | Code Complete |
Recommended! 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. |
| Week | Lecture | Assignment | Exam | Reading |
|---|---|---|---|---|
| 1 | Software Engineering, Software Qualities, Development Processes, Teams and Individuals (roles) | Assignment 1 |
Entrance
Solution |
KP1 FS1&2 |
| 2 | Coding Standards (layout, style, comments, idioms, editors), Compiler Feedback (static analysis), Code Reviews (inspections, walkthroughs) | Assignment 2 | - | KP2 FS3 |
| 3 |
Documentation
(doxygen),
Configuration Management
(cvs),
Build Management
(make),
Scripting and Automation
(cron)
|
Assignment 3 |
Quiz 1
Solution |
KP3&4 FS4 |
| 4 | Debugging | Assignment 4 | - | KP5 FS5 |
| 5 | Testing | Assignment 5 [debug.tar.gz] |
Midterm
Solution |
KP6 FS6 |
| 6 | Python Intro (Titus Winters), "The Real World" (Dan Berger), Coverage & Performance (gcov, gprof) | Assignment 6 [coverage.tar.gz] | - | KP7 FS7&8 |
| 7 | Design | Assignment 7 | - | KP8 FS9 |
| 8 | Design Patterns (template method, strategy, iterator, composite, visitor, proxy) | Assignment 8 |
Quiz 2
Solution |
KP9 FS10&11 |
| 9 | Prototyping? |
Assignment 9
Parnas Paper |
- | KP1-9 FS1-11 |
| 10 | Review, Outlook | - |
Final
Solution |
KP1-9 FS1-11 |
The entrance exam will cover what you are expected to know at the start of the course, especially the topics discussed in the CS 10, 12, 14, 141 sequence.
There is lab in the first week and you will not be able to "make up" either the lab or the entrance exam later in the quarter!
You are expected to do the assigned reading before a topic is covered in class; 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.
Terrance volunteered a sample solution for Assignment 1, at least the implementation part: [ .tar.gz | .zip ]
Testing: Assignments 50% (9), Quizzes 10% (2), Midterm 10% (1), Final 30% (1). This is still somewhat tentative.
Grading: The "usual" percentage scale (60%+ = D, 70%+ = C, 80%+ = B, 90%+ = A), with some "good-natured fudging" at the end maybe.
|
Copyright © 2003
Peter H. Fröhlich.
All rights reserved.
$Id: index.html,v 1.20 2003/05/28 17:54:50 phf Exp $ |
|