The final category of evaluation in this class is the semester project. The goal of the project is to have you step through the process of an agile software life cycle to develop a concurrent software system. For in-class students, I would like you to work in teams of 2 to 3 students on this project. For CAETE students, you can work by yourselves, work with other CAETE students, or join a team of in-class students. (Please use the forum on the Moodle to facilitiate team creation.)
The first step of the software project is to identify an application that you would like to build that uses concurrency in some way and is scoped appropriately for the size of your team and can be realistically completed in the five weeks of the semester that we have remaining after we return from Spring Break. A reasonable goal would be to think of a combining the "batch style" concurrent programs that we have seen so far this semester with a user interface of some sort, such that a user can monitor the progress of a concurrent algorithm while it is active or the user interface is displaying some visualization that is being computed/generated by a pool of threads running in parallel. Other types of reasonable programs might involve the processing of data returned by web services in response to user-generated queries via some sort of interface or that involves a hybrid approach of both compute-intensive and IO-intensive tasks. Programs that concurrently process or analyze large scale data sets either stored in files or databases are also acceptable. I'm open to other ideas as well; if you have an idea that does not match these suggestions but still uses concurrency in some way, send it my way for review/approval.
The structure of the project is the following:
Project Ideas submitted to Prof. Anderson by Thursday, March 22nd. All ideas will be approved Friday, March 23rd.
This is then followed by a one week break due to Spring Break. Teams are free to work on the project over Spring Break but it is not required.
Teams will then officially begin work on the project on Monday, April 2nd, and will work on it over the next five weeks. Projects will be due by Friday, May 4th by scheduling a 15-20 minute meeting with Prof. Anderson to demo your final prototype and deliver your final report. The report will provide insight and information both about your prototype and its design/implementation as well as the agile life cycle you used to develop the prototype. The latter will focus on metrics such as number of iterations, number of user stories, your team velocity, your burn down charts for each iteration and the like. More details about the report will be provided later.
CAETE students will submit their final reports to me via the moodle and will work with Prof. Anderson to determine how best to deliver your demo be it via a face-to-face meeting, a Skype video chat, a screencast, or some other mechanism. If your prototype is written in a language that Prof. Anderson can compile/execute on his machine, the demo can even be done by having Prof. Anderson run it on his machine while the CAETE student "leads" the demo over the phone.
I will be reducing the intensity of homework assignments and quizzes to provide students enough time to work on the project.
This project is worth 100 points (50 points for the prototype and 50 points for the final report) and is worth 20% of your final grade.