After two months of solid programming training, it is time for you to form a workgroup of 3 to 4 people (special approval will be given for those of you who really want to form a group of 5, or work individually with justification) to develop a mini application of your own choice and at the same time to show your talents and creativity.
The problem(s) that you propose to tackle can be in one or more areas (e.g. Image + Networking, Game + AI, Networking + Database ...), but you are required to utilize what you have learned in class, i.e. technologies and techniques of OOP and Data Structures, to solve the proposed problem(s). Also, you are welcome to apply the knowledge that you have learned outside of the classroom in order to solve the problem(s) more effectively and efficiently.
You may want to take a look at some sample projects implemented by your seniors here so as to get some ideas about what you could do and the project scale.
To make the project more meaningful, you may use external C++ libraries (such as Qt, OpenCV, OpenGL, VTK, ...), but you must acknowledge all such usages in your code. In addition, the core part of your project (i.e. those without involving the function calls of the external libraries) should have "reasonable" number of lines of code. Reasonable number of lines here means roughly the same scale as the given programming assignment.
The following sections give more details about the project.
The objective of this project is to consolidate what you have learned about OOP and Data Structures, and at the same time, to enhance your problem solving skills, and to exploit your creativity as well as your communication skills.
Upon completion of this project, you should be able to:
For this project, you are required to form a group of 3 to 4 people (special approval will be given for those of you who really want to form a group of 5,
or work individually with justification) who are taking COMP
2012H (Fall 2021) to
work on a self-proposed project.
A Google form has been prepared to collect your group information:
Please visit:
https://forms.gle/J1NQRPFQH9dSr5MZ6, and complete the
form by filling in your group information.
Due date: Submit your
group information on or before 23:59, October 15, 2021 (Friday).
The second milestone is to propose a project. You are free to propose any project
that interests you, but the project will be evaluated by the instructor and teaching assistants so as to make
sure that the project scale is appropriate.
The project proposal should describe in detail what problem(s) you try to address and state why you find the problem(s) interesting. Specifically, you need to include the following items in your report:
The third milestone is to design and implement your project. After you have completed implementing
your application / system, create a single zip file with all the source files (including all C++ header files, source
files, resource files and a readme file describing how to setup your application / system), named project_(PROJECTCODE).zip, and submit it
through the
Canvas
Project Code and Documentation
Submission Page on or before 11:59pm, November
29, 2021 (Monday). The filename MUST follow the naming convention
as specified (i.e. project_(PROJECTCODE).zip). Your submission
MUST be a zip file, not rar, not 7z, not tar, not gz, etc.
Make sure your source files can be successfully compiled. If
we cannot compile your source
file, your work will not be graded. Therefore, you should at least put in dummy implementation to the parts that you
cannot finish so that there will be no compilation error.
Make sure you actually upload the correct version of your source files - we only grade what
you upload. Some students in the past submitted an empty file or a wrong file or an executable file which is worth zero
mark. So you must double check the file you have submitted.
You may submit your zip file multiple times, but only the latest version will be graded.
Submit early to avoid last-minute problem. Only Canvas submissions will be accepted.
Canvas may append a number to the
filename of the file you have submitted. e.g.
project_(PROJECTCODE)-1.zip. It
is fine as you have named your file as project_(PROJECTCODE).zip when you
submit it.
If you have no idea how to create a zip file, you may see How to create a zip in Windows 10 or How to create a zip file in Mac OS X.
There will be a penalty of -1 point (out of a maximum 100 points) for every minute you are late. For instance, since the deadline of project is 11:59pm on November 29, 2021 (Monday), if you submit your solution at 1:00am on November 30, there will be a penalty of -61 points for your project. However, the lowest grade you may get from a project is zero: any negative score after the deduction due to late penalty (and any other penalties) will be reset to zero.
The last milestone is project presentation and demonstration via Zoom recording. Prepare a 15-minute presentation using Zoom in which you share your screen to explain and demonstrate your project. In your presentation, please cover the following aspects.
| Items | Exemplary (100%) | Proficient (80%) | Developing (60%) | Minimal (20%) | |
|---|---|---|---|---|---|
| Problem Solving Skills (30%) | Specifications (15%) |
The program meets all the specifications in the proposal. | The program meets most of the specifications in the proposal. | The program only meets some of the specifications in the proposal. | The program barely meets the minimum specifications as stated in the proposal. |
| Correctness (15%) |
Correctly solve the proposed problem(s) in all cases. | Correctly solve the proposed problems in nearly all cases. | Correctly solve the proposed problems in some cases. | Correctly solve the proposed problems in only a few base cases. | |
| Program Design (45%) |
Use of OOP constructs and techniques (20%) |
Good use of OOP constructs and techniques to solve the proposed problem(s). | Sufficiently use of OOP constructs techniques to solve the proposed problem(s). | Limited use of OOP constructs and techniques to solve the proposed problem(s). | Very little use of OOP constructs and techniques to solve the proposed problem(s). |
| Use of Data Structures (20%) |
Good use of data structures to solve the proposed problem(s). | Reasonable use of data structures to solve the proposed problem(s). |
Limited use of data structures to solve the proposed problem(s). | Very little use of data structures to solve the proposed problem(s). | |
| Code Reusability (5%) |
The code could be reused as a whole or each routine could be reused. | Most of the code could be reused in other programs. | Some parts of the code could be reused in other programs. | The code poorly organized for reusability. | |
| Readability (25%) |
Source Code (15%) |
The code is exceptionally well-organized and very easy to follow. | The code is easy to read. | The code is readable only by someone who knows what it is supposed to be doing. | The code is very difficult to read even by someone who knows what it is supposed to be doing. |
| Documentation (10%) |
The documentation is well-written and clearly explains what the code is accomplishing and how. |
The documentation consists of embedded comments and some simple header documentation that is somewhat useful in understanding the code. | The documentation is simply comments embedded in the code with some simple header comments separating routines. |
The documentation is simply comments embedded in the code and does not help the reader understand the code. |
If you do not have any ideas in mind, you may want to check the following and pick one that is of your interest.
Q: Could you recommend some books or learning materials for introductory of Qt?
A: Please refer to the following for a list of resources.