CS 450/550

Software Design and Development

Fall 2004 - 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; MW 8-8:50 AM, Science Center 344
Office Hours: TBA

Recommended Texts

Frederick P. Brooks, The Mythical Man Month, 20th Anniversary Edition, Addison-Wesley, ISBN 0-201-83595-9
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 mailto:cs450@clarkson.edu
Web Archive of http://majordomo.clarkson.edu/cgi-bin/wilma/cs450

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 target one of the following contests, 2005 IEEE Computer Society International Design Competition, CiSE Educational Software Contest and the IBM Linux Challenge, and/or projects that have real customers identified.

Here are the final class project submissions from Fall 2003.

Here are the final class project submissions from Fall 2001.

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.

Homework Assignments

Homework 1: Baseline, Estimating

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

Projects

Deliverables

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


Syllabus

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

Date Lecture Topic References Other Notes
Week 1
Mon
8/23
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/25
What is software (developers, companies, users)?
Weds
8/25
LAB: Makefiles
Week 2
Mon
8/30
How do we model the software development process? Why is modeling a good idea? Pfleeger 2; Pressman 1, 2 Programming Resume and Project Ideas due; Homework 1 out
Weds
9/1
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? Pressman 2, Introduction to the Personal Software Process" by Watts Humphrey CS450_PersonalTracking.xls
Weds
9/1
LAB: Solid Code Examples, Intro to gdb McConnell 26; GNU Manuals Online including gdb
Week 3
Mon
9/6
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 HW 1 due, HW2 out
Weds
9/8
Overview of software project documentation in relationship to software process model Mythical Man Month 1-3 reading assigned
Review Pressman case studies for Monday
Weds
9/8
LAB: Using Debuggers Continued: gdb, ddd
Week 4
Mon
9/13
Discussion Mythical Man Month 1-3 ( Related Links )
Discuss Pressman case studies;
Mythical Man Month 1-3
Weds
9/15
Discuss project ideas, 8-9 AM, ITL Skim the case studies and your classmates' project ideas and resumes before class. Come ready to discuss.
CS450_PersonalTracking.xls
Weds
9/15
Mixer, 9-10, Peterson Board Room, 3rd Floor New Snell
Week 5
Mon
9/20
Mythical Man Month continued; User Requirements, User Interface Design Pfleeger 4; "The Design of Everyday Things" HW 2 due; HW 0 (DOC ) and 1 (DOC )back
For cross platfrom GUI development try wxWindows
Weds
9/22
Project Planning and Estimation; Prerequisties to Software Construction, Writing a Project Plan, Risk Management, Project Scheduling/Tracking Pfleeger 3; Pressman 4-9, McConnell 1-3,21-23
Wed
9/22
Greg Lacey from IBM visiting 9-10 AM Visit the Career Fair !!!!!
Fri
9/24
By 5 pm, send mail with list of team members and brief (1-2 paragraph) description of the project you are doing
Week 6
Mon
9/27
NO CLASS: FALL RECESS
Wed
9/29
What is Design? What are Design Documents? Pfleeger 5, McConnell 6-7, Pressman 13-14
Weds
9/29
LAB: Getting up to speed in a software project; Download, configure and build pine
Fri
10/1
HW 3 due by noon
Week 7
Mon
10/4
Object Oriented Analysis, Unified Modeling Language (UML) Pfleeger 6 HW 2 (DOC ) and 3 (DOC )back
Wed
10/6
UML, Design Patterns Pressman 18
"Design Patterns" Gamma/Helm/Johnson/Vlissides
Project Plan Documents Due
Week 8
Mon
10/11
Extreme Programming especially The Rules and Practices of Extreme Programming
Weds
10/13
Software Testing, White Box Testing, Black Box Testing Pfleeger 8-9, Pressman 17-18, McConnell 25
Wed
10/13
LAB:Shell Scripts, Intro to Automated Testing Script HW 4 due
Week 9
Mon
10/18
Time to work on design documents/Cathedral and Bazaar
Wed
10/20
Time to work on design documents/Cathedral and Bazaar
Weds
10/20
LAB: gcov, Purify
Week 10
Mon
10/25
Cathedral and the Bazaar Other recommeded reads:
A Brief History of Hackerdom
The Art of Unix Programming
Design Documents Due
Weds
10/27
LAB: gprof
Wed
10/27
Software Maintenance, Refactoring, Performance Tuning Pfleeger 11, McConnell 28, 29, 30
"Refactoring", Fowler
Week 11
Mon
11/1
PROJECT REVIEW MEETINGS (20 minute slots) HW 5 due
Wed
11/3
PROJECT REVIEW MEETINGS (20 minute slots)
Week 12
Mon
11/8
LAB: Bake-off prep/ test case debug HW 4 (DOC ) and 5 (DOC )back
Wed
11/10
LAB: Bake-off prep HW 6 due; Debate any test cases due
Week 13
Mon
11/15
LAB: Bake-off Final lab submission 8 AM
Wed
11/17
In-class code review (the winner(s)?)
Week 14
Mon
11/22
Lessons Learned, Where to go From Here McConnell 31-33
Mon
11/22
Demo setup requests due
Wed
11/24
NO CLASS THANKSGIVING BREAK
Week 15
Mon
11/29
PROJECT PRESENTATIONS (15-20 minute slots; videotaped)
Wed
12/1
PROJECT PRESENTATIONS (15-20 minute slots; videotaped) Homework 7 due
Week 16
Mon
12/6
FINALS WEEK Project html pages and tar/xip files due.