CS 450/550

Software Design and Development

Fall 2005 - 3 credits


General Information

Instructor

Jeanna Matthews
Office: Science Center 389
Phone: 268-6288
E-mail: jnm@clarkson.edu
Homepage: http://www.clarkson.edu/~jnm

Times

Class Times: MW 9-9:50 AM; W 8-8:50 AM, Science Center 334
Office Hours: M 11-12:30 W 10-12:30, 2-3 (ITL lab)

Required Texts

Frederick P. Brooks, The Mythical Man Month, 20th Anniversary Edition, Addison-Wesley, ISBN 0-201-83595-9

Recommended Texts

Shari Lawrence Pfleeger, Software Engineering: Theory and Practice. Prentice Hall, ISBN: 0-13-029049-1, Companion Web Site .
Steve McConnell, Code Complete: A Practical Handbook of Software Construction. Microsoft Press, ISBN: 1-55615-484-4.

Other helpful references

Eric S. Raymond, The Cathedral & the Bazaar, Musings on Linux and Open Source by an Accidental Revolutionary, http://www.catb.org/~esr/writings/cathedral-bazaar/ .
Roger S. Pressman, Software Engineering, A Practioner's Approach, 5th edition,McGraw-Hill, ISBN 0073655783, http://www.mhhe.com/engcs/compsci/pressman .
Eric J. Braude Software Engineering, An Object-Oriented Perspective, Wiley and Sons, ISBN 0-471-32208-3, http://www.wiley.com/college/braude.
Martin Folwer, Refactoring: Improving the Design of Existing Code, Addison Wesley, ISBN 0-201-48567-2.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, ISBN 0-201-63361-2.
Steve McConnell's Best Practices Columns and Other Articles
Steve McConnell's Top 10 Reading List
Watts Humphrey, "Why Don't They Practice What We Preach?"
Tom DeMarco and Tim Lister, "Programmer Performance and the Effects of the Workplace", Proceedings of the 8th International Conference on Software Engineering , August 1985, pp. 268-2782.
Jon Bentley, Programming Pearls .
James Adams, "Conceptual Blockbusting".

Webpages

I will rely heavily on this class web page for distributing information to the class. Please check it at least once before each class.

Here are some other helpful sites:

Software Engineering Institute at CMU, http://www.sei.cmu.edu/
Software Engineering Information Repository, http://seir.sei.cmu.edu
Guide to Software Engineering Body of Knowledge, http://www.swebok.org/
Brad Appleton's Software Engineering Links, http://www.cmcrossroads.com/bradapp/links/swe-links.html
Software Engineering Webliography, http://polaris.umuc.edu/~skerby/help/wbib_swe.htm

Class mailing list

To join, send request to jnm@clarkson.edu with your AFS username (clarkson email name and username when log into AFS like on crux)
Members can post to cs450@clarkson.edu
Web Archive of cs450@clarkson.edu

Official Course Description

This course will expose students to the methods of developing large software systems in an industrial environment. Working in teams, students will design, implement, and test large projects. The work will include oral presentations and written reports.

Prerequisites

CS344 or equivalent

Objectives

Give students a taste of how programming in industry is different and more complicated than programming for a course project
Expose students to tools and approaches that have been developed for managing this complexity

Outcomes

Students will complete a large programming project in teams
Students will learn about and produce documentation that should accompany large software products
Students will learn to think about software from the perspective of customors, designers, programmers, maintainers, users and owners
Students will understand and experience the full software lifecyle
Students will learn tools to help them become more efficient programmers

Group Project

A major component of this course will be a large group software project. Throughout the semester, you will be required to propose project ideas, choose team members, produce design documents and work schedules, submit periodic progress reports and give a final oral presentation of your groups work as well as a final experience paper reflecting on your experience. Your grade on this project will be a combination of a group project grade, grades on individual components and an evaluation by your team members.

I would especially like to see projects that projects that have real customers identified or perhaps that target computing contests such as the IBM Linux challenge.

Here are the final class project submissions from previous semesters: Fall 2004 , Fall 2003 and Fall 2001 .

Project Milestones

Software Request/Project Suggestion
Project Plan Documents
Project Design Documents
Final Deliverables

Homework

In addition to the group project, there will be individual homework assignments. Some will be programming assignments and others will be written assignments.

Late Policy

Meeting deadlines responsibly and consistently is an important skill to develop for software engineering. I do not expect to accept late work.

Due to the sequential nature of the work in this course, many assignments will need to be completed even if they are not completed on time and for credit.

Exams

There will be no exams in this course.

Attendance and Participation

Participating in class discussions is an important part of this course so attendance is required and will be a portion of your grade.

Grade

Notes on Academic Integrity

All work you submit must be your own individual work unless explictly indicated. In particular, work taken from books, the Internet, other students or any other source may not be submitted as your own. One violation of this policy will result in no credit for the assignment in question. A second violation will result in a failing grade for the class. Additional information about rights, obligations and procedures related to academic integrity can be found in Section IV of Clarkson's official regulations.

It is also an academic integrity violation for you to give your work to others. This includes sharing materials privately as well as making assignments available in Github or other public repositories.

Class Participation Activities

Mythical Man Month Reactions
Case Study Discussion
Participation in In-Class Code Reviews
Attendance at Labs and Lectures
The Cathedral and the Bazaar
Extreme Programming


Syllabus

**Tentative** schedule! Schedule will definitely change throughout the semester

Date Lecture Topic References Other Notes
Week 1
Mon
8/29
Welcome, Class Organization and Objectives, Class Introductions, How is programming in industry different than programming for a class project? Pfleeger 1 Think of software you would like and that you think your peers should be capable of producing. Be the customer! (Submit an html file with ideas for posting off class web page)
Write a description of your previous programming experience suitable for posting to the class.
Some questions to get you started
Weds
8/31
What is software (developers, companies, users)?
Weds
8/31
LAB: Makefiles
Week 2
Mon
9/5
How do we model the software development process? Why is modeling a good idea? Pfleeger 2; Pressman 1, 2
SEI links
Programming Resume and Project Ideas due; Homework 1 out
Weds
9/7
Discuss project ideas Check out your classmates' project ideas and resumes .
Weds
9/7
Personal Software Process and Team Software Process: How can we plan for/estimate large programming projects unless we first learn to plan for/estimate small ones?
Competing in the Software Age by Watts Humphrey
Pressman 2, Introduction to the Personal Software Process" by Watts Humphrey CS450_PersonalTracking.xls
Week 3
Mon
9/12
Overview of software project documentation in relationship to software process model; Discuss Pressman case studies; Mythical Man Month advertisement; HW 1 due, HW2 out
Mythical Man Month 1-3 reading assigned
Weds
9/14
Code Quality: What are the attributes of high quality code? How to increase the quality of code you write? Pfleeger 7, McConnell 4-5, 8-11, 13-17, 18-19; "Writing Solid Code" by Steve Maguire
Commenting Strategies
Weds
9/14
LAB: Solid Code Examples, Intro to gdb McConnell 26; GNU Manuals Online including gdb
Week 4
Mon
9/19
Discussion Mythical Man Month 1-3: Historical Perspective, Programs vs Programming Products vs Programming Systems vs Programming Systems Products; Joys and Woes of the Craft; Estimating; The Mythical Man Month
( Related Links )
Mythical Man Month 1-3
Weds
9/21
LAB: Using Debuggers Continued: gdb, ddd
Weds
9/21
9 AM Visit from Greg Lacey (IBM)
Thurs
9/22
Career Fair: 1-4:30 p.m. and 6:30-9 p.m. in both the ERC and on the Cheel Campus Center's Main Street.
Fri
9/23
By 5 pm, send mail with list of team members, the customer you are working with and brief (1-2 paragraph) description of the project you are doing.
Week 5
Mon
9/26
Finish up Mythical Man Month discussion; User Requirements HW 2 due;Mythical Man Month 1 page reactions due in hardcopy
Weds
9/28
Project Planning and Estimation, Project Schedules, Dynamic Project Schedules, Project Monitoring and Risk Assessment Pfleeger 3; Pressman 4-9, McConnell 1-3,21-23
HW3 out
Wed
9/28
Lab: Planning Tools Imendio Planner
dotProject
Week 6
Mon
10/3
NO CLASS: FALL RECESS
Weds
10/5
LAB: Getting up to speed in a software project; Download, configure and build open source software Discuss HW4; Reminder HW 3 deadline of 9AM Monday is a hard deadline
Week 7
Mon
10/10
What is Design? What are Design Documents? Object Oriented Analysis Pfleeger 5-6, McConnell 6-7, Pressman 13-14 HW 3 due 9 AM; HW4 out
Weds
10/12
UML, Design Patterns, Design to Code Tools; Extreme Programming Advertisement Pressman 18
"Design Patterns" Gamma/Helm/Johnson/Vlissides
Weds
10/12
LAB: Design Tools
Dia
dia2code
Project Plan Documents Due
Friday
10/14
Project Plan Documents Due - in hardcopy to the department office *and* in soft copy to your new project directories
Week 8
Mon
10/17
Extreme Programming especially The Rules and Practices of Extreme Programming ; Compare to Mythical Man Month Chapter 3 HW 4 due
HW5 out
Weds
10/19
NO CLASS; PROJECT PLAN MEETINGS EARLIER IN THE WEEK
Week 9
Mon
10/24
Software Testing, White Box Testing, Black Box Testing Pfleeger 8-9, Pressman 17-18, McConnell 25 HW 5 due
HW6 out
Wed
10/26
LAB:Shell Scripts, Intro to Automated Testing Script
Week 10
Mon
10/31
Software Maintenance, Refactoring, Performance Tuning Pfleeger 11, McConnell 28, 29, 30
"Refactoring", Fowler
HW 6 due
HW7 out
Weds
11/2
LAB: gcov, gprof, Purify
Week 11
Mon
11/7
User Interface Design; Advertisement for Cathedral and the Bazaar Pfleeger 4; "The Design of Everyday Things"
For cross platfrom GUI development try wxWindows
Design Documents Due (9 AM)
Weds
11/9
PROJECT REVIEW MEETINGS (20 minute slots)
Week 12
Mon
11/14
LAB: Bake-off prep HW 7 due, Debate any test cases due
Wed
11/16
LAB: Bake-off Final contest submission due 8 AM
Week 13
Mon
11/21
Movie
HW 8 out
Wed
11/23
NO CLASS THANKSGIVING BREAK
Week 14
Mon
11/28
Cathedral and the Bazaar, Code Review winners code Other recommeded reads:
A Brief History of Hackerdom
The Art of Unix Programming
Mon
11/30
Cathedral and the Bazaar continued, Summarize Process Data McConnell 31-33 Demo setup requests due
Homework 8, Part 1 before class
Week 15
Mon
12/5
PROJECT PRESENTATIONS (15-20 minute slots; videotaped)
Wed
12/7
PROJECT PRESENTATIONS (15-20 minute slots; videotaped) Homework 8 remainder due by 5 pm
Week 16
Mon
12/12
FINALS WEEK
Wed
12/14
FINALS WEEK Project html pages and tar/zip files due 5 PM.