Hide menu

TDDC32 Design and implementation of a software module in Java

Course information

A little story about course goals

This course aims to improve your understanding and experience with programming. You should continue to build upon the knowledge acquired in TDDC30, so Java is the programming language of choice.

In this course you will get a taste of handling a larger project. A larger project means that it usually needs more advanced programming tools and concepts. For example, multi-threading for doing several things at the same time, communication for e.g. client-server programs, or doing more complex input-output tasks such as using a graphical interface (GUI) interfacing with a database.

To manipulate efficiently the data used in your project, you will need more advanced data structures such as binary information trees, heaps or hash tables. Algorithms will help in maintaining the data structures to function correctly (e.g: balancing the trees or other tasks such as adding/deleting/searching/ordering).

Solving a bigger problem means that you should be acquainted with object-oriented analysis and design techniques, and also that you know how to test your program once the implementation is finished. Moreover, handling a bigger project means that you should have some knowledge on how to organise the different steps of your project.

To summarise, during this course you should acquire enough knowledge, such that in a continuation course such as TDDC88: Software Engineering, you can concentrate on the software engineering, and not get lost in the programming or basic project-handling parts. See also the course syllabus for more factual information.

Course literature

As course book we use the Data Structures and Algorithms in Java book by Michael T. Goodrich and Roberto Tamassia (the same book as for TDDC30). It is used for the data structures and algorithms part of the course and also for providing some object-oriented concepts. It can be also used as basic Java reference book. In addition we use several online resources that are listed in the reading material section.

Lectures, labs, and project

As a general guideline the lectures are divided as follows. There are around 3 lectures on data structures and algorithms, then 2 lectures on advanced Java features, and then 2 lectures about object-oriented analysis and design, and UML. The last lecture will be on project management.

The laboratory work gives practical depth to the theoretical part.

The project implies between 80 and 100 hours of work and consists both of a) design and programming, and b) project organisation/documentation, where the biggest part of the time should be spent on programming (66-75%).


The course has the following examination items:

  • LAB1 (1.5 ECTS credits) lab assignments
  • TEN1 (1.5 ECTS credits) written exam:
    • 2013
      • 2013-03-15, at 14-18 (solutions). An exam viewing session was held on Tuesday 2 April at 12-13 in Donald Knuth, IDA House B, first floor.
      • 2013-06-07, at 8-12. An exam viewing session will be held on Monday 26 August at 12.00-12.30 in Donald Knuth, IDA House B, first floor.
      • 2013-08-29, at 14-18
      • Old exams are to be found here
  • PRA1 (3 ECTS credits) project work

To pass the course you will have to pass all the three examination items: a) The laboratory work, b) the project, and c) the written examination dealing with the theoretical parts. The end grade will be calculated from the exam grade (33%) and the project grade (66%).

Page responsible: Tommy Färnqvist
Last updated: 2013-07-29