The BIG Project

Summary: Explains the motivation and requirements for the BIG project.

Contents:

There is space for writing about about specific projects on the CS Wiki: http://wiki.cs.grinnell.edu/mediawiki/index.php/CSC_223:_Front_Door

Introduction

A major requirement of this course is to undertake a significant team software development project, here termed the BIG project. This will be the first such project for most of you, and it will be a real learning experience. Although there are many aspects of working in industry or on a research team this project won't necessarily simulate (e.g., joining an existing project; coping with millions of lines of code; working with more experienced teammates), this class will give you experience working in a team on a larger-scale project, in which you design the software as well as implementing it.

The two most important things to know about the BIG project are:

  1. I want you to learn, and 
  2. I want you to be proud of what you do.

Therefore, I'm going to do my best to give you the resources you need for success; the rest is up to you.

Project Parameters

You will work on the project in teams of 3-4. The project will be your primary activity for this course after Fall Break, and you will also do some preparatory work before Fall Break.

This semester, I've decided to limit the scope of the project so that I can ensure you have appropriate tools for the job. Our focus will be on web applications. Note that a web application doesn't have to be for public consumption: It can run on a user's PC or within a Local-Area Network (LAN). For example, I might have a web-based recipe collection that I only use at home. Many devices such as printers and wireless routers are configured through web applications that are only usable from within the LAN.

However, unlike in the little project, you will be able to choose a project of interest to you.

You should have a client for your project: someone who wants (or would want) to use the software that you write. That client can be you, but it would be terrific if you can identify someone outside your team. I'm happy to help with this; it could even be me.

You may have heard of a number of platforms for web application development: PHP, ASP, Plone, Ruby on Rails, TurboGears,.... The list goes on and on. This semester we will be using TurboGears. Why TurboGears?

Activities

Of course, you'll be building software as part of your project. Here are some more details.

Finally, the final exam will be an opportunity to reflect on how you applied what you learned in the BIG project.

Milestones

Brainstorming (Friday, Sept. 28)

We'll meet as a class to share and discuss project ideas. Start thinking now about web applications you might like to build! More details will appear in the schedule for week 4.

Team formation (preferences due Tuesday, October 2)

You'll let me know which projects are most interesting to you, what your schedule is like, and who you would prefer (or prefer not) to work with. More details will appear in the schedule for week 5.

Iteration 0 (ends Friday, Oct. 19)

Iteration 0 constitutes the work to be done before you start writing any code. (Yes, there is work to be done before you write code!) You will develop some initial use cases and an initial software architecture. You will also set up your develoment environment.

There will be no project meeting, presentation, reflection, or feedback on this iteration.

Iteration 1 (ends Friday, Nov. 9)

In iteration 1, you will make architectural decisions and implement at least one key feature or use case.

Iteration 2 (ends Friday, Nov. 30)

In iteration 2, you will implement additional features or use cases. Your focus may fall on integrating different components developed in Iteration 1, or refactoring your code for improved flexibility.

Iteration 3 (ends Friday, Dec. 14)

In iteration 3, you will implement your final group of features or use cases.

Grading

The final project is worth 40% of your grade.

You can expect half of this grade to reflect on the product of your work. Does the software implement the agreed-upon features and/or use cases? Is it reasonably free of bugs? Is it flexible and easy to maintain?

The entire team will receive the same grade for the software product. I won't give you a grade at the end of each iteration; however, I will give you feedback during each project meeting.

The other half of the grade will reflect on your process. Were you prepared for project meetings and workshops? Were these productive? Did you have tested, working software at the end of each iteration? Were your presentations clear and informative? What was the quality of your written reflections? Did you provide useful feedback to your teammates, and how did they evaluate you?

Each student will receive an individual grade on development process. You will receive grades on individual activities, on a scale of plus, check, minus, zero.


Janet Davis (davisjan@cs.grinnell.edu)

Created August 16, 2007
Last revised October 7, 2007