Responsible for this page: Jalal Maleki, jma@ida.liu.se
Page last updated: 2006-11-23
LiU » IDA » Undergraduate » Course » TDDC60 » Project


[ Go to content ]
Customize A-Z shortcuts for IDA Maps Contact us
Go to LiU.se

TDDC60 (2006/07)

LiU » IDA » Undergraduate » Course » TDDC60 » Project

TDDC60 Programming: Abstraction and Modelling

Project


On this page students will find information about the project work which constitutes the content of the course work for the second half of the course. This information includes:

General instructions

For the second half of the course, each student is expected to work on a small Scheme-based final project.

The projects in TDDC60 will begin week 43 by startup meetings in the standard class groups you had last period. During this initial meeting, we will go through how to write a Project Proposal, which you will have to hand in by Thursday, week 43. Then, based on your proposals, we will assign you to groups according to your preferred project topics by Friday, week 43. In those groups, you will have an initial meeting week 44 after which you will have scheduled lab hours every week. During the projects, you will be able to receive support based on agreement with your supervisor.

During the initial meetings in week 43, we encourage you to also visit other classes and supervisors to get more information on the kinds of projects those supervisors will handle. Note that Y2A has initial project meeting on Tuesday 8-10, not on Monday as the other groups.

In the middle of the project period, somewhere around week 47, you will have a project meeting with your supervisor where you should your progress in front of the group.

Demonstrations

In week 48-49, you will demonstrate your final projects for your project supervisor as well as for each other. There are lab rooms booked for this purpose though you may, together with your supervisor, decide which date to have final demonstrations.

Choosing your Project

You should spend some time choosing your project. It is important that you choose a project that you are interested in since project description we provide you with are not as detailed as the descriptions of the laboratory exercises. Once you have made a choice you need to prepare a more detailed project proposal that matches you interest. You can either select one of the projects that we propose below or create your own project completely. In any case, you need to consult the teacher which is interested in the kinds of projects you like to work with. Sooner or later you need some supervision and it is important that there is an agreement on what kind of projects the teachers in the course can supervise.

Board games

  • For more information, contact the assistant for this project: Ola Leifler

The idea in this project is that all groups that decide to do this project agree on one board game to implement. For that board game some group(s) implement a common server that all the groups will use. Each group then develops their own client and AI-player (artificially intelligent player) interfacing to that server. Graphical interfaces improve the usability of the programs but are not required and it is up to the project team to decide whether they implement graphics or not. Alternatively, one of the groups make a graphical interface which the other groups use, time permitting.

At the end of the semester all the groups gather for a tournament between the players from each group.

Suggestions for board games include:
  • Settlers
  • Carcassonne
  • Roborally
  • Tsuro
  • Elfenland
  • Puerto Rico
  • Power Grid
  • Monopoly
More board games can be found on boardgamegeek.com. If you want to try them online, try http://brettspielwelt.de/.

Othello

  • For more information, contact the assistant for this project: Jonas Wallgren

The purpous of this project is to implement an othello game with a computer player. Othello, chess and go belong to a family of games for two players where both players have perfect information (can see the entire state of the game) and there can be only one winner.

There exist a number of algorithms for playing in games like these. A good start is the Minimax algorithm.

When implementing Othello, you will have access to a dedicated Othello GUI library so little or no GUI programming will be required.

Animated games

This project is meant for students with a passion for small simple games. The main focus is animated graphics and interaction. These games are supposed to interact with the user.

Examples of games that fits this description are:
  • Tetris
  • Breakout
  • Pac-Man
  • Frozen Bubble

(Text based) Adventure games

  • For more information, contact the assistant for this project: Tobias Ivarsson

In lab4 you began work on a small text based adventure game. Adventure games have been around for quite a long time and are still as popular as ever.

In this project you get a chance to improve or rewrite your game from lab4. The minimum requirement is that the project game is bigger than the lab4 game. You should also implement at least one additional feature. Examples of additional features are:

  • Dynamic worlds
    Make it possible to write the in game world in some representation that your program can read so that the worlds can be changed without changing the program code. Prehaps even implement a way of extending the world during the play
  • Graphical interface
    Implement some simple graphics for your game that shows the world the user is playing in
  • Network capabilities
    Combine this project with the Network applications-project and make a MUD (Multi User Dungeon) that allows several people to play in the world at the same time and interact with each other.
    See for example prophecy for inspiration.

The text editor Emacs actually has an implementation of a text based adventure you could look at for inspiration. To start it; start emacs, press M-x (hold the meta-button and press x), type "dunnet" and press return.

Network applications

  • For more information, contact the assistant for this project: Tobias Ivarsson

The aim of this project is to implement a client/server system. As a suggestion, students can implement a chat server with an accompanying client.

Alternatively you could choose to implement a client (and/or server) for a specific protocol, such as IRC, XMPP or ICQ. Information about the IRC-protocol (RFC 1459) can be found on irchelp.org.

Another alternative is to combine this project with some other proposed project and create a MUD or an IRC bot. Or choose an area of application out of your own imagination.

Computer languages

  • For more information, contact the assistant for this project: Jonas Wallgren

In this project the group is supposed to implement a subset of another programming language. This could be solved in two ways; either by an interpreter or by a compiler.

An interpretor is a program that reads the source-code and then carries out the instructions right away. Much like the REPL in DrScheme.

A compiler on the other hand is a program that translates the input program from one programming language to another, and then hands over execution of the translated code to another system. Commonly code is translated into machine code that the computer then executes, but in this case you could translate your code to scheme.

Another idea for this project could be to implement extensions to scheme. For example some of the new suggestions from R6RS.

Requirements

The language you implement should contain variables, assignments, procedures and control structures (such as if and loops). It would also be nice for the language to have procedures for input and output.

In your design specification for the project you should provide a description of the syntax of the language. Prefably in form of a Context free grammar.

To get you started chapter 4 in SICP discusses the implementation of a scheme interpretor in scheme, this could be a good idea to read.

Example description for Graphics Language

Natural Language Processing

In this project you are expected to develop a small application to process and/or generate natural language text.

To get you started you could have a look at the Emacs Doctor application. To start the Emacs Doctor; open Emacs, press M-x (hold the meta button, and press x), write "doctor" and press return. This is an implementation of the Eliza algorithm which is a quite famous question/response system.

If your implementation of this project is really good it could actually earn you some money. See The Loebner Prize for more information...

You could also combine this project with the Network applications-project and make an IRC-bot, a program that dwells in an IRC-channel and interacts with the people there. For inspiration hear the swedish summer-torture-hit "Boten Anna".

Project groups and supervisors

Based on the poropsals the following new groups have been formed:

Group A Ola

A Space Odyssey Olle Frisk Per Henriksson
Pacman Erik Enqvist (erien474) Adrian Eilertssen (adrei294)
Pacman Tobias Gerdin (tobge612)
Space Menace! Peter Larsson (petla532) Bo Lu (bolu527)
Monopol Robert Fredriksson Danjiel Hir
Monopol Mikael Ögren (mikog359) Jean-Seb Susset (jeasu165)
Carcassonne Johannes Algotsson (johal8483) Daniel Anttila (danan956)
Carcassonne Per Eidenvall (perei182) Fredik Bodesund (frebo449)
Carcassonne Mikael Carlsson (mikca365) Martin Boma (marbo082)
Carcassonne Rasmus Dewoon (rasde592) Tomas Andersson (toman012)
Roborally Erik Eriksson Ianke (erier955) Marcus Kardell (marka792)
Risk Gustav Öst (gusos234) Marcus Wirebrand (marwi908)

Group B Tobias

The network code example from my lecture
Strategispel Kenny Jönsson (kenjo746) Daniel Eriksson (daner963)
Äventyrsspel Karl_rikard Ländell (karla533) Johan Westlund (johwe493)
Äventyrsspel Christian Blåberg (chrbl130) Erik Axling (eriax721) Sebastian Fant (sebfa864)
Äventyrsspel Richard Ekblad (ricek722) Simon Ekvy (simek838)
Äventyrsspel Johan Södling (johso959) Markus Sundbrandt (marsu752)
IRC Erik Rosendorf (eriro993) Richard Wasell (ricwa946)
IRC Emil Nilsson (emini550) Axel Landgren (axela706)
DrIRC Christoffer Peters (chrpe822) Jonatan Larsson (jonla748)
ICQ Guo Ningning (ningu307) Jiehua Dai (jieda119)
Pokerspel Anders Olofsson (andol225) Mikael Persson (mikpe517)
P2P chat Yu Shi (yush431) Wei Xu (weixu026)
DrJabber Rickard Jansson (ricja439) Andreas Karlsson (andka409) Gabriel Sjölund (gabsj808)
Webbserver Anders Karlsson (andka096) Andreas Petersson (andpe243) Niclas Rosenvik (nicro465)
KLICK Mikael Franzen (mikfr128) Erik Hagfalk (eriha936) Erik Hjärtberg (erihj350)
Äventyrsspel Niklas Öberg (nikob997) Johan Haag (johha088) Fredrik Haglund (freha882)
Snake tournament Johan Olsson (johol934) Joachim Lundh (joalu331) David Månsson (davma652) Sebastian Ljungberg (seblj118)
Tic-Tac-Toe-Bot John Toresson (johto357)
The Doom of Quake! Anton Höghäll (antho910) Carl-Gunnar Hörberg (carho654) Emil Jonsson (emijo889)
WAV-editor (TDDC04) Daniel Sandberg (dansa732) Daniel Skof (dansk514)

Group C Annika

More information can be found here

Filmexpert Emil Granberg (graem978) Robin Isaksson Vivungi (robis369)
Kocken Johan Ersson Oscar Frick
Telefonförsäljare Dennis Alenkvist (denal793) Martin Arne (marar637) Daniel Edström (daned885)
Tetris Lars Ryefalk (larry618) Christopher Tholander (chrth435)
Tetris Erik Löfberg Johan Relefors
Tetris Oskar Karlsson (oskka208)
Tetris Magnus Degerfalk (magde580) Per Bjorklund (petbj 624) Albin Carnstam (albca711)
Tetris Fredrik Bengtsson (frebe925) Rikard Berglund (rikbe481)
Tetris Elin Naeslund (elina656) Ida Andersson (idaan663)
Tetris Stefan Thorstenson (steth114) David Sandberg (davsa736)
Tetris Johanna Rost (johro936) Eleonore Taube (eleta847)
Frozen Bubbles Ida Värbrand (idava899) Moa Gustafsson (moagu291)
Lethal racing (kriro676) (johno227) (jakla696)
Bilspel Hans Persson (hanpe899) Daniel Magnussin (danma354)

Group D Jonas

Image synthesis Andreas Lord (andlo779) Mårten Svanfeldt (marsv066)
Snake tournament Johan Olsson Joachim Lundh David Månsson Sebastian Ljungberg
Jake the snake Mikael Lietha (mikli278) Rikard Norman (rikno676)
PUCKO Thobias Romu (thoro099) Jakob Spång (jaksp734) Magnus Sellden (magse321) Markus Råbe (marra760)
Othello Johan Bergkvist (johbe895) Anders Bergdahl (andbe752) Peter Carlsson (petca665)
Othello Olof Bäckman (oloba221) Tobias Andersson (toban563) David Håkansson (davha412)
Othello Kristoffer Öfjäll (krifo308) Pontus Stenberg (ponst516)
Othello Isac Duhan (isadu859) Sebastian Abrahamsson (sebab580)
Othello jonatan Liljestrand (jonli428) Richard Nilsson (ricni453)
Jean-Philippe Bougie (jeabo139) Paul Georges (pauge112) Rogan Shimmin (rogsh568)
Backgammon Simon Deconde (simde134) Arnaud Antoine (arnan118)
RSA Tobias Thörnfeldt (tobth624)

Resources