Iteration 0: The Development Environment


Use the first class to work on the exercises below. No hand-in is required.

Exercise 1

Form groups of two or three persons and enroll in one of the available groups on BB - ensure you pick a group name with your class name in it, so your TA can find you!

Exercise 2

This course requires a lot of tools running on your machines and I provide two options for you. Either you use a pre-installed virtual Lubuntu Linux machine that has all tools; or you install the tool stack onto your machine by yourself. Either way, consult the Tools page for what to do. I will recommend using the VM if your machine has enough juice to run it at acceptable speed: Linux is something you ought to know as a software engineer.

  1. If you do not use M51, get hold of the starter code for the mandatory project, and unzip it in some suitable folder; I unzip it in my '~/proj' folder to get the project root in '~/proj/hotciv-tdd-start'.
  2. Test your installation by running gradle test in the root folder of the project. It should output something like
    dev@m1:~$ cd proj
    dev@m1:~/proj$ cd hotciv-tdd-start/
    dev@m1:~/proj/hotciv-tdd-start$ gradle test
    Starting a Gradle Daemon (subsequent builds will be faster)
    :processResources NO-SOURCE
    :processTestResources NO-SOURCE
    :test UP-TO-DATE
    Total time: 7.607 secs
  3. If you do not use the M51, import the HotCiv project into your IDE of choice. If you use the course recommended IntelliJ, you can follow the Import a Gradle project into IntelliJ guide.

Exercise 3

Several hand-ins will require delivering screencasts. If you have not made screencasts before, check out our group's ability to make such. Consult the Tools page that contains suggestions. If you have others, please report so on the web board, to get everyone going.

Exercise 4

The course uses a concrete programming project, HotCiv, to illustrate central concepts from course curriculum: test driven development, design patterns, compositional design, frameworks, systematic testing, and remote method calls.

The project, when finished, will be a framework for designing variants of a Civilization type game, quite a few simple variants, and one variant that is (nearly :) playable, and includes a functional graphical user interface.

If you have never played any "God type games" like Civilization, Rise of Nations, Command and Conquer, StarCraft, etc., I suggest that you "play around with them" a bit. You can find playable demos of many of them, and ultimately there is FreeCiv (full free conversion of the original Civilization game for major platforms).

Exercise 5

Start on the Iteration 1 exercises which is next weeks mandatory.