Project


  1. Introduction
  2. Background story
  3. The product
  4. Project deliverables
    1. Project manual V0.0
    2. Product V0.1
    3. Project manual V0.1
    4. Product V0.2
    5. Project manual V0.2
    6. Individual report
  5. Forming teams
  6. Supervision
  7. Teamwork
  8. Plagiarism
  9. Programming environment
  10. Tech help
  11. Grading
    1. K/K mode grading
  12. FAQ


Introduction

This course project is structured to resemble the initial stages of a non-trivial real-life software project. In this project you will conceptualize a product under a give broad theme, build a small (and interesting) part of the product, and have it ready to hand over to another team at any time.


Background story

Imagine you are teaming up with three of your university buddies to from a start up company. Right now you are doing a "trial run" before formally setting up the company. Your plan for the company is to build games to sell over the internet. The theme of your products is to put a "new spin" on existing games that are already popular. During the trail run, you plan to release a few free games to the public to build up a reputation as well as to gauge response from the public. 


You are using CS2103 course project to build an initial pre-release version of the game. After the course you will handover the project to an outsourcing company to finish the product.


By the way, do you think having such a background story is helpful?


The product


The existing game on which you plan to put a new spin is Sudoku. As you know, Sudoku is the popular puzzle game where a player fills a matrix of 9 x 9 with numbers from 1 to 9 with certain constraints. The product we plan to build is Sudoku+ which supports all the basic features of the Sudoku game, but in addition, supports some new features that will make it unique and better than most of the Sudoku games in the market (or else who will want to play our game?).


Project deliverables 

Here is the outline of the project structure and the deliverables at various milestone of your project. The subsections further down explain each deliverable in detail. Note that in this project, we ask you to document the project as if you are going to hand over the project to another team after the next milestone. This is so that you have a specific target audience when you write project documents.

Please see the course schedule to find out submission deadlines.

Project manual V0.0

As explained in the previous section, you will write this document as if it will be given to another team to develop the product. That is, the intended audience for this document is another team that will depend on this document to tell them what to build. The document contains just enough information required for them to take over the project. The basic questions you should ask yourself when writing this document are:

For example, this version of the document can contain,

Use this file as the starting point of your project manual. All project documents submitted should be in MS World format (*.doc or *.docx). See here if you are not sure of your team number or the supervisor (supervisor is often your tutor, not the course lecturer). 
page limit: 5 (why do we have a page limit? see the FAQ below)

submission: Name the file as "["team number"]["Version number"]".doc/.docx (e.g. [C13][V0.0].doc) and upload to the "[V0.1] Manual" IVLE folder. Please follow the naming convention precisely as we subject your submissions to some automated processing. Project documents are team submissions; no need for each team member to submit duplicates.

evaluation: We use this document to see whether you know how to document software requirements. We also want to know whether you have chosen an appropriate set of features to deliver at milestones V0.1 and V0.2. You are cautioned against promising too many features too early. One well-implemented feature will earn you more marks than two half-baked features. We also check how well you have communicated the information required to easily takeover your project by another team. Grading will be on  K/K basis.

Product V0.1

This is a working system containing the functionality you promised in project manual V0.0 to deliver at this milestone.

submission:
Zip up the following files, name it "["your team number"]["version number"]".zip (e.g., [Q12][V0.1].zip), and upload to the "[V0.1] Product" IVLE folder. No *.rar files please.
Upload a 2 minute screen recording of a product demo to the "[V0.1] Video" IVLE folder. Name the file using your team number. e.g., [C12][V0.1].mpg. You can use free tools such as Screen2exe , Debut or Jing for screen-recording the demo. Let us know if you know of a better screen recording tool that is free. Just a screen recording is enough. Text annotations and voice narration are not necessary (but OK to have). Note the 35Mb upload limit imposed by IVLE (hint: Screen2exe produces very small files).
evaluation: In this submission, we check whether you have delivered what you promised in project manual V0.0. To earn full marks, you should have at least a playable minimal Sudoku game. Grading will be on  K/K basis.

Project manual V0.1

This is an *improved and updated* version of the previous version of this document. Imagine you are handing over the project to another team at this point. This new team has never seen your previous version of the document and will rely totally on this version to understand the project. You have total freedom over what to include in this version of the document. However, given the purpose of the document, we think you will choose to repeat a refined version of most of the stuff you put in the previous version of the document.

Given below are some things you could consider adding to it. Note that you are not required to include them all. Neither you are restricted to what is listed below.
Use this file as the starting point of this document.

page limit: 15

submission: Similar to previous version of this document.

evaluation: Similar to previous document, we check how well you have communicated the information required to easily takeover your project by another team. We also check how well you have responded to our feedback on the previous versions of the document. Grading will be on   K/K basis.

Product V0.2

This is a working system containing the functionality promised at this milestone. It contains an improved version of the functionality delivered before as well as some new functionality.

submission: Similar to previous version of the product. Screen recording can be slightly longer.

evaluation: Based on a demo and Q&A session. The whole team is required to be present. Not on K/K basis (as this is your final submission, stricter grading criteria will be applied).
Demo: You get 10 minutes to demo the product in person, to the supervisor. The scenarios you demonstrate should be chosen judiciously so that you cover the full range of your product's functionality. Note that the evaluator might interrupt you and ask to follow alternative scenarios. 
Q&A: Evaluator may ask you questions about the project, directed to the whole team or a specific team member. These questions aim to check how well you know the part of the project that you claim to have done.
To earn a B+ level score for the project, you should have at least some typical features and at least one unique feature.

Project manual V0.2

This is an updated and improved version of the previous version of the handover document. It now describes the system at this milestone. 

page limit: 20

submission: Similar to the previous version of the document.

evaluation: Similar to the previous version of this document, but not on K/K basis (as this is your final submission, stricter grading criteria will be applied).

Individual report

This document describes how you applied to the project what you learned in the course. We hope having to write this document will encourage you to consciously apply software engineering theories to you project instead of treating it as a mere programming assignment.

It also serves as a record of how exactly you contributed to the project. It is one more means for us to make sure you did your fair share of the project work. Be sure to include all things your individually contributed to the project. Any task done together with other team mates can be included as long as you clearly specify who else was involved and what your part of the task was. Please note that we release your individual report to the whole class after you submit it.

Regular note keeping (a kind of a "journal") during the project can help you write this report easily.  Use this file as the starting point (it includes some sample contents) when writing this report.

You can strengthen your individual report by adding an appendix (not counted for the page limit). It could contain things like
- A sample of code your contributed to the product (not longer than 2 pages)
- A sample of documentation you contributed to the project manual
- A sample of a diagram you contributed to the project manual

page limit: 5

submission: To the corresponding IVLE folder. Name the file "["team number"]["matric"]["Name"]IR".doc/docx. (e.g., [C13][U060577T][Peng Bo]IR.doc)

evaluation: We evaluate this document based on how well you have applied theory to the project. In addition, we may use this to judge the size of your contribution to the project (if required).

Forming teams


Supervision

You may meet your supervisor as many times you need, subject to flexibility in the supervisor's schedule. Please make sure the whole team meets with the supervisor at least two times (including feedback sessions for your intermediate submissions) before your final submission.

Please note that it is not the supervisor's job to chase you down and give help. It is up to you to get as much guidance from the supervisor as you need.

Teamwork

We expect each team member to do a fair share of the project work. We will penalize those who did not did their share of the work. Some situations where you are very likely to be penalized...

We use several rounds of peer-evaluations and the individual report to verify that everyone did a fair share of the project. However, please alert the supervisor early if you think someone in your team is not pulling his/her weight and does not respond to your friendly reminders to do more.

Plagiarism

We publish (i.e., make available to the whole class) most of your project submissions. While the main objective of this to let you learn from each other, it also acts as a very effective deterrent against plagiarism. If you copy from another team, it is very likely that someone else in the class will notice this and report to us even if we failed to notice it ourselves.

However, you are allowed to use ideas from other teams, subjected to the below guidelines.
If you want to use things from elsewhere (e.g., third-party libraries), please seek your supervisors permission first.

Programming environment

We recommend you use either Java or C++ for the project. Please seek permission from your supervisor if you want to use another language.
While you may use any platform (Windows, Mac, Unix, ...) for development, your submitted system should be compatible with Windows.
We give some extra help (see the resources page) on using the Integrated Development Environments (IDEs) Eclipse and Visual Studio. However, it is not compulsory to use any of them.

Tech help

In this semester, we have roped in couple of your seniors to help you in technical difficulties related to Java, Eclipse, C++, and Visual Studio. If you need their help, please post your problem in the "Java tech help" forum or the "C++ tech help" forum in IVLE. You are discouraged from contacting the tech experts directly. This is so that whatever help being given is given openly so that other classmates can benefit from it. A solution is not guaranteed. However, they will do their best to help you. 

In addition, we have prepared some supplementary materials to help you along in the technical side of the project. You can find them in the resources page.

Grading

The project accounts for 30% of your final grade. See the "Admin info" page for more details.

We use the K/K mode grading for intermediate submissions. Given next is an explanation of what K/K mode grading is.

K/K mode grading

We use K/K mode of grading during early stages of the project. This mode is suitable when learning from mistakes is more important than assessment.
In summary
This mode of grading has the following benefits:

FAQ

We publish your submissions only after giving you the credit your deserve for it. Besides, if you were the first to think of something your peers are willing to adopt later, that means you are already ahead of them and they are unlikely to earn more marks by adopting your ideas.