Hoppa till huvudinnehållet
Institutionen för informationsteknologi

Methods of Programming DV2 Spring 2007


Here you will find recent updates about the course. Make a habit of reading
this page on a regular basis.

  • (2007-06-28) The assignment results have been reported to the IT department's student office.
  • (2007-06-28) The traditional exam has been graded. All passed. The exams have been sent to the IT department's student office.
  • (2007-06-11) The take home exam has been graded. Everybody passed. The exams are now available at the IT department's student office.
  • (2007-02-01) Updated assignment deadlines and examination dates. This page should be mostly OK now.
  • (2007-02-01) Finished translating this page (wiki and Mozilla conspired to eat my previous translation; this one was done in Emacs). Dates and deadlines are still incorrect.
  • (2007-01-19) Copied the page from last year's course. Begun translating and updating it (not finished).

Course start

The first event is a lecture on Friday January 19th at 13:15 in room 1311.

This lecture is mandatory since the students will be registered and various administrative
information will be given. Those that cannot be present must contact the

Course Goals

The goal of the course is to bring deepened knowledge and skills in methods of programming,
by conducting a larger programming project with strict demands on quality in code and documentation.

See also the formal course plan for
DVP-course, for "free" course.


This course is given in cooperation with the Software Engineering (SE) course.
Students taking SE will create requirement specifications that will be used for
assignments 2 and 3 in this course. The SE students will also be responsible for
quality assurance (planning tests and code inspection) for these assignments.

The two courses have some shared lectures. The shared schedule is

In the 3rd quarter the course will be at a low pace (10% work effort).
During the 4th quarter the pace will increase (30% work effort).

Course literature

The main literature is a collection of articles printed by the department, which can be
purchased at UTHgård.

There is also a recommended book, "The Pragmatic Programmer: From Journeyman to Master" by Andrew Hunt and David Thomas, Addison-Wesley, ISBN 0-20161622-X.

Information from the Teaching Assistants

The teaching assistants have their own information page.


The assignments are here. For its solution a number of coding and documentation rules apply.

Some of the information needed to complete the assignments (for instance information about the XML format and the XML parser) are not in the assignments specification but on this page.

The assignments should be done in groups of 3 (maybe 2) people. These groups should be registered with the course assistant at the start of the course (name and email for all members of the group). If you have noone to work with, contact the assistant and you will be assignent to a group.

Subassignments that have a "passed" grade are not necessarily 100% correct. Minor errors will not require immediate correction but must be fixed in the next subassignment. You should therefore get your graded assignments as soon as possible, even if they got a "passed" grade. If any errors noted by the assisant have not been corrected by the next subassignment, the assignment will receive a "failed" grade.

Assignments should be handed in on paper, with documentation and source code (see the assignment specification for details). When handing in the assignment your group should also provide a "tar file" containing the source code for your code. It is recommended that you list the complete name and directory of the tar file at the beginning of the assignment document you handed in, so the assistant can find the file. When the tar file is unpacked it should create a directory with the same name as the group. Executing make in this directory should build the tracer program (not required for subassigment 1).

PPM Test files

Larger test files in the ppm format can be found on the Unix systems in the /it/kurs/pm2/vt04/ppm directory. To view the contents of a ppm file you can use the xview program. Smaller test files can be found on the last page of the assignment specification, or even be constructed manually.


Read an XML presentation in Swedish (slides) or a short introduction to XML. There is also a lot of information on the web. For instance, you can do a Google search for XML tutorial.

Example files for the ray tracer in XML format can be found in the /it/kurs/pm2/vt04/xml directory. The DTD for the ray tracer files is here (/it/kurs/pm2/public_html/VT04/pm2gl.dtd in the Unix file system).

This couse will be using the libxml2 XML parser to read XML files following the DOM (document object model). There is an introduction to libxml2, also in pdf format. libxml2 is installed on the department's Unix systems. When compiling and linking a program using libxml2, you need to give gcc the -I /it/sw/www/include/libxml2 -L /it/sw/www/lib -l xml2 options. In the /it/kurs/pm2/vt04/xmltest directory there is a program xmltest.c which is based on a program in the XML introductions above. It parses and validates an XML file, and prints the file's element names with indentation corresponding to the structure of the file.

To view or edit XML files the xmlpro XML editor can be used. The executable can be found as /it/kurs/pm2/vt04/xmlpro on the Unix systems. Documentation is available in pdf format. Before running xmlpro you must copy its license file /it/kurs/pm2/vt04/xmlpro2.01/xmlpro.prp to your working directory.

Deadlines for assignments

  • Assignment 1: February 9 at 17:00
  • Assignment 1 (corrections): February 23 17.00
  • Assignment 2 (test): March 9 at 12.00
  • Assignment 2 (corrections): April 13 at 17.00
  • Assignment 3 (test): April 27 at 12.00
  • Assignment 3 (corrections): May 4 at 17:00
  • Assignment 4: May 25 at klockan 17:00
  • Assignment 5: May 25 at 17:00

Note that for assignments 2 and 3, the Software Engineering students will create a formal specification which you should follow while programming your solution. This means that error messages and functionality should follow the specification, after it has been approved by the Software Engineering course assistant.

The Methods of Programming groups should have completed their assignments two weeks before the deadlines: the latest date for handing over their code to the Software Engineering groups and the course assistant is indicated above as the (test) deadline. Then the Software Engineering group will assess the quality (testing and code inspection in collaboration with the Methods of Programming group). The Methods of Programming group should take note of this quality assessment, correct any problems, and hand in a improved assigment by the (corrections) deadline. This process is repeated for the complete ray tracer (assignment 3).

There will also be a final deadline for handing in assignments and corrections. Assignments not handed in by the final deadline will not be graded.


The examination consists of an assessment of your solutions for the assignments, and a two day take-home exam. On the home exam there will be questions regarding your specific solution to the assignments (for instance, "briefly describe how you would change your code to ass the following functionality..."). For a passing grade you must pass both the assignments and the take-home exam.

All aids are permitted for answering the take-home exam, except for asking other people. To this end, every member of each group will get a different version of the exam.

For a passed with distinction grade you are also required to take a voluntary traditional written exam, with more theoretical questions regarding the course material, primarily the article collection. To pass with distinction you must pass with distinction on two of the three examination parts (assignments, take-home exam, traditional exam).

The take-home exam will be on May 24 and May 25. You do not have to register to take this exam. The exam will be handed out in office 1318 between 08:30 and 09:00 on May 24. If you do not come get the exam, it will be sent by email shortly after 09:00, but only if you have emailed the examiner and requested this. The exam should be handed in (on paper!) in the examiner's mailbox (outside the department's coffee room in house 1 on the fourth floor) by 16:00 on May 25. If you come to pick up the exam yourself, you must show a valid student registration card (kårleg). If you get the exam by email, you must visit the examiner and show a valid student registration card before the results will be registered. If you fail the take-home exam or choose not to take it, a re-exam can be arranged in the August re-exam period. Contact the examiner if you want a re-exam opportunity.

The voluntary traditional exam is on June 4 (time and place not yet decided). For this exam you must register with the students office as usual. Since a passed grade cannot be raised afterwards, there will be no re-exam for the voluntary exam.

Some old exams: Take-home exam 980814, Voluntary exam 971024.


Using another group's solution for an assignment when doing your own solution, or even handing in a superficially altered copy of someone else's code, is considered cheating. This also applies if different groups collaborate to solve their assignments. Cheating that is detected will result in disciplinary actions and suspension from teaching and examination.

It is of course allowed to discuss methods and solutions between groups, but the actual code you hand in must be your own and not based on someone else's. If you think that such discussions may lead to two groups handing in "too similar" solutions, then inform the teching assistant in advance to avoid problems. We may give you additional assignments if we think you have collaborated too much.

Uppdaterad  2008-01-10 11:30:23 av Lars-Henrik Eriksson.