The second project of the semester is one where you use Java to implement a modest sized program. You have significant flexibility in what you do with this program. I'm just going to specify a few ground rules for what you project needs to include. Basically, it needs to include all main the control constructs in Java (multiple classes and methods, conditionals, loops, and arrays/lists) as well as some sampling of the other topics that we have discussed (files, inheritance, and GUIs/graphics). You will submit three things for a grade as part of the project. The first is your idea for what you want to do. I will have to approve ideas for all of the projects people do. After that you will submit documents describing the design of how you intend to do the project. These will only have storyboards with drawings if you have GUI/graphic elements. Otherwise they will be plain text. The last element is the project itself.
We will discuss different possible project ideas in class to help give you an idea. Games or simple applications are the general way that you will want to go.
For the design document there are a few things that you need to do. Unlike with Alice, you might not have any drawings. If you have a GUI it might help to draw what you plan that the GUI will look like, but text programs won't need any drawings. What you will have in all of your designs will be an exact description of the problem that you are solving, including how the user interacts with the program and what options the user will have. For each option, I want a description of what it does. Technically this part where you specify what you are doing is called the analysis. The design is where you tell me how you will do it. I want you to tell me what classes you are going to create to solve the problem you have picked. For each of the classes I want you to list and give a brief description of the properties of that class as well as the main methods in it. I fully understand that you are likely to miss some methods, but the basic idea of the design is that when you sit down to code you should have done most of the hard thinking and all that is left is turning what you wrote into proper Java.