Description
This assignment involves participating in a team of two or three students to work on a
computational problem of your choice. The scope should be at least as large as the team
programming assignment occurring earlier in the semester. The project must start by defining a
problem in some application domain, and involve the development of C code to explore some
domain-specific question. The project must involve developing software in C and exercising it to
perform a study. The project may involve development of sequential or parallel code.
The project must involve the joint development of code by the team that interacts
programmatically through function calls or accesses to global variables, or by one code
generating a file used by a second code. For example, a project might involve the development of
a single simulation, and dividing up the development of functions among members of the team.
There are no specific requirements regarding the number of lines of code that each project must
entail, but as a rough guide, typical projects will involve each team member developing perhaps
200 to 300 lines of code.
Projects involving the development of separate, independent programs that do not interact are not
allowed. For example, a project involving comparison of the execution time of different sorting
algorithms is not a suitable project both because it does not address an application question, and
the resulting software components do not interact.
We will not assign teams; rather you should identify another student to work together on your
team. Team should include two individuals. We recommend teams include only graduate or only
undergraduate students, however, if this is not feasible, teams including a CX 4010 and CSE
6010 student are permitted. One-person projects are not allowed.
Each team should give a brief, one-minute oral presentation of their project idea on the date the
proposal is due to get feedback on the project idea.
Each individual in the team must develop code. For this purpose, the project must be
decomposed into distinct parts, with each part including software development. The interface and
tasking for each component must be explicitly defined and described in the project proposal and
final report. Ideally, each component will be something that can be tested separately to
demonstrate it functions correctly even if the other components are not functional.
Some projects may involve the use of existing software or other resources, however, use of such
software must be described explicitly in the project proposal as well as the final report. It is
expected that all projects will involve some significant additional software development beyond
these other resources.
2
1. Project Proposal
The project proposal should be comparable in detail to the write up for assignments 2 and 3. It
should include the following information:
(1) name of the project or software you will develop,
(2) names of members of your team,
(3) a brief description of the application area the project examines, the questions that will be
addressed, and the goals of the project,
(4) a description of how the project will be divided among team members with a block
diagram illustrating the software components that will be developed and description of
how they interact.
(5) discussion of any existing software or data that will be used, if any, and a clear
description of what new code will be created.
Include references to the literature, as appropriate. The intention of the proposal is to provide
sufficient information in order to assess if the project is suitable for the course, especially in
terms of scope and complexity. The proposal will form a portion of the grade for the project.
2. Poster Presentation
Each team will develop a poster describing the project and give a brief oral presentation at a
poster session. Each person on the team must present some aspect. The presentation should be
organized as a single presentation given by the members of the team. Each poster presentation
shall be approximately 10 minutes, followed by a short question/answer period.
3. Final Report
The final report represents the complete documentation for the project. You should turn in:
• A report describing the results from your project. You may reuse material from the
project proposal for the final report.
• All source code, data files, etc. developed and used in the project.
• The materials used in your project presentation.
The report must be a single document jointly authored by all members of the team.
4. Final Comments
Be careful to scope the project to something that can be completed on time! Please consult with
the TA or class instructor if you are uncertain if your project has a suitable scope.
Turn your software in as a single zip file. Your software must be well documented and include
comments so the code is easy to understand. You should include a README file with
instructions on how to compile and run your program. Only one person should submit the project
deliverables on behalf of the entire team.
Finally, a reminder you must adhere to the Georgia Tech honor code, and the collaboration
policy stated in the course syllabus. All code that originated from other sources (including the
web) must be clearly documented as such in the project proposal as well as the final report.
Disseminating your code to other students outside your team is strictly prohibited.