IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Andetårsprojekt: Softwareudvikling i større grupper med internationalt samarbejde 
Kursusnavn (engelsk):Second Year Project: Software Development in Large Teams with International Collaboration 
Semester:Forår 2016 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:12 
Forventet antal deltagere:60 
Maks. antal deltagere:85 
Formelle forudsætninger:Changes may occur until start of the semester.

* 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 can design and query relational databases and can use XML, corresponding to what is covered in the BSc course Introdiction to Database Design.
* 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 can specify and design user interfaces in a structured manner, corresponding to what is covered in the BSc course Systematic Design of User Interfaces (BSDB).
* 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

-----

Information about the course of study
This course is part of the fourth semester in the bachelor’s degree in Software Development. 
Læringsmål:After this learning activity the student should be able to 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.

(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 other fellow students work.
(6) Adapt the theoretical underpinnings of various problem areas and incorporate these into software 
Fagligt indhold:The project 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 restoration techniques used by graphics card that translate and approximate shapes to triangular meshes, implicit surfaces precisely describe the shapes that they model.

Combining shapes

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.

Reflection

We will cover techniques to create reflective materials and model how light bounces between them. This includes fully reflective materials as well as partially reflective ones.

Modifying shapes

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

Optimisation

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.

Textures

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. 
Læringsaktiviteter:

The project starts in mid March and continues until the end of the semester. The students are expected to work in groups of six (in rare cases seven) students. Initially the students are expected to quickly learn the concepts required to implement a ray tracer, divide these concepts up amongst themselves and as a group implement the entire project. Every student is expected to take responsibility for a part of the project. 

Obligatoriske aktivititer:Der er ingen obligatoriske aktiviteter. Vær venlig KUN at ændre denne tekst når der er obligatoriske aktiviteter./
There are no mandatory activities. Please, change this text ONLY when there are mandatory activities. 
Eksamensform og -beskrivelse:D22: Aflevering med mundtlig eksamen suppleret af aflevering., (7-scale, external exam)

Duration of oral examination: The group will first give a joint 8 minute presentation of the project. Subsequently, each group member will be examined 8 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.

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

Litteratur udover forskningsartikler:To be announced.