ICS 121: Software Tools and Methods

Course Information

NumberICS 121
TitleSoftware Tools and Methods
QuarterSpring 2004
Course Code36320
Mailing List36320-S04@classes.uci.edu
InstructorJason Robbins
LectureM W F 3:00-3:50pm RH 101
Discussion 1 W 1:00-1:50p in CS180 with Christopher Van der Westhuizen
Discussion 2 F 1:00-1:50p in CS180 with Elmer Kim
LabsM 10:00-10:50, F 9:00-9:50, or F 2:00-2:50p in CS183
Final ExamMon, Jun 14 4:00 - 6:00 p.m. in RH 101

Syllabus

Week
Monday
Wednesday
Friday
1: Intro & Perspective
Reading: F1, S1, S2, B1, B2, B3, B16
Course information and goals
Survey of student background
What is engineering?
Software engineering challenges
Tools, Notations & Methods
Software product qualities
Elements of the "larger product"
Members of the "larger team"
2: User Needs & Dev. Processes
Reading: F2, S3, S4
Gathering requirements
Expressing user needs
Software process models
Development facilities
Version control
Unified process
Agile / Extreme methodologies
Open source practices
3: Spec. & Design
Reading: F3, F5, S5, S6, S7
Specification vs. Design
UML use cases
Feature specifications
Design qualities
UML class diagrams
4: Spec. & Design
No Lab 4
Reading: F7, F8, S8, S9
UML class and package diagrams
Mini-project abstracts due
Other specification and design notations
Midterm exam
5: Improving Design
Reading: B4, B10, F4, F10,
patterns intro and FAQ
Object-orientation
Design patterns
Design maintenance: modularity, refactoring
UML state diagrams
6: Design Specialties
Reading: B17, S12, S14, S15
UML activity diagrams
UML sequence diagrams
UML collaboration diagrams
Design specialties
UML collaboration diagrams
UML deployment diagrams
7: Implementation
Implementation concerns
IDEs & language choice
Code generators / Rev. Eng.
Automated builds
Assertions
Style guides and code analysis
Quality concerns & approaches
Mini-project drafts due
8: Software Quality
No Lab 8
Reading: S19, S20, JUnit docs
QA plans
Test suites
System test automation
Midterm exam
Mini-project due
9: Quality Activities
Reading: Javadoc guide
Memorial Day
Design and code reviews
Design for testability
Unit testing with JUnit
UML review
10: Team tools
No Lab 10
Reading: B11, B14, S22, S24, S29
The mechanics of teamwork
Planning and scheduling releases
Issue tracking
Release checklists
Review/TBD
Mini-project corrections due
Finals
Final exam

Reading: B = Brooks, F = Fowler, S = Sommerville.

Goals for the Course

Expectations for the course

Deliverables and Grading

AssignmentPoints
Labs30 (best 5 out of 7 assignments)
Mini-project10 + up to 10 extra
Midterm Exams15 + 15
Final Exam30

Weekly individual lab assignments require students to practice using the tools and methods taught in the couse. Each lab is a combination of (a) questions on the lecture and reading material and (b) exercises in software development activities.

Weekly labs are due the following Tuesday: e.g., lab 1 is due Tuesday of week 2. Lab assignments should be printed, stapled, and handed in at the distribution center before it closes. Late labs will not be accepted: no exceptions.

Lab regrade requests must be done in writing. Use this form for regrade requests. Hand in your regrade request and the assignment to be regraded to the distribition center. Regrades will only be considered if requested within one week after the assignment is handed back.

Midterm and final will be held in the lecture room. Make-up exams will only be offered in cases of extreme hardship, and require physician's note or other documentation.

Mini-Project

Details on the mini-project

Textbooks and Reading

Tools

In this course you will learn about the following software engineering tools:

Most tools are installed in the 3rd floor lab in the CS building. Ask the lab attendant for a login if you don't have one yet; mention that you are enrolled in this class.

Development Document Templates

Software engineering requires careful thought and planning. This is done by writing documents for the project proposal, overview, plan, requirements, specification, design, release notes, demos, etc. This is usually a significant fraction of the overall effort put into software development.

For this course, you will use a set of project document templates. You will fill in the content to describe your particular project. This will allow the course to go into greater depth and breadth with less effort spent on mechanics. The templates themselves contain a good amount of useful information to get you started and make you think.

Catalog description

121 Software Tools and Methods (4). Concepts and techniques of constructing software in a systematic fashion, including detailed design techniques, specifications, programming methods, quality-inducing procedures, development tools, team techniques, testing, estimation, and performance improvement. Laboratory work involves exercises to illustrate important concepts, methods, and tools. Prerequisites: ICS 52 or CSE90 with a grade of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A; satisfactory completion of the lower-division writing requirement. Same as CSE121.

Notes

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately to discuss his or her specific needs. Also contact the Disability Services Center at (949) 824-7494 as soon as possible to better ensure that such accommodations are implementationed in a timely fashion.
sample use case templateexample test plan templateProject plan template