IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Andetårsprojekt: Softwareudvikling i større grupper 
Kursusnavn (engelsk):Second Year Project: Software Development in Large Teams 
Semester:Forår 2017 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Min. antal deltagere:
Forventet antal deltagere:
Maks. antal deltagere:95 
Formelle forudsætninger:Please note! Changes to this course description may occur until start of the spring semester 2017.

* You are enrolled on the BSc study program in software development.

* You can construct object-oriented software using C#, corresponding to what is covered in the BSc courses Analysis, Design and Software Architecture.
* You can apply basic functional programming using F#, corresponding to what is covered in the first month of the BSc Second Year Project: Functional Programming
* You know the basic principles of design of scalable and deadlock free distributed systems, corresponding to what is covered in the BSc course Mobile and Distributed Systems
* You are aware of basic techniques for planning and conducting a software development project in a small team of 5-7 students, corresponding to what is covered in the first month of the BSc course System Development and Project Organisation 
Læringsmål:After this learning activity the student should be able to:

(1) Plan, structure, and execute large-scale software development projects.
(2) Implement a ray tracer in F#
(3) Integrate code written by other programmers into a larger code base
(4) Analyse and optimise code
(5) Conduct a constructive feedback process on fellow student's work.
(6) Adapt the theoretical underpinnings of various problem areas and incorporate these into software
(7) Disseminate your project in written form adhering to the best practices of academic writing 
Fagligt indhold:The goal of this course is to build a ray tracer. Ray tracers are programs that given a scene populated with objects render that scene by simulating how light flows from the light sources, bounce off of the objects, and finally hit the lens of a camera. Modern ray tracers can produce close to photo-realistic images and they are heavily used, for instance, by companies like Pixar when producing animated movies. The ray tracers the students create for this course will support the following features.

Implicit surfaces
Implicit surfaces are equations in three-dimensional space that describe a geometric shape (spheres, tori, cubes, cylinders, et.c.). Unlike the rastoration techniques used by graphics cards that translate and approximate shapes to triangular meshes, implicit surfaces precisely describe the shapes that they model.

Constructive solid geometry

It is common practice to create new shapes out of existing ones using primitives such as the union, intersection, and the difference of shapes. Examples include hemispheres or cylinders with beveled edges, but the possibilities are many.


We will cover techniques to create perfect reflective materials (materials where light bounces off at the exact same angle that it came in) and model how light bounces between them. This includes fully reflective materials as well as partially reflective ones.

Affine transformations

The ray tracer must be able to scale, shear, displace, rotate, mirror and duplicate shapes.


A naive ray tracer that checks intersections of every ray and every object in a scene is extremely slow — as the resolution and the number of reflective materials increase, and the number of objects in a scene approaches the hundreds or even thousands, a scene can take several hours to render. With parallel processing and proper acceleration data structures rendering times can be cut to minutes or even seconds. Modern graphics cards have even begun to support on-chip ray tracers paving the way for real-time ray tracers. In this course, students will be expected to parallelise their ray tracers and use acceleration techniques to cut down on rendering time.

Triangle meshes

Even though combinations of implicit shapes can be used to create complex and precise shapes, it is often desirable to use triangle meshes to model 3d-representations of e.g. animals. The ray tracers in this course will support shapes stored in PLY-files to render complex shapes modelled by triangle meshes.


We will allow shapes to be textured. Examples of this includes planes with checker patterns or a map of the earth wrapped around a sphere.  

Students take active part in a software development team working on a large project from the ground up. The project is by design too large to be created by two or three people in the time allotted and the students are required to efficiently split the work up amongst themselves, taking individual responsibility for a substantial part of the project by themselves, using the techniques taught in System Development and Project Organisation. 

Obligatoriske aktivititer:Other than the mandatory hand-in for the exam, there are no mandatory activites 
Eksamensform og -beskrivelse:D22: Aflevering med mundtlig eksamen suppleret af aflevering., (7-scale, external exam)

D22: Hand-in with following oral exam supplemented by the hand-in., (7-scale, external exam)
Duration of oral examination: The group will first give a joint 5 minute presentation of the project. Subsequently, each group member will be examined 20 minutes.

The students must in groups of six (or in rare cases seven) implement a ray tracer in F#.
A 15-page report must be handed in as well as source code and instructions on how to build and run the program on a Windows 10 machine per the teacher’s instructions.

- There is only one final grade for the course covering project hand-in, report and the oral project exam.  

Litteratur udover forskningsartikler:None 
Følgende personer underviser på kurset:
NavnStillingUndervisertypeIndsats (%)
Jesper Bengtson Lektor(ITU) Kursusansvarlig 50
Patrick Bahr Adjunkt(ITU) Underviser 50