CS 180: Introduction to Software Engineering

Spring Quarter 2003: March 31, 2003 - June 6, 2003


Less: Basics Coordinates Books Schedule Assessment   |   More: Policies Scores TA Page   |   Home

Basics

Catalog Description: A study of software engineering techniques for the development, maintenance, and evolution of large software systems. Topics include requirements and specification; system design and implementation; debugging, testing, and quality assurance; reengineering; project management; software process; tools; and environments.

Prerequisite(s): CS 141. Let me emphasize that you should have good writing skills to pass this class as a large portion of the course work will be reports of various kinds. You should also have reasonable 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).


Coordinates

Instructor: Peter H. Fröhlich
Office Hours: By appointment only (email me); Monday & Friday, 2:00 pm - 3:00 pm.

Assistant: Timothy Mauch
Office Hours: Tuesday & Wednesday, 2:30 pm - 3:30 pm, Surge 282

Mailing List: cs180@lists.cs.ucr.edu (Archive)

Lectures: Monday, Wednesday, Friday, 4:10 pm - 5:00 pm
Location: Olmsted Hall, Room 1208


Books

Author Title Comment
Sommerville (S) Software Engineering

Required! Broad introductory discussion of everything (well, almost) related to software engineering. You can download the slides for the book here.

Fowler, Scott UML Distilled

Recommended! 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.

Kernighan, Pike The Practice of Programming

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.

Hunt, Thomas The Pragmatic Programmer

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

The standard reference for design patterns: well-documented solutions to recurring design and implementation problems.

Liskov, Guttag Program Development in Java

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.

Palast The Best Democracy Money Can Buy

Detailed background on what went wrong in Florida in the 2000 presidential election. One of those books you can be sure the "president" has not read yet...


Planned Schedule (Tentative!)

Week Lecture Assignment Exam Reading
1 Introduction, Systems Engineering Assignment 1 Entrance
Solution
S1&2
2 Software Processes, Software Requirements - - S3&5
3 Requirements Engineering, System Models Assignment 2 - S6&7
4 Architectural Design, Object-Oriented Design - - S10&12
5 Distributed Systems, Midterm Review Assignment 3 Midterm
Solution
S11
6 User Interface Design, Dependability - - S15&16
7 Verification and Validation, Software Testing Assignment 4 - S19&20
8 Project Management, Quality Management - - S4&24
9 An Industry View of Software Engineering (Joachim Feise), Software Change Assignment 5
Brooks Paper
Parnas-Clements Paper
Final Preview S27
10 Configuration Management, Review, Outlook - Final
Solution
S1-29

Assessment

Testing: Assignments 50% (5), Midterm 20% (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.12 2003/06/02 07:54:27 phf Exp $
Valid XHTML 1.1!