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 a good object oriented design. During the course of the semester you will be working with other students in groups to create a solution to a single, significant problem.
Texts - There is no required text for this course (I don't feel comfortable giving a required text for a 1 hour course). However, there should be so I would recommend that you get a book on UML. I recommend "UML Distilled: Third Edition" by Martin Fowler, "UML in a Nutshell" by Sinan Si Alhir, or "Fundamentals of Object-oriented Design in UML" by Meilir Page-Jones. All three should be fairly easy to find and range in cost from $25 to $40. If you want to see them to see what they have in them before getting one, feel free to visit my office and look at my copies.
Tools - To help you with this project you will be using an automated design tool called Together by TogetherSoft. This piece of software can be downloaded for free from www.TogetherSoft.com if you can find version 6.0. I can give you an academic license for you to use while working on this project, unfortunately it doesn't work on version 6.1. You can also use Together in the labs by executing "/users/Together/TogetherSoft/Together6.0/bin/Together.sh". You can also try getting an evaluation key from Together though I'm not certain how long they last for. They also have a plugin for Eclipse that you might consider using if you have Eclipse installed on your home machine. Let me know what you think about each of them if you do install them because the department might have to pay for these things in the future and knowing what products work best will be helpful.
This piece of software is a UML design tool that can work with a number of object-oriented languages. I believe you will all have had experience with it in PAD2 doing Java development. You might consider using CVS to share code and other artifacts of your design work among group members.
The problem that you are to solve this semester is to design and prototype an IDE for an implementation of a derivative of the BASIC programming language. I choose this language for two reasons. First, it is simple enough to allow you to do an implementation. Second, it is a nice educational language for young people to learn with and I'm interested in your IDE being good for this.
Of significant importance to you is how the work on this project will be done. I'm doing things slightly differently this year than I have in previous years. You will be broken up into groups of 6 or 7. Each group will do their own design and prototype implementation. As I see it, the project breaks nicely into three parts and roughly two people from each group can work on each part. However, I want to let you think about that as that is a design aspect.
There are many variations of BASIC and it is up to you which one you want to implement. I believe that line numbered BASIC is the easiest in many ways, but it is also VERY different from how most of you have learned to program. At the bottom of the page there is a link to a site that describes many possibilities with BASIC.
While it is up to you as to exactly what your BASIC language and the IDE look like, I do have a few 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. Most of the work for the course will be done in groups (6-7 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. The interaction between the various components in this project is critical for it to actually work. I will be setting up an 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.
2. Analysis of problem segment - 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. We will talk about what use-case diagrams are in class. 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. Use Together to generate this and provide a hard copy for me.
3. Description of public interface - For this you will submit a formal description of what the public interface for your component of the project is. The main description will be a UML class diagram of your publicly visible classes and their public interfaces. It should also include narratives on the function of each of the public methods and what they are used for as a separate document. For this class this narrative should also include some indication of the implementation that the public interface is hiding as well. In general you would not do this, but it will give me a chance to more closely monitor your progress. If you wish to separate this into distinct paragraphs that would probably be wise.
4. UML - Near the end of the semester I will expect a complete UML class diagram showing the overall design of your group's component of the project. You should also include sequence diagrams of the key routines.
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 is subject to extreme alteration but it should give you an idea of what we will be covering and what work you are expected to have completed by specific dates.
|1-14||Introduction and problem description|
|1-21||Project Ideas and Use Case Diagrams|
|1-28||Use Case Diagrams||Whole project ideas|
|2-4||Ethics in CS|
|2-11||UML class diagrams|
|3-10||Common Session||Public Interface|
|3-31||More Sequence diagrams|
|4-28||Common Session||Final Submission/Presentations|
Together Download - register yourself and write me for the key once you have it installed
Use Case Diagram Links
Use Case Diagrams: Tips and FAQ
Lecture 1: Use Cases and Use Case Diagrams
Modeling with UML (Use Case Diagrams & Classes)
UML Second Pass: Use Case Diagrams
Use Case Diagrams
Sequence Diagrams Lecture Slides
BASIC Language Links