Spring 2022 (Section 1, 16348) - 3 credit hours
JMU CS446 - Software Analysis and Design
Help Policies Solutions Study-Aids Tools
Syllabus


Description: This course provides students with the opportunity to participate in a semester-long, team-based, software design (both product design and engineering design) and construction project. Students will gain experience with various architectural styles and design patterns. They will also gain practical experience with Scrum and a variety of design and construction tools.
Outline: This course is organized as follows (though specific topics and dates may change).

Readings are listed in the right-most column.

Topics to Understand Completely Before the First Meeting
Basics Exceptions , File System , Text I/O and Binary I/O
Patterns Iterator , Singleton and Factory
GUI Construction Windowing Basics , Layout Basics , Intermediate Layout and Using GUI Components
Labs to Complete Before the First Meeting
Eclipse Skills Tool Editing [Lab] , Tool Debugging[Lab] and Tool Unit Testing (and Coverage)[Lab]
GUI Construction ToolBasics[Lab]
Part I: Preliminaries
1/19 2D Graphic Basics and Assertions Graphics and Assertions
Part II: Some Topics in Advanced Object-Oriented Programming
1/21-1/24 Parameterized Classes/Generics: Review and Wildcards Generics
1/26 Static Nested Classes and Inner Classes , Local Classes , Anonymous Classes and Lambda Expressions Nested
1/28 Discussion of PA1
Part III: Some Design Patterns/Architectural Styles
1/31 Observer Pattern and Event Multicasters and Property Changes Properties
2/2 Model-View-Controller Pattern , Composite Pattern and Decorator Pattern
2/4 Strategy Pattern , Command Pattern and Empty Classes
2/7 Discussion of PA2
Part IV: Design Patterns in GUI Construction
2/9 Worker Threads and Localization/Internationalization Workers and i18n
2/11 Actions for Decentralized Control , Keybindings and Undo/Redo Keybindings
2/14 Delegation: Cell Renderers , Cell Editors and Printing JComboBox and Printing
2/16 Proxy Pattern , State Models and State Pattern
2/18 Discussion of PA3
2/21 Exam 1
2/23-2/25 Drag and Drop and Cut, Copy, and Paste DnD and CCP
Part V: More Topics in Advanced Object-Oriented Programming
2/28 Discussion of PA4
3/2 Hierarchical Data: XML , JAXP , JSON and JSON-P XML RFC and JSON Standard
3/4 Serialization Basics , Serialization in Java , Reflection and Logging Reflection and Logging
3/7 Annotations: Basics , Defining , Compile-Time Processing and Run-Time Processing Annotations
3/9 Description of the Application Suite
3/11 Questions about PA1-PA5
Part VI: Design and Implementation of an Application
3/21 Study Day
3/23 Exam 2
3/25 Sprint 1 Planning
3/28 Sprint 1 Planning
3/30 Sprint 1 Daily Scrum
4/1 Sprint 1 Daily Scrum
4/4 Sprint 1 Design Presentations
4/6 Sprint 1 Review
4/8 Sprint 2 Planning
4/11 Sprint 2 Planning
4/13 Sprint 2 Daily Scrum
4/15 Sprint 2 Daily Scrum
4/18 Sprint 2 Design Presentations
4/20 Sprint 2 Review
4/22 Sprint 3 Planning
4/25 Sprint 3 Planning
4/27 Sprint 3 Daily Scrum and Course Evaluations
4/29 Sprint 3 Daily Scrum
5/2 Sprint 3 Daily Scrum
5/4 Sprint 3 Design Presentations
5/11 10:30-12:30 Final Product Presentations by Teams (Exam Week)

Attendance at lectures is not mandatory but is strongly encouraged. You are expected to come to class prepared to ask and answer questions. Hence, you should complete the readings on a topic before it is discussed in lecture.

Grading: Final grades will be based on your performance on: 2 in-class exams (25% each) , several programming assignments (25% total) and 1 project (25% total).
Programming Assignments: 5 programming assignments will be assigned during the semester. Note that their due dates are subject to change. Before starting any of the programming assignments you must read the overview. You may also want to re-read this overview before starting each programming assignment.
Programming Assignment 1 ; Due: Th 1/27, 11:00PM (Demonstration Application - Basics)
Programming Assignment 2 ; Due: Su 2/6, 11:00PM (Application Framework - Document Basics; Demonstration Application - Document Presentation)
Programming Assignment 3 ; Due: Th 2/17, 11:00PM (Application Framework - Open, Quit)
Programming Assignment 4 ; Due: Su 2/27, 11:00PM (Application Framework - Close, New, Print; Demonstration Application - Options)
Programming Assignment 5 ; Due: Th 3/10, 11:00PM (Application Framework - Save, SaveAs)

Make sure you read and understand all of the policies related to programming assignments. Programming assignments may not be submitted after the due date/time (in other words, you will receive a grade of 0 on any programming assignment that is not submitted on time).

Team Project: Each student must complete a (team) project. A Team Evaluation Form (which will be made available to you just before the project ends) must be completed and submitted by each member of the Team individually by 5/11 at 5:00PM. Make sure you read and understand all of the policies related to projects.
Office Hours: You may meet (either face-to-face or virtually, depending on the situation and schedule) with Prof. Bernstein during his scheduled office hours or you may schedule an appointment with him.
Contact Information: Prof. Bernstein's contact information is available on the contact page of his WWW site.

Copyright 2022