Implementation of Heuristic Algorithms for Board Games

Implementation of Heuristic Algorithms for Board Games

Practical Software Course, Summer Semester 2026

News

  • Nov 25: Page up

Plenary meetings

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

  • Biweekly meetings in Room 9U10 (2359|U112) (E3) from ??-??
    • From ??.04.2026 up until (including) 03.06.2025
    • Last Meeting on ??.06.2026 (three week gap)
  • most of the time, less than 90 minutes will suffice

Moodle & Discussion Group

This course has an accompanying Moodle room (??). There will also be a discussion forum.

To contact the organizers, you might use the mailing list: ??

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 organizers are Roy Hermanns, and Philipp Schroer.

References

Remarks

  • Attendance of every group meeting is mandatory.
  • The language for this course will be English.
  • Students are expected to form and work in groups of 4 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 Rust.
  • Reports have to handled in a clearly defined location in your Git repository.
  • We will make use of the University’s Gitlab: https://git.rwth-aachen.de