CS 491
Senior Design Project I

Description: A technical project emphasizing engineering design principles on a specific topic in any field of computer science or engineering to be carried out by the team of senior students under the supervision of a faculty member. Three formal reports summarizing the specifications, analysis and the high level design of the project are required. Credit units: 3.

Details for the Current Academic Year

General

All senior students are required to undertake a capstone design project during their final year. Projects are directed towards the solution of a real and substantial problem, conducted within a group of 3 to 5 students. These projects provide a unique opportunity for the student to develop and demonstrate powers of initiative and collaborative work. Students must show an ability to solve realistic practical and theoretical problems as part of the project, and to communicate the results in both written and oral form within their group as well as to others. Students will register for CS 491 in the Fall semester, and CS492 in the Spring semester of their senior year.

Projects are undertaken in cooperation with a faculty member. Each faculty member will offer a number of projects and students are free to form a group of size 3 to 5, and select one which interests them. Students are advised to meet with their groups as well as the supervising faculty member on a regular basis to ensure that the work is progressing satisfactorily.

Each group must prepare a web page for their project and make their reports available on this page. Each report should be typed in accordance with the guidelines and must be spell checked (!) and adopt the department's standard cover page layout. Three hard copies of each report is required. The hard copies of the reports must be handed in to the supervisor and the jury members by their respective due dates.

Project Specifications: {Due: 5pm, Monday, 3rd week of Fall semester}
The specificitaions document gives a title to and brief description of the proposed project. It must be typewritten and a copy must be handed to the supervisor and two jury members by the specified deadline. Jury members are determined by the supervisor. The team must prepare a web page about the project and email the address of the page to the department secretary (sekreter@cs.bilkent.edu.tr) by the end of the second week of the Fall semester.

Analysis Report: {Due: 5pm, Monday, 7th week of Fall semester}
The analysis report contains a detailed analysis of the problem. It should address all relevant issues. The analysis report must be available on the web page of the project.

Analysis Document of a project is produced as a result of the analysis of the system to be developed. The requirements specifications provided by the customer are analyzed carefully and this document is produced as a result of a thorough analysis of the system at hand. In a sense, this document is a contract between the developer ("you") and the user/customer ("us" in this case). Analysis results in a model of the system that aims to be correct, complete, consistent and verifiable. Developers formalize the system specification produced during requirements elicitation and examine in more detail boundary conditions and exceptional cases. Developers correct and clarify the system specification if any errors or ambiguities are found. The client and the user are usually involved in this activity, especially when the system specification needs to be changed and when additional information needs to be gathered.

For example, in object-oriented analysis, developers build a model describing the application domain. The analysis model is then extended to describe how the actors and the system interact to manipulate the application domain model. Developers use the analysis model, together with nonfunctional requirements, to prepare for the architecture of the system developed during high-level design.

There can be many different ways in which to organize an analysis document; the key point is being able to convey the model produced as a result of the analysis as clearly and completely as possible. One example organization for an object-oriented software system is as follows:

1. Introduction
2. Current system
3. Proposed system
3.1 Overview
3.2 Functional Requirements
3.3 Nonfunctional Requirements
3.4 Pseudo requirements
3.5 System models
3.5.1 Scenarios
3.5.2 Use case model
3.5.3 Object and class model
3.5.4 Dynamic models
3.5.5 User interface - navigational paths and screen mock-ups
4. Glossary
Reference:
Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering, Prentice-Hall, 2000, ISBN: 0-13-489725-0.

High-Level Design Report: {Due: 5pm, Last day of Fall semester}
High-level or system design is the transportation of the analysis model into a system design model. The high-level design report must be available on the web page of the project.

During system design, developers define design goals of the project, and decompose the system into smaller subsystems that can be realized by individual teams (subgroups). Developers also select strategies for building the system, such as the hardware/software platform on which the system will run, the persistent data management strategy, the global control flow, the access control policy, and the handling of boundary conditions.

The following apply to software-oriented projects for the most part; for hardware projects, the tasks are somewhat different, and the contents of the report must be decided in consultation with the project advisor.

The result of system design is a model that includes a clear description of each of these strategies, a subsystem decomposition, and a (UML) deployment diagram representing the hardware/software mapping of the system. Again there is no single way to organize such a report; a sample for an object-oriented software system would be as follows:

1. Introduction
1.1 Purpose of the system
1.2 Design goals
1.3 Definitions, acronyms, and abbreviations
1.4 References
1.5 Overview
2. Current software architecture
3. Proposed software architecture
3.1 Overview
3.2 Subsystem decomposition
3.3 Hardware/software mapping
3.4 Persistent data management
3.5 Access control and security
3.6 Global software control
3.7 Boundary conditions
4. Subsystem services
5. Glossary
Reference: Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering, Prentice-Hall, 2000, ISBN: 0-13-489725-0.

Grading
Total grade has three components:

The letter grades will be assigned according to the following table:

RangeGrade
90-100A
85-89A-
80-84B+
75-79B
70-74B-
65-69C+
60-64C
55-59C-
50-54D+
45-49D
0-44F

Project Evaluation Form: Excel file, PDF file.