Implementation of Heuristic Algorithms for Board Games

Implementation of Heuristic Algorithms for Board Games

Practical Software Course, Summer Semester 2017


  • 08.01 – Page up
  • 07.03 – Date/time for meetings set
  • 11.04 – New meeting times set
  • 13.04 – Again new meeting dates
  • 05.05 – Group meeting times set
  • 29.06 – Notice for group meetings on 30.06

Plenary meetings

Plenary meetings will be held every two weeks to discuss previous assignments, the next assignment and overall flow of the course.

Date Time Location
25.04.2017 16:15h-17:45h 9U10 (E3)
09.05.2017 16:15h-17:45h 9U10 (E3)
23.05.2017 16:15h-17:45h 9U10 (E3)
13.06.2017 16:15h-17:45h 9U10 (E3)
27.06.2017 16:15h-17:45h 9U10 (E3)
11.07.2017 16:15h-17:45h 9U10 (E3)

Group meetings

Location: The group meetings are held in our seminar room at I2, building AS55 E1. It is located on the 3rd floor (2.OG), 2nd door on the left of our hallway.

Update: The meetings on 30.06.2017 will take place in building E3, room 9220 (top floor).

Group Day Time
1 Thursday 16:00
2 Friday 15:00
3 Friday 15:15
4 Friday 15:30
5 Thursday 16:15
6 Friday 15:45
7 Thursday 16:30
8 Thursday 16:45

Discussion Group

A mailinglist will be made available for general and technical questions and discussions among students. Students are urged to answer other student’s questions.

Topics and Goals

The aim of the course is the implementation of a strong computer player for an extended version of Reversi. At the end of the course, a competition will be held between the developed computer players and a ranking is set up. The top of the ranking is the winner of the competition, and additional points to the final grade will be awarded to the winner.
During the course, techniques and concepts for creating stronger computer players are introduced incrementally which are expected to be studied and understood by the student. The course covers the following topics:

  • Client network socket programming
  • Mini-max and paranoid search
  • Alpha-beta pruning
  • Iterative deepening
  • Move sorting
  • Aspiration windows
  • Game state rating heuristics
  • Empirical algorithmic efficiency analysis
  • Performance and memory profiling
  • Technical writing and reporting

The current lab organisers are Harold Bruintjes and Philipp Berger.



  • Attendance of every meeting is mandatory.
  • The language for this course will be English.
  • Students are expected to form and work in groups of 3 students.
  • Grades are based on the quality of the written reports, the quality of the source code, the strength of the AI, team play and work attitude.
  • The implementation is expected to be in Java or C++.
  • Reports have to handled in a clearly defined location in your Git repository.
  • We will make use of the University’s Gitlab: