Overview

The main goal of this project is to nudge you to push further your understanding and capability of Java. To that end, you'll design a project that you'll implement in Java. This could be something that you ultimately hope to use as an assignment, or simply a project for you to push the boundaries of what you know.

Choice #1: Game

Create a computer game. This can be entirely text based, or you can optionally do something with graphics or images if you like.

The choices for games are endless. A few suggestions to get you started are 3D Tic-Tac-Toe, Dots and Boxes, Battleship, and Go Fish, to name a few.

Some games are well-suited to object-oriented design. Some are not, and are more well-suited to procedural programming. Some can be reasonably done either way. The AP exam focuses heavily on object-oriented programming, so you may well want to choose to practice an object-oriented structure, but this is ultimately up to you.

Your game needs to have some level of complexity associated with it. How much it contains depends on your level of experience and is something we should talk about. Some games (such as Scrabble) naturally have a huge amount of complexity built into the game itself. Other games (such as Connect Four) might be simpler, but you can add complexity by making an attempt at an intelligent computer player.

Here are some choices students in my own courses have picked in the past.

Choice #2: Your own idea

Would you like to apply what you're learning about computing to something in another discipline? Perhaps you want to do some kind of modeling or analysis of data; perhaps you want to do something artistic. Talk to me. Whatever the project is, it should similarly push the boundaries of your Java experience, and give you an opportunity to think about object-oriented design and/or algorithm design.

Some notes on receiving credit

If you are submitting the project for Carleton graduate credit, here is a a rough sense of the criteria I'll use for grading:

It is perfectly ok to pick an easy goal in order to achieve, especially if you're new to this. For people with more advanced experience, the sky is the limit. Indulge yourself. But submit something new. Don't submit to me code which you have written in the past.

This is your chance to show some creativity. Have fun!