COSC320 Advanced Software Design

Spring 2009

pages.central.edu/emp/fyfes/courses/asd/



REQUIRED TEXTS:

Using UML: Software Engineering with Objects and Components. Second edition. By Perdita Stevens. Addison Wesley publishers.

Beautiful Code, Leading Programmers Explain How They Think. Edited by Oram and Wilson. O'Reilly Publishing. Students will be provided single chapters of this text.

Several Online resources will be provided.


INSTRUCTOR: Stephen Fyfe OFFICE: 231 Vermeer Science Center
PHONE: 628-5305
HOME 628-9955
EMAIL: fyfes@central.edu
OFFICE HOURS: MWF: 10:00 - 11:00 and 1:00 - 2:00 TR: 1:00 - 2:00
Other times by appointment, or just stop in

COURSE DESCRIPTION: This course is a study of the principles and techniques for a methodical construction of quality software. Software design concepts using UML will be studied and implementation issues will be considered.


COURSE OBJECTIVES: The objectives for this course include:

Given the above objectives, these are the primary topics for this course:
  1. Design Methodologies/Processes
  2. UML design tools
  3. Code versioning software
  4. HCI - Human Computer Interaction
  5. Testing
  6. various API's
  7. Design Patterns
All of this will take place within the context of a significant software development project.


COURSE PROCEDURES: This course will include lecture, discussion,and hands-on work. Class time will be spent lecturing and discussing material from the texts, and working on homework questions and a software development project. A significant project will be carried out throughout the semester. The software development project will include these components: design, implentation, paper, and presentation. There will NOT be a final exam. The final exam period will be used for project presentations. In your project paper and presentation you will be asked to identify topics from the semester that you incorporated in to your project. You will be paired with a partner for this project.


GRADING PROCEDURES: Students will be evaluated on their understanding of the concepts being covered in class, and their ability to apply those concepts in homework problems and other projects.

The final grade will be determined by the following distribution:

Quizzes (8 - 12 announced quizes will be given)30%
Presentations and Papers
  • Design Methodologies/Processes
  • Design Patterns
  • Beautiful Code
30%
Software Development Project
  • Proposal
  • Design
  • Implementation
  • Testing
  • Paper and Presentation
40%
and the following TENTATIVE scale will be used to determine the final grade
94 - 100A73 - 76C
90 - 93A-70 - 72C-
87 - 89B+65 - 69D+
83 - 86B60 - 64D
80 - 82B-55 - 59D-
77 - 79C+00 - 54F
Papers and project components will be due by 5:00 pm on the day they are due. Late work will be accepted, but will lose points at the discretion of the instructor. Unless contacted prior to the due date, late homework will likely incur a severe penalty. Quizzes may not be made up unless the instructor is notified prior to missing the quiz. The lowest quiz score will be dropped.


Notification of participation in college sanctioned events. Mock Trial participants, choir tour participants, athletes, and others who must miss a class for participating in a college sanctioned event are expected to notify me in advance and complete work in advance of the absence. It is the student's responsibility to communicate with me in advance regarding their absences and determine a schedule for make up work.

Academic Honesty. Collaboration in Computer Science, as in almost any field, is very important. It is important that individual students learn the material. When working on papers and projects, you are encouraged to discuss your answers with other students. However, you should understand the answers you are turning in! When developing a program it is often beneficial to talk with others to get their input, however you should not be turning in the work of another individual or group. It is acceptable to look at another individuals code if you are assisting them. You should not, however, let someone look at your code in order to show them how you did it, or to give them specific instructions on how they should change their code (other than to find syntactical errors). If you are getting help, you should not be looking at someone else's code!

Plagiarism and cheating of any form are serious offenses and may result in an F for the assignment, the course, or expulsion from the college. The details of Central's Academic Integrity policy are found in the Student Handbook, on the web. A copy will be sent to you via e-mail during the first week of the semester. It is your responsibility to read and understand the contents of that policy before you submit work to be graded. Questions regarding the policies and enforcement of the policies may be addressed to me during class or during office hours.

ADA Policy
Central College abides by interpretations of the Americans with Disabilities Act and Section 504 of the Rehabilitation Act of 1973 that stipulates no student shall be denied the benefits of an education "solely by reason of a handicap." Disabilities covered by law include, but are not limited to, learning disabilities, hearing, sight, or mobility impairments, and other health related impairments. If you have a documented disability that may have some impact on your work in this class for which you may require accommodations, please see me and Nancy Kroese, Director of Student Support Services and Disabilities Services Coordinator, (x 5247) during the first two weeks of the semester so that such accommodations may be arranged.


COURSE SCHEDULE: The following is a TENTATIVE order in which the topics of the class will be covered. Changes may be made during the semester as needed. Check the webpage for links to the lab exercises and assignments for more details and information about a specific lab or assignment.

Week Reading/TopicsProject
1 INTRODUCTION
Design Methodologies/Processes
Chapter 1 and Chapter 4
Project requirements/Choosing a Project
Design Methodology Paper
2 OO Development and UML Use Case Diagrams
Java API research
Chapter 2, Chapter 3 and Chapter 7
3 Design Methodology Presentations
API investigations
UML Use Case Diagrams
Chapter 7 and Chapter 8
Project API Testing
4 UML Class Diagrams
Discovering Classes
Design Patterns
Design Methodology Presentations
Chapter 5 and Chapter 6 and Chapter 18
Project Proposal
Design Patterns research
5 Class Diagrams
Design Patterns
Chapter 5 and Chapter 6
6 Testing and Junit
7 Prototypes and Proof of Concept
UML Sequence and Interaction Diagrams
Design Pattern presentations
Chapters 9 and 10
Project Prototype
8 Class Implementation
Testing and Test Cases
Beautiful Code
Chapter 19
Sequence and Interaction Diagrams
9 SPRING BREAK
10 Class Implementation
Testing and Test Cases
JUnit
Chapter 19
Class Implementations and testing
11 Scrum Sprint
Beautiful Code
Scrum report
Beautiful Code Presentations
12 Project Implementation Feature/Use Case Implementation and testing
13 HCI
14 HCI
Beautiful Code presentations
Project completion
15 Project Implementation
16 PROJECT Implementation
17 Final Exam Project presentations