Responsible for this page: Jalal Maleki, jma@ida.liu.se
Page last updated: 2006-11-23
LiU » IDA » Undergraduate » Course »
TDDC60 »
Project
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.
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.
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: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.
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: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:
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.
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.
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.
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 LanguageIn 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".
| 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) |
| 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) |
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) |
| 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) |