Project Proposal Guidelines

What to Submit and When

Introduction

The capstone course is the culmination of your efforts in computer science, and the projects should reflect this. They are expected to draw upon some or all of the material you've seen in your courses, but should also involve an independent exploration of new intellectual territory. Projects could focus on a fairly narrow topic and "go deep", or they could pull together topics from across a broad range of courses to implement something interesting. (An example of the former might be investigating algorithms for training a neural network and evaluating their effectiveness, while an the latter might be something like using networking techniques to fetch content from web pages, storing it in a database, then using machine-learning algorithms to look for patterns or meaning.) Regardless of the approach you take, you'll be expected to write a final report and make an oral presentation at the end of the semester.

Project details need to be finalized before the semester starts. You'll spend a lot of time working on these projects, and it's important that you take the time now to write up a sufficiently detailed proposal and get it approved so that you can get started promptly once the semester starts. The sections below discuss some relevant project-related topics as well as the expected format and content of a project proposal.

Project Selection

Where to start? What should you do? Think back on the projects and assignments you've worked on in the past. Did any of them get you excited? Motivated? Challenged? (If not, maybe you ought to rethink the whole CS-as-a-career thing...) What did they have in common? How might you do something similar-but-new? Or, when you think about the projects you've experienced to date, are there things you wish you'd learned? Now's your chance. Alternatively, instead of looking back you might consider looking forward instead: What would you like to see yourself doing in the real world (or in grad school)? What kinds of projects might you undertake now that would give you an edge when it comes to interviewing, and/or give you some direct experience to help determine whether your possible career choice is really as interesting as you thought it might be?

I'm sharing a few project proposals. You might also look for a client and see if they've got needs. Contact a non-profit in Tacoma and ask them what you can do for them, or find faculty or groups on campus and offer your services. Talk to your fellow capstone students as well — maybe some of them have cool ideas and you can join their team. The past projects might give you some inspiration as well.

Teams

Speaking of teams, in the real world computer scientists work in teams to solve problems. If you're taking the capstone course I'll assume you want to be a computer scientist when you grow up. And that implies that you need to practice your teamwork skills. Thus we're really expecting you to work in small groups on your projects. Not only does that give you a chance to hone your teamwork skills, it means you can tackle larger and more interesting projects over the span of a semester. There are situations where a team isn't the right way to go — for example, if you're doing a "depth" style research project. You might also find that you've got a project that you really want to complete but that doesn't get anyone else excited. In general though I'll be expecting you to work in small groups, and you'll have to justify any exceptions.

Capstone Project Proposals

Before the spring semester starts, each group must have a detailed project proposal submitted and approved so that we can hit the ground running next semester. Proposals must include the following sections:
  1. A brief overview of the project
  2. An analysis of the challenges that lie ahead: What will the group have to learn to successfully implement the project? What will be hard? Where are the complexities? Think broadly — tools that need to be mastered, software systems you'll use, integration required between components, testing and verification, etc.
  3. A specific description of the functionality you expect once the project is complete. Even on projects that were pitched by faculty, you need to be clear about exactly what you're hoping to accomplish. (This will likely require some discussions with the sponsoring faculty members.) I strongly recommend that you plan for some "basic" functionality — something you are confident you can complete — as well as some "stretch goals" that you hope to accomplish.
  4. A tentative timeline for completing the project, broken down by week. There are about 15 weeks in the spring term, including spring break, but each group must also complete a final written report and prepare for the presentations on April 29th. Your timeline should therefore leave the final two weeks for writing and creating the presentation.
Proposals don't have to be fancy, or long. Just hit the important details.

Process

Between now and the end of finals week, take some time to read up on the projects I'm pitching, as well as any added to the list by your fellow students. By the end of finals week, please make sure you've at least indicated interest in one or more projects (or added your own) here. After finals week ends, take a well-deserved break for a bit, then start collaborating with similarly interested students to refine ideas on these projects and start writing up a proposal. Proposals should be emailed to me no later than January 10th. (One member of the team should submit, but make sure the names of all group members are on the document.) Do not assume that your first submission will be accepted! It's likely that we'll have some back-and-forth as the details are finalized, so it's important not to wait until the last minute. Students without approved projects by January 21st will be unenrolled from the course! You should be started on them by then, not still figuring out what you're going to do.