CS 491
Senior Design Project I
Description: Capstone design project. Technical and innovative group project emphasizing engineering design principles on a specific topic in any field of computer science and engineering. Documentation on the specifications, analysis and the high level design of the project. Credit units: 3 ECTS Credit units: 6, Prerequisite: CS 202 and CS 319.
CS491-492 projects are directed towards an innovative solution of a real and substantial problem. These projects are conducted within a team of 3 to 5 students. Students must show the ability to identify, formulate and find innovative solutions to practical and theoretical problems as part of the project. Students have to be able to communicate the results of their work in both written and oral form within their group as well as to others. These projects provide a unique opportunity for the students to develop and demonstrate powers of initiative and collaborative work.
Each project is undertaken by the supervision of a faculty member of the Computer Engineering Department. Each team will propose a project to one of the faculty members as their candidate supervisor. The proposed project must be identified and formulated by the team. If the faculty member accepts to supervise the proposed project, he/she will determine an innovation expert from the list of Innovation Experts. It is also possible that the supervisor may give the responsibility of selecting an innovation expert to the students. The team will present their project to the innovation expert for his/her assessment of the innovativeness of the project. The innovation expert completes the Assessment of Innovativeness form.
The team and the innovation expert may prepare and sign a Memorandum Of Understanding (MOU) or a Non-Disclosure Agreement (NDA) to protect the intellectual property.
Besides the supervisors, two faculty members will be jury members for all the projects. The jury members will be assigned by the Department at the beginning of the each semester.
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 layout (here is a Word template you may use). Three PDF copies of each report is required. The PDF copies of the reports must be emailed to the supervisor and the jury members by their respective due dates.
The team must provide the following information to the Department at the same time with the Project Specification:
Project Specifications:
The project specifications report gives a title to and brief description of the proposed project. The initial project requirements are also identified. This document must also contain a section that discusses the project constraints such as economic, environmental, social, political, ethical,
health and safety, manufacturability, and sustainability. In addition, discussion of the professional
and ethical responsibilities relevant to the project must also be included in a separate section.
Copies of the Project Specification Report must be returned to the project supervisor and the jury members.
Jury members are determined by the Deparment and fixed for all projects.
One example organization of this report is as follows:
1. Introduction 1.1 Description 1.2 Constraints 1.3 Professional and Ethical Issues 2. Requirements 3. ReferencesHelpful material:
Analysis Report:
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.
You can use one of the many approaches to do your project analysis. One of them is the object-oriented analysis used in software-intensive projects. 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.
The analysis of your system or solution, requirements, and related formal expressions, models, diagrams, and charts should make the major portion of your Analysis Report.
Additionally, you will include the following in your analysis report. As part of the analysis, you will consider how your system or solution will be constrained or address the needs of factors like public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors. That means you should consider how your solution can be effected by those factors, and do your analysis and design accordingly. At the end of this thinking and consideration phase, you will write in your analysis report (in a section named Consideration of Various Factors in Engineering Design) how these factors affected your analysis and can affect your design later. You should take each factor one by one and discuss it. It is possible that your solution may not be affected by a particular factor. You will indicate the level of effect (on the scale of 0 -none- to 10 -maximum-) for each factor. After discussions, you will include a table of factors and effects (example table given in report template).
You should also envision risks in your project and come up with a B plan as well. In a B plan, you should discuss how you will handle the risks involved and include an alternative plan. In a section (named Risks and Alternatives) of your analysis report, you are to write those risks and your B plan. You should also include a table summarizing the risks (example table given report template).
You also need to plan your project and include your plan in your Analysis report (in a section named Project Plan). As part of the planning activity, you should list your project goals. Based on these goals, you should divide the overall project into work packages (WPs). Each work-package should have a leader. At least two students need to work on a WP. For each WP, you will plan the start and end dates, major milestones, and deliverables. The high-level design report is, for example, a deliverable, which is submitted to the jury members. Hence, it should be part of your project plan. You will also come up with a Gantt (or a similar kind of) chart to express your project schedule. You should also speficy your objectives and milestones for reaching the goals.
While planning and executing your project, you are to use team collaboration and project management tools [2,3]. There are many collaboration and project management tools available, such as GitHub, Jira, Basecamp, Asana, Redmine, Smartsheet, Trello, and Wrike. Make sure to use all such collaboration tools appropriately so that individual contributions can be properly tracked. You will investigate such tools and select one (or more of them as needed) to use. In your analysis report, you will write the tools you investigated and the one you selected. You will enter your project plan into such a tool as well. You can, for example, produce your Gantt chart from such a tool. Additionally, hosting your source code and documentation on a repository, such as GitHub, is required.
You will provide an account on your selected tool to your supervisor as well. In this way, (s)he will be part of the team as a mentor and observer, and track your progress and collaboration level. You will push code and documents to your repository frequently enough to have your supervisor see the progress and to keep team-mates up-to-date.
It is important that all members of your team share the leadership and together provide an inclusive and collaborative environment. No one should be left outside. All should contribute. To this end, you should use the above-mentioned tools. Additionally, leadership should be shared as well. At the end of the project courses (CS491 and CS492), your supervisor will check these team properties (shared leadership, inclusive, collaborative). Therefore, it is important that you provide enough evidence (collected over time) to show peer contributions and to prove these desired properties. Hence such evidence must be collected while the project is being done (for both courses). Additionally, we can use tools from catme [4] or Teammates [5] to do peer grading at the end. To be prepared for all these you will write in a section (named Ensuring Proper Team Work) of your analysis report your plans for proper team work and for collecting evidence for desirable team properties and equal contribution.
You should also write and discuss (in a section called Ethics and Professional Responsibilities) the ethical and professional responsibilities that you recognized (fullfilled) during analysis and will recognize during the project.
Note that while doing your projects, you will make some decisions and judgements regarding your designs and solutions that will consider the impact of your engineering solution in global, economic, environmental and societal contexts. At the end of CS492, you will be asked and be evaluated about such judgements that you have made till that time. Therefore, please use a notebook to record all your judgements considering these four elements during CS491 and CS492.
At the end of CS492, you will be asked what new knowledge (and skills) you acquired during the course, what learning strategies you used to acquire that knowledge, and how you applied that knowledge in your project. Therefore, in the analysis report, you should plan (to some extent) your learning as well. In a section of the analysis report (named Planning for New Knowledge and Learning Strategies), you will write what new knowledge you may need and how you plan to acquire that knowledge. Possible learning strategies include online learning, learning from peers, interviewing experts, learning by doing (hands-on experience), reading from a book and doing exercises.
There can be many different ways in which to organize an analysis document; the key point is being able to convey the models produced as a result of the analysis as clearly and completely as possible. One example organization (that uses object-oriented approach) is as follows [1]:
1. Introduction 2. Current System (if any) 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. Other Analysis Elements 4.1. Consideration of Various Factors in Engineering Design 4.2. Risks and Alternatives 4.3. Project Plan 4.4. Ensuring Proper Teamwork 4.5. Ethics and Professional Responsibilities 4.6. Planning for New Knowledge and Learning Strategies 5. Glossary 6. ReferencesNote that during your project you will not freeze the requirements with the submission of the Analysis report. You can work iteratively during the course of the project. This means, while doing design and implementation, you can go back and refine your analysis/requirements/design. Because while you work on the project, your understanding of the problem and domain will increase and you can be in a better position to refine your requirements and design. Hence the final requirements and design of the project will be completed when the whole project is completed. At that time, you will include the final requirements and final design details in your Final Report together with your implementation and other required information.
References:
[1] Object-Oriented Software Engineering, Using UML, Patterns, and Java, 2nd Edition, by Bernd Bruegge and Allen H. Dutoit, Prentice-Hall, 2004, ISBN: 0-13-047110-0.
[2] Wikipedia, List of Collaborative Software, https://en.wikipedia.org/wiki/List_of_collaborative_software, Accessed on 22 October 2019.
[3] Wikipedia, [4] CATME Smarter Teamwork, https://catme.org/, Accessed on 22 October 2019.
[5] TEAMMATES - Online Peer Feedback/Evaluation System for Student Team Projects, https://teammatesv4.appspot.com/, Accessed on 22 October 2019.
High-Level Design Report: 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). In the case of a software-intensive project,
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.
Extent and validity of the design principles that were used to
carry out the project must be explained in detail.
Creativity, that is the extent to which the team developed a novel
solution to the design problem while still achieving a functional
design, must be clear.
The detailed information about your high-level design and the related formal expressions, models, diagrams, architectures, charts should be the major part of your high-level design report.
In your high-level design report, you should also write about how you considered public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors in engineering design process (in analys and in design part). You will write in your high-level design report (in a section named Consideration of Various Factors in Engineering Design) how these factors affected your design. You should take each factor one by one and discuss it. It is possible that your analysis/design may not be affected by a particular factor. You will indicate the level of effect (on the scale of 0 -none- to 10 -maximum-) for each factor. After discussions, you will include a table of factors and effects (example table given in report template).
In your high-level design report, you will also write how the teamwork is done during the project, in a section called Teamwork Details. You will explain, how each member
a) contributed and functioned in the team;
b) helped creating a collaborative and inclusive environment;
c) took the lead role in some part of the project and in this way shared the leadership.
Please have a separate sub-section for each of the last 3 items (a, b, c) above.
The following applies to object-oriented software-oriented projects
for the most part; for other types of 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:
Presentation and Demo: Grading
The letter grades will be assigned according to the following table:
Project Evaluation Form: Excel file.
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.
1. Introduction
1.1 Purpose of the system
1.2 Design goals
1.3 Definitions, acronyms, and abbreviations
1.4 Overview
2. Current software architecture (if any)
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. Consideration of Various Factors in Engineering Design
6. Teamwork Details
6.1 Contributing and functioning effectively on the team
6.2 Helping creating a collaborative and inclusive environment
6.3 Taking lead role and sharing leadership on the team
7. Glossary
8. References
References:
Students are to present their work at the end of the semester. They
are required to turn up on time and are properly prepared. Computer
projectors will be available if they want to use them. Each team will
have 25 minutes for their presentations.
It is strongly suggested that team members practice their talk at
least a couple of times beforehand, to ensure they can get the major
points across in the given time.
The team is required to dedicate 5-10 minutes of their time for a
demonstration of their project. Students may bring their own hardware or
use the notebook available in room of presentation.
Total grade has three components:
The last three grading items (each 4%) will be evaluated by the supervisor for each student. The supervisor may use some tools for that purpose (can monitor the progress of students with some tools) or can also do peer grading if he/she wishes. He/she does not have to use the peer grades as they are; he/she has the right to use his/her own judgement.
Range Grade 90-100 A 85-89 A- 80-84 B+ 75-79 B 70-74 B- 65-69 C+ 60-64 C 55-59 C- 50-54 D+ 45-49 D 0-44 F