Hide menu

TDDB84 Design Patterns

Lab assignments

These instructions are valid from the fall of 2014

General Instructions

The software you will be working on is FreeCol, an open source implementation of a multiplayer strategic computer game set in the Caribbean during the era of European colonization. You will analyze, test and modify the software, to emulate a normal progression for new developers in a project, and in the process try to understand how the software works, in terms of design decisions and their impact on your ability to understand, test and modify it.

Questions and Answers

One important note before you proceed to the instructions below: If you have any questions regarding the labs, make sure to check the corresponding forum in Moodle. Please feel free to participate in the discussions there and post your own questions.


The lab series will be performed within a larger software project due to the nature of software design and design patterns: design patterns will be necessary and visibible only at a larger scale in software projects. Also, software design tends to matter only when several people work jointly on a project, which is why you will be divided into groups.


Based on the pairs registered together in WebReg, you will be assigned (almost) randomly to one of three main topic groups:

  • The GUI group (package net.sf.freecol.client.control,gui)
  • The Domain model group (package net.sf.freecol.common.model)
  • The AI group (package net.sf.freecol.server.ai )

Each pair will belong to one of these three groups, and will also be connected to two other random pairs from each of the other two topic groups. See the table below for more information. Each row lists three groups that are connected to one another through the lab series. Each group will primarily be investigating, testing and adding functionality in a restricted part of the application described by the Java package listed to the right of the name of each group above.

GUI Model AI
karha455 sebhe175 johli119 tonfr314 marsw115 nikse235
GUI Model AI
julwi727 perek586 felno295 arvar314 johfr035 robda446
GUI Model AI
felri885 emmhe587 denju441 olist125 tomvi780 jonsk197
GUI Model AI
danni701 nicos276 johsj101 jimax536 jonka100 hanes262
GUI Model AI
nikbo120 emibe709 chrpa237 oscha646 rasho381 simda870
GUI Model AI
emiol791 kribo852 marja589 dengo392 henla728

GUI Model AI
denor390 jusso422 matsv339 maxda784 simke926 andso518
GUI Model AI
antni325 wilda168 petar239 mathu837 nikni492 simsp242
GUI Model AI
simqv543 wilho466 larpe603 vikan661 magha862 davbe067
GUI Model AI
robab960 arvjo966 milba894 ammal617 jendu050 danca836
GUI Model AI
juaji524 guali867 sruko932 rosra333 yunko064 renwa331

GUI Model AI
josgu898 johgu166 perwe710 sebst697 antsu469 alete471
GUI Model AI
erika440 filan821 gussv448 samli627 emihe386
GUI Model AI
johro127 maral420 axeek790 marfa222 albst795 marno512
GUI Model AI
ludhe894 andgu198 gunbe856 axeba415 antda166 simha478
GUI Model AI
stebr697 nikha184 crito803 jaklo522 marni388 eriha700
GUI Model AI
tomwa926 davla305 matca324 micso796 davsa410

GUI Model AI
karkr654 jonze168 emiax775 tomfo938 emiry224 albto827
GUI Model AI
emmed608 hanin602 phibu125 alece341 aroto019 marny568
GUI Model AI
linme882 linna887 jonpe176 marwa172 gabba873 krija286
GUI Model AI
johel964 sofwe496 nikan278 joade361 teovi698 oscwe917
GUI Model AI
annfl042 nikfr357 marga603 sarsv839 davfa652 antos600
GUI Model AI
frejo989 danca706 mikza835 aleud070 johsy071 marki423

Timetable overview

The lab series is a big part of this course, so prepare to invest some time in it. Below are the expected hours for each laboration given, and these include not just doing the laborations but also discussing with your peer groups, submitting forum posts to Moodle, and reading other groups' material.

  • Lab 1 should take 24 hours to complete.
  • Lab 2 should take 24 hours to complete.
  • Lab 3 should take 32 hours to complete.

This sums up to 80 hours, which is equivalent to the 3hp or 3 ECTS.

Note: This is just an overview for you to get a brief appreciation for the workflow. For a more detailed view, please see Timetable


In order to be able to hand in your assignments for the labs, you will require enrollment keys for Moodle so that you will be added to the correct group in that system. The following keys are set for the groups:

Group Enrollment Key
Group A 2014_groupA
Group B 2014_groupB
Group C 2014_groupC
Group D 2014_groupD

The software will be developed within a lab environment that consists of the programming language Java, a Java development environment (Eclipse), source-code management for distributed development (git/GitLab) and the software itself (FreeCol). In that order, we suggest that you do tutorials to understand the parts that you are not familiar with since before:

In order to get started after have been assigned a group, it is necessary that you complete the following steps: Git & Gitlab guide.

We encourage you to try the game, alone or against your friends.

You will have had projects and accounts generated for you in GitLab, where the first person in each subgroup will be the owner of the project. You will need to ensure that you can collaborate on the project both of you, by making both students developers in the same project. Is is assumed that you work actively both by submitting to the project.

Also, you will have to invite your assistant to be a developer in your projects, so that he or she can review your progress. Your projects will not be visible to all other students. The groups that you are working with will have to submit their work to you as pull requests.


Below are some suggested tools that could provide useful throughout the lab series.

  • ObjectAid UML Explorer - Provides an UML overview over a selected set of classes, which could prove useful when locating design patterns or finding structural dependencies in the code.

Hints and help

  • The Eclipse command to Open Call Hierarchy is a useful tool to help see dependencies and usage for methods and constructors. In order to use this command right click on a method or constructor and select Open Call Hierarchy from the drop down menu.
  • If you are new to Eclipse or just need help on how to setup, compile and run the FreeCol project, please see the compiling and running FreeCol tutorial

Bonus points for written examination

During lab 3 you will have the possibility to acquire bonus points for the written examination. More on this in the instructions for lab 3.

Lab assignments

Page responsible: Ola Leifler
Last updated: 2014-09-03