Labs for Artificial Intelligence 1 (Winter 2016/17)

This page contains materials for the practice lessons of the Artificial Intelligence 1 (NAIL069) course that is/has been taught during winter term of 2016/2017 at Charles University in Prague, Czech Republic. The course is/was lead by Roman Barták. Labs are/were backed up by Jakub Gemrot ( and Otakar Trunda.

Permalink to this page:

Newest labs:


Monday’s workshops, 15:40, SU2 (Jakub)

Wednesday’s workshops, 10:40, SW1 (Otakar)

How to pass the practice

We have a credit system here. You can have credits for: homeworks (extra credits for meeting deadlines),writing essays and tournaments. Tournament points are not necessary to pass the practice, credits from homeworks and/or essays are.

You will need to collect 50 points to pass the practice.

Points are tracked within a google spreadsheet; students may ask for the link:

If you have problems with >FullHD resolutions on Windows 10, read this tip. You have to create a .manifest file for javaw.exe within your JDK or JRE folder.

Homework submission

Mail me:

Subject: AI1 – 2016 – H[homework number] – [homework name]

If you’re submitting AIs, please zip up the whole project folder (except bin/ folder). Note that it helps to rename the extension to obfuscate its mime … if you submitt .zi_ or .zzz my GMail (or yours if you’re using it as well) will not complain about the attachment having executable files.

Note that you always have a chance to submit fixes if I find your solution not good enough 😉


Mario AI

Submission deadline: 30.10.2016 (23:59)

Score extra 8 / 6 / 4 / 2 points!

We will make Mario run through LevelConfig.LEVEL_4_SPIKIES, the best AIs will be awarded with points!

Sokoban AI

Submission deadline: 10.12.2016 (23:59)

Score extra 12 / 8 / 6 / 4 points!

The best Sokoban AI (solving the toughest level) will win! New levels are going to be introduced into the levels GitHub folder over the time!

Conquest AI

Submission deadline: 7.1.2017 (23:59)

Score extra 16 / 12 / 8 / 4 points!

The best Conquest AI (table tournament; all-vs-all) will win!


Lab 07 – 9.1.2017

Encoding Sudoku 9×9 puzzle as SAT problem

Slides (PDF)

  • Use Sat4J to check which Sudoku SAT representation is better

Lab 05 and 06 – 28.11.2016 / 5.12.2016

2-player game of Conquest; checks it sources out from Conquest GitHub repo! We’re going to work with yet-another environment, a 2-player board game, which we are going to eventually implement Alpha-Beta Expectiminimax algorithm in!

Slides (PDF)

Lab 04 – 14.11.2016 / 21.11.2016

Heuristics applied! We’re going to work with Sokoban game and discuss various heuristics for it as well as performance tips. Checkout Sokoban4J sources from Sokoban4J GitHub repo.

Slides (PDF)

  • Programming Homework 04 [10 points]
  • Alternative Homework 04 [10 points]
    • Written report (in the form of PDF) on Sokoban AI; read Pavel Klavík‘s report and describe in detail three techniques (you choose) from “non-implemented” sections including your analysis how they will affect the search.  [10 points]
  • You can be credited only for one of these two homeworks.
  • Any Sokoban AI submit before 11.12.2016 will be put into the tournament!

Lab 03 – 31.10.2016 / 7.11.2016

Today it’s about informed graph-search for Pac-Man maze, checkout its sources from Pac-Man GitHub repo.

Slides (PDF)

  • Homework 03 [10 points]

Lab 02 – 17.10.2016 / 24.10.2016

We are going to implement uninformed graph-search algorithms for Pac-Man maze, checkout its sources from Pac-Man GitHub repo.

Slides (PDF)

  • Homework 02 [5 points]

Lab 01 – 3.10.2016 / 10.10.2016

We were playing with Super Mario simulator in Java, checkout its sources from Mario GitHub repo.

Slides (PDF)

  • Introduction to environment classification
  • Homework 01 [5 points]
    • Create AI for Super Mario!
      • AI must be reflexive, no “agent state / agent memory” persistence allowed
    • If you wish to score extra points, try to prepare your Mario for tough LevelConfig.LEVEL_4_SPIKIES
    • Any Mario AI submit before 30.10.2016 will be put into the tournament!

Java notes (PDF)

  • Contains hint how to fight with Eclipse GUI
  • The only thing that is not included