There are 5 programming projects. The first four projects are specified by Gusty. You will define your fifth project. Each project allows you to extend your knowledge of important programming concepts and demonstrate mastery. Projects require source code (.java files) to be submitted on Canvas and other information as specified in the project.

The due dates for projects are as specified in Canvas.


Each programming project must compile, run, and adhere to the specification in order to get credit.

Programs are expected to conform to coding guidelines described in class.

Students develop aspects of their fifth project as part of the projects 1 through 4. One of the goals of project five is to emphasize the software development process. Each student would work with me to design the contents of their program so that it is in an area of their interest. We would have several items due as part of projects 1 through 4, for examples.

  • Define areas of interest and write some initial ideas for your fifth project.
  • Write the requirements
  • Create the design and test cases.
  • Develop the program.
  • Test the program.
  • Demonstrate the program to the class.
    • After studying material in a modules, and completing labs, you have a programming project.
    • The majority of programming projects are individual assignments.
      • You cannot seek help from others.
      • You cannot seek help from your teammates.
      • You cannot search the Internet for possible answers.
      • Your study of course material and practice on labs have provided you will all necessary knowledge to complete a programming project.
    • When a project contains team components, they are clearly deliminated. Teammates may collaborate and complete team components of projects.
    • Individual projects are accessed via the Projects Sidebar.
    • Each Project is a self-contained section.
    • You accumulate project points by completing requirements of the projects.
    • Gusty assigns all project points.
    1. Understand the Problem
      • Analyze specification - study the specification as soon as the problem is assigned. This is important for projects, which (a) longer and more difficult than labs and (b) you complete by yourself. You will often discover solutions to problems as you are wandering about campus, but if you have not studied the specification, you cannot solve the problem. Also, Gusty tries to make things clear, but often he does not. Ask questions until you understand the specification.
      • Identify inputs and outputs
      • Think about the data
    2. Initial Algorithmic Thinking
      • Manually solve small concrete cases - I cannot over-emphasize this step. If you cannot create and solve small concrete cases of the problem, you will never discover the underlying algorithm and data strucutes.
        • Get out paper and pencil.
        • Draw out the problem.
        • Solve small concrete cases.
      • Confirm your inputs, outputs, and data that resulted from Understand the Problem step
    3. Design – Algorithms, Data Structs, Tests
      • Generalize the small cases into a detailed design with data structures. You may use pseudo code or flow charts for your design.
      • Create test cases
    4. Write Java Code
      • Translate your design into Java Code
    5. Test and Debug
      • Execute your test cases
      • Debug code when test cases fail