Sophomore PED

This seminar is intended to help you develop abilities to help you become a more qualified computer professional. One of the skills that is difficult to teach in most classes but which is essential to your success in any real programming project is that of design. This course is going to focus on teaching how to do design with UML. During the course of the semester you will be working with other students in groups to create a solution to a single, significant problem. The course will also touch on ethics issues related to computing and we will have presentations from a number of outside professionals working in the field of computing.

Texts - The text for this class is "Learning UML 2.0" by Miles and Hamilton, published by O'Reilly. We will go through this book roughly one chapter each week over the course of the semester. The assignments that you turn in for the project will require you to use the different tools described in this text.

Tools - There are many tools that you can use for doing UML. Unfortunately, the most powerful ones that include all of the different UML diagrams can be quite expensive. They will typically have trial versions that you can use for a limited time for free. If you download and install one of those in early March it should be valid during the rest of the semester. We'll look at some of these and the capabilities they have during the class. Many of these tools integrate with Eclipse if you happen to be using that as an editor.

Problem Description

The problem that you are to solve this semester is to design and prototype a tool for ranking Universities according to the users preference of what is important to them. To understand what is required, I'll describe the motivation that led to the idea for this project. As you are well aware, US News and World Report publishes an annual ranking of Colleges and Universities around the country. There web site will let you look at the top few schools in each category for free, or for a small fee, you can see all of the schools and the information used in the rankings. For a functional viewpoint I have a few problems with their rankings. First, there is no way to compare schools in different categories. More significant is that you might value some things differently than what US News did. For example, some people might think cost is more important than class size while others don't. They currently have a search functionality that lets you find schools without a certain distance of where you live as well as schools that either have or don't have certain departments. Unfortunately, there is no way to rank the search result.

My feeling was that you should be able to give your own priority to different aspects of the school and in that you should be able to specify the elements you can currently only search against as being part of the priority. For example, you might want a school that is fairly close, but you don't want to have a hard limit. You could say that distance should count as 10% of the ranking, or something similar.

As part of this project you will design the user interface and methods for how the user can specify their own rakings. You can make up your own data or copy some from the US News web site. I will be your end user that you can pass thoughts by for different types of functionality that you might consider implementing.

Course Requirements

As one would guess from the nature of this course, the primary evaluation will be based upon the design that you produce for your part of the project and your prototype of it. Some of your grade will also come from work on a small ethics project. Attendance will also be significant. Most of the work for the course will be done in groups (5 people). Each group will work on a its own design and implementation. You will be turning in various artifacts of the analysis and design over the course of the semester. You should also produce a simple prototype. Note that a prototype doesn't have to be completely functional, it just has to look functional when you demo it. Obviously having it be more functional can be helpful to your grade.

It should be noted that one of the keys to success for your group and the project as a whole will be communication. I will be setting up and monitoring some discussions under Blackboard where I expect each of the groups to participate in communicating what they have come up with. If nothing else, this project could teach you just how hard it is to build a large project on a moving foundation.

Your grade for the course will be based on what is submitted by your group for each of the following analysis, design, and implementation artifacts. It will also be weighted by the results of group surveys that will help me to judge how great a contribution each member of the groups has provided.

1. Whole project ideas - This is a write-up of your ideas concerning the project as a whole. It should encompass all of the most significant design decisions in the problem, including questions such as what pieces it should be broken into, and what languages or tools should be used as well as some early ideas about features.

2. Analysis - For this you will be expected to turn in a complete description of what your group will be working on. This analysis will include two parts. The first part is a use-case diagram for your project. Your diagram will need to break things up a fair bit. It might have a single actor, but it should include multiple actions in it and you should break the actions down a bit to try to isolate the logic of what is going on.

3. Class Diagram - You can throw in some object diagrams as well if they will help communicate ideas for your design.

4. Draft UML - Near the end of the semester I will expect a complete set of UML diagrams showing the overall design of your group's solution to the project. Use whatever diagrams you think are most significant for communicating your design.

5. Final submission and presentation including prototype demonstrations - This presentation by the group will showcase the design that you have built during the course of the semester. It will culminate with a presentation by each group of some implementation of their project. The presentation must include the various UML diagrams that you have developed over the course of the semester.


This is a rough schedule of what will be covered during the semester. It shows you what we will be covering and what work you are expected to have completed by specific dates. On days when we have speakers it is likely that we will have time after the speaker to cover other topics and I will talk about different types of UML diagrams during that time.


Topics Reading Due
1-15 MLK Holiday    
1-22 Introduction and problem description -- Basics of UML and Use Case Diagrams Ch. 1 & 2  
1-29 UML Lecture -- Activity Diagrams Ch. 3 Whole project ideas
2-5 Ethics Presentation -- Class Diagrams Ch. 4  
2-12 Speaker: Valero -- Advanced Class Diagrams Ch. 5 Analysis
2-19 Speaker: Munsingers on IP and Contracts -- Object Diagrams Ch. 6  
2-26 Speaker: Mosso-- Sequence diagrams Ch. 7  
3-5 Ethics Presentations -- Communication Diagrams Ch. 8 Class Diagrams
3-12 Spring Break    
3-19 Speaker: Digital Defense -- Timing & Interaction Overview Diagrams Ch. 9 & 10  
3-26 Speaker: Dan Cornell, Denim Group-- Composite Structures Ch. 11  
4-2 Junior Design Presentations -- Component Diagrams Ch. 12  
4-9 Senior Thesis Presentations -- Package Diagrams Ch. 13 Draft UML
4-16 Senior Software Presentation -- State Machine Diagrams Ch. 14  
4-23 Sophomore Design Presentation -- Deployment Diagrams Ch. 15 Final Submission/Presentations


Group Assignments

Group Evaluation Forms (Word Document, PS)

Omondo EclipseUML - This is the site that has the UML tool that we will be working with. You will nee to download the Eclipse UML installer and if you haven't installed Eclipse or if your version of Eclipse is older than 3.0.1, you should install Eclipse 3.0.1. If you had Eclipse installed before and you have problems with it not seeing the UML tool, delete the configuration folder under the eclipse directory. You can download the free version at any time, but for this class I recommend that you download the studio version and send me an e-mail so that I can give you a license file and directions to use it. The license file is for only. I can't promise you that it will work away from campus, nor am I certain if there are any time limits on it so you might find that at some point you have to use their free version instead.

EclipseUML Manual - This is linked to on the download page, but I'll put a link here as well just to make certain that you can find it. This is not small, but it should help you with just about anything you want to do in EclipseUML.

Posiedon UML - This is a tool based on the open source Argo UML tool.