All the study material to support theory as well as the labs is collected here.

Project progress

Allowed grouping PDF You can freely choose your partner, with the restriction that it depends on your results for “Introduction to Programming”. A list of the allowed groups will be published here during the first week.

Program code

References to some resources.

All sample code (both for theory and labs) can be found below.

  • TicTacToe version 1.0 [zip] (“simplest that could possibly work” with unit tests and a counter that counts to 9)
  • TicTacToe version 1.1 [zip] (Basic version with game board filled alternately with X and O).
  • TicTacToe version 1.2 [zip] (Version with contracts and a first demonstration)
  • TicTacToe version 1.3 [zip] (Version where the “magic numbers” are replaced by constants)
  • TicTacToe version 1.4 [zip] (Version where output is generated on a file; also tests with CompareFiles)
  • TicTacToe version 1.5 [zip] (Version where a player is split off as a separate class)
  • TicTacToe version 1.6 [zip] (Version where players are assigned a series of moves)
  • TicTacToe version 1.7 [zip] (Version in which the winner’s information is tracked and calculated)
  • TicTacToe version 1.8 [zip] (Version in which the interface of the game board is adjusted (reset) for easier testing + customization scenarios)
  • TicTacToe version 1.9 [zip] (Version with early architecture: file manipulations are split off in TicTacToeUtils and the tests are split into DomainTests (for the domain layer) and OutputTests (for the output))
  • TicTacToe version 2.0 [zip] (Version with an XML Importer that uses TinyXML to read XML files and populate a TicTacToeGame. Therefore, separate InputTests that process a series of XML files; some of them have errors and then the error messages are verified.)
  • TicTacToe version 2.1 [zip] (Version with an exporter that exports a TicTacToe Game in various formats (ASCII, HTML). Therefore, separate OutputTests .)
  • TicTacToe version 2.1 [GitHub] (Same version 2.1, but now published on GitHub. You can fork this project and work on it like that]