582334 TDD-ohjelmointimenetelmä ja koodin suunnittelu (5 op), syksy 2009
582334 TDD programming technique and designing code (5 cr), autumn 2009

Kurssiesittely Luennot Harjoitukset

Separate Exams

This course's separate exams are different from other courses, because it will not be possible to measure the skills learned on this course with just regular exam papers. The separate exams will consist of two parts: a project work and an oral exam.

Project Work: You will need to refactor the source code of a small Java project (about 1000-2000 SLOC) and return the resulting code by email to the teacher. The project work will be rated based on the quality of the resulting code.

Oral Exam: You will need to attend an oral exam (about 45 min) where you will program using TDD. You will implement a small assignment from scratch, while pairing with the teacher. The oral exam will be rated based on how well the TDD process is followed.

You can attend the separate exam by contacting the teacher by email before the date of the separate exam. The dates for the separate exams during the year 2010 are 19.1.2010, 26.3.2010, 15.6.2010 and 26.11.2010. The oral exam will be on the exam date (or soon after it). You can start doing the project work right away (see the assignment below) and it must be returned by email 2 weeks after the exam date. The effort needed to do the project work is comparable to doing all the exercises of this course, so it's best to reserve enough time for it.

Course Material: The material for the separate exam is the same as for the course. This includes the book Clean Code: A Handbook of Agile Software Craftsmanship (some copies are available in the library), the lecture slides, and the articles and videos which are linked on the Course Material pages at the end of each lectures' slides.

To prepare for the exam, it is recommendable to write lots of programs using TDD and refactoring the code to be as clean as possible. Doing the exercises of this course may be useful, in addition to which you should use TDD in your own little projects. Object Calisthenics (also explained here) can be a good exercise for learning OO design and refactoring. Also review and apply the course material on how to write clean code.

Project Work

The assignment is to refactor the source code of Corruption Corrector - a pile of moderately dirty Java code written by a 1st year CS student on the Programming Project course. To find out what the program is about, read its description and tutorial.

Get the source code from http://github.com/orfjackal/ccorr by cloning the Git repository. Always make a commit after completing a refactoring. Then when you return your project work, return the whole version history of your changes, so that it can be seen how the code evolved. With Git this can be done by putting the project's .git directory into a ZIP file.

Also write down short descriptions of how you improved each of the code design problems which are mentioned below. For example when splitting a class with multiple responsibilities, mention that into which classes each of the responsibilities was moved. This is to make it faster for the reviewer to grade the assignment.

The Project Work Assignment

Note: The scope of the project work and its grading has been changed. Contact the teacher to agree on the scope.

Your assignment is to refactor the code in the net.orfjackal.ccorr package. The net.orfjackal.ccorr.gui package does not need to be improved, as long as it's not broken. The ccorr package has quite good test coverage, so that refactoring can be done safely, but the gui package has no test coverage. Here are some things that are in general wrong in the current codebase:

Here are some specific things that are wrong in individual classes:

Grading

The oral exam will be graded Pass/Fail. To pass the oral exam, the following points must be obeyed:

After passing the oral exam, the project work will determine the final grade for the separate exam, on scale 1-5. You can get a maximum of 25 points from the project work, grade 1 requires 13 points, and grade 5 requires 21 points. The following criteria are used to give points:


Viimeksi muokattu 01.12.2010 21:05 Copyright © 2009 Esko Luontola