This class is project-based, and the project component bears the maximum percentage of the total points that students will accumulate for their final grade.
In the first part, we will design and implement the Object business logic for Battleship game (the requirements for Milestone 1 are here). For every project Milestone (roughly every two weeks), we will give you new feature requests, which you will implement alongside your own features. The feature requests in the Milestones will help you make use of the OO Design Principles and Design Patterns that we cover in the class. In addition, you get to conduct continuous improvements on your design and code, through refactoring, peer reviews, producing professional-quality design documents (e.g.., UML class and sequence diagrams), etc.
Option 1: You have an option to stay with the Battleship game and make it more robust with features such as: adding GUIs, adding your own technology-layer architecture (e.g., making it web, native, or mobile app), add a controller logic (e.g., making it multi-player through networking, or adding an AI component that can play against a human player), and generally implement new cool features.
Option 2: Choose your own project (technology, design, some code implementation). Create a non-trivial set of classes and services that make use of some of the design patterns we cover to provide a nice set of functionality to the end-user; we like to see some UI design and data handling, but your project may vary. You may use any languages, frameworks, libraries, or utilities for your project as long as the project demonstrates object-oriented design.
While I am asking for a non-trivial project, you only have so much time. Your team will have two weeks to do a thorough design, and then you will have about four weeks to develop your system prototype (2 iterations consisting of 2 weeks each). For sizing your work, during each iteration, each member of your group should expect to work to implement one to two use cases (possibly with other teammates). As a result, if you are a member of a two-person team, you will want to target about 4-8 use cases for your system. A 3-person team is looking at a 6-12 use cases (12 is a lot!). You will detail this scope estimate in your initial design effort.
Typical applications
In addition to the first 8 weeks working on the Battleship game designing and implementing the OO business logic, you will work on a research project that is industry-relevant.
The goal of novel-industrial work is to perform scholarly research on a topic related to object-oriented concepts, languages, frameworks, testing, principles, libraries, or patterns, or other uses of patterns in computer science (e.g. web, architecture, anti-patterns, etc.). Any type of research project is acceptable, including: analytic, argumentative, defining, compare/contrast, interpretive, experimental, or survey. The topic may not be proprietary in any way, it must be able to be shared with reviewers and the class. You may also use this project to look at OO elements of your own research topics. This semester the research will be presented in the form of a research presentation (40 slides or more), optionally with accompanying software examples. Please note it is expected to see incrementally more thorough work from a three person team than from a two person team for these investigations. The first three project submissions will be via PDF. The final three will use Microsoft PowerPoint. The Pecha Kucha presentation will be used in a classroom presentation and must be provided using timed Microsoft PowerPoint.
You must complete a term project that is research-oriented and makes a primary contribution in the field of OOAD. The project must relate to some aspect of Software Analysis and Design (e.g., empirical study, program analysis tool, program transformation tool, code development tool, etc). You should work in teams of two or three. I will spend time in class outlining what I think are interesting and feasible projects, though you have significant freedom in shaping them how you please. The result will be a research paper that you can submit to an academic research conference in the field of OOAD (e.g., OOPSLA, ICSE, FSE).