CS 450/550
Software Design and Development
Fall 2003 - 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: M 9-9:50 MW 10-10:50 PM, Science Center 344
Office Hours: TBA

Required Texts

Shari Lawrence Pfleeger, Software Engineering: Theory and Practice. Prentice Hall, ISBN: 0-13-029049-1.
Frederick P. Brooks, The Mythical Man Month, 20th Anniversary Edition, Addison-Wesley, ISBN 0-201-83595-9

Recommended Texts

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

(Not yet set up) Post to mailto:cs450@clarkson.edu
Web Archive of http://www.clarkson.edu/majordomo/public/cgi-bin/index.cgi/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, 2004 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 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

TBA

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

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/25
Welcome, Class Organization and Objectives, How is programming in industry different than programming for a class project? What is software and software engineering? 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) Due 9/1
Mon
8/25
Software Process Models : How do we model the software development process? Why is modeling a good idea? Pfleeger 2; Pressman 1, 2 Write a description of your previous programming experience suitable for posting to the class.
Some questions to get you started
Due 9/3
Weds
8/27
LAB: Makefiles    
Week 2
Mon
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 Programming Resume and Project Ideas due; Homework 1 out
Mon
9/1
LAB: Solid Code Examples, Intro to gdb McConnell 26  
Weds
9/3
Discuss Pressman case studies; Discuss ideas for projects   Skim the case study before class. Come ready to discuss.
Week 3
Mon
9/8
Mixer   Homework 1 due
Weds
9/10
Code Quality: What are the attributes of high quality code? How to increase the quality of code you write? McConnell 4-5, 8-11, 13-17, 18-19; "Writing Solid Code" by Steve Maguire  
Week 4
Mon
9/15
LAB: Using Debuggers Continued: gdb, ddd    
Mon
9/15
Project Planning and Estimation Pressman 4-5, McConnell 21  
Wed
9/17
LAB: Discussion Mythical Man Month 1-3 ( Related Links ) Mythical Man Month 1-3  
Week 5
Mon
9/22
Risk Management, Project Scheduling/Tracking, Software Quality Assurance and Configuration Management Pressman 6-9, McConnell 22-23  
Mon
9/22
Prerequisties to Software Construction, Writing a Project Plan McConnell 1,2,3  
Wed
9/24
LAB: Getting up to speed in a software project    
Week 6
Mon
9/29
NO CLASS: FALL RECESS    
Wed
10/1
What is Design? What are Design Documents? McConnell 6-7, Pressman 13 Project Plan Documents Due
Week 7
Mon
10/6
User Requirements, User Interface Design "The Design of Everyday Things"  
Mon
10/6
Time for Group Meetings/Return Project Plan Documents    
Wed
10/8
Characteristics of Good Design, Heuristics for Achieving Good Design McConnell 6, 7; Pressman 14  
Week 8
Mon
10/13
LAB: Time for Group Meetings    
Mon
10/13
Object Oriented Analysis, Unified Modeling Language (UML)    
Wed
10/15
UML, Design Patterns Pressman 18
"Design Patterns" Gamma/Helm/Johnson/Vlissides
 
Week 9
Mon
10/20
LAB: gprof, gcov, Purify    
Mon
10/20
    Design Documents Due
Wed
10/22
Software Testing, White Box Testing, Black Box Testing Pressman 17-18, McConnell 25  
Week 10
Mon
10/27
LAB: Code Reviews Overview, Discuss Homeworks 4 and 5 McConnell 24, Pressman 8  
Mon
10/27
In-class Code Reviews    
Wed
10/29
In-class Code Reviews    
Week 11
Mon
11/3
PROJECT REVIEW MEETINGS    
Mon
11/3
PROJECT REVIEW MEETINGS    
Wed
11/5
PROJECT REVIEW MEETINGS    
Week 12
Mon
11/10
LAB:Shell Scripts, Intro to Automated Testing Script    
Mon
11/10
Software Maintenance, Refactoring, Performance Tuning McConnell 28, 29, 30
"Refactoring", Fowler
 
Wed
11/12
Discussion of Mythical Man Month 4-6, 16-19    
Week 13
Mon
11/17
LAB: Bake-off beginning: Debate any test cases    
Mon
11/17
LAB: Bake-off conclusion?/Reflection    
Wed
11/19
Cathedral and the Bazaar, Lessons Learned, Where to go From Here McConnell 31-33 Reaction to Cathedral and the Bazaar due
I highly recommend A Brief History of Hackerdom also but it is not required
Week 14
Mon
11/24
LAB:Source Control with CVS    
Mon
11/24
Open Source Software Example: GNU textutils   Demo setup requests due
Wed
11/26
NO CLASS THANKSGIVING BREAK    
Week 15
Mon
12/1
PROJECT PRESENTATIONS (videotaped)    
Mon
12/1
PROJECT PRESENTATIONS (videotaped)    
Wed
12/3
PROJECT PRESENTATIONS (videotaped)    
Week 16
Mon
12/10
FINALS WEEK   Final Homework 7 due
Project html pages and tar/xip files due.