CS 222 Programming Studio, Spring 2018

Assignment: Connect4

Grading deadline: The most recent version of your code at the time of April 6th, 23:55 will be used for grading.

Part I: To receive feedback on Part I, submit until March 13th, 14:30, by committing your code to SVN.

Part II: To receive feedback on Part II, submit until March 20th, 14:30, by committing your code to SVN.

Part III: To receive feedback on Part III, submit until March 27th, 14:30, by committing your code to SVN.

In this assignment, we will be working with code in the connect4 package. In any part, do NOT change the signature of the public methods you’ve been provided with. You may add new private methods and fields, unless otherwise specified.

Keep in mind that you do not have to commit your code just once. I suggest you to commit your code whenever you implement a new feature. This way, you will also have a backup of your code. We will use the most recent version of your code available at the specified deadline.

Grading

Roughly, the criteria will be as shown below, however, this is subject to fine-tuning. Details will be provided as they become available.

  • Coverage of test cases (HW2.1): 14 pts
  • Cleanness of test cases (HW2.1): 9 pts
  • Correctness of HW2.2: 18 pts
  • Cleanness of HW2.2: 13 pts
  • MVC structure in HW2.3: 10 pts
  • Correctness of HW2.3: 13 pts
  • Cleanness of HW2.3: 13 pts
  • Participation in code review sessions: 10 pts

Correctness will be auto-graded using test cases.

Problem Definition

I want to play a game. It is Connect4. Familarize yourself with the game here: http://connect4.gamesolver.org/

Part I

Implement test cases for the Board class. You should NOT implement the Board class, yet. First, write test cases in the BoardTest class. Do your best to cover all the important scenarios and corner cases.

Part II

Implement the Board class. Ideally, all your test cases should pass when you’re done (assuming that you have a well-written test suite with good coverage).

Part III

Implement a GUI for your program according to the MVC pattern. Here, the Board is the model.