Basic ability to program in some imperative programming language (Java, Python, C/C++/C#, etc.), using conditions, loops, arrays, methods/procedures/functions, simple recursion and abstract data types (interfaces).
This is normally obtained by following the first semester undergraduate course Grundlæggende Programmering (GPP).

Knowledge of basic mathematical concepts like: sets, functions, graphs, and trees, arithmetic and geometric series. You are expected to know this from your high school education.
We will make up for any lacks in that respect on the way.

Information om studiestruktur Dette kursus indgår på andet semester på bacheloruddannelsen i software. Se studieforløbet beskrevet her: Bachelor softwareudvikling

Læringsmål:

After the course the student should be able to:

Discuss and clearly explain the mechanics of computations and data structures involving manipulation of references, nested loops and recursion, specified in natural language, in abstract pseudocode or in concrete programming language (Java).

Implement abstractly specified computations and data structures in an imperative programming language (Java).

Analyze time and space usage of algorithms/programs.

Assess scalability of a given single-threaded software application, using asymptotic analysis.

Choose among and make use of the most important algorithms and data structures in libraries, based on knowledge of their complexity.

Design algorithms for ad hoc problems by using and combining known algorithms and data structures.

Describe the most important hardware and programming language factors influencing the speed at which a program runs and take them into account in assessment of speed of algorithms. .

Fagligt indhold:

This course builds on your prior knowledge of programming. It will train you in designing efficient and correct programs, while giving you basic algorithmic tools indispensible for every software developer.

The course will be taught in a series of lectures with associated exercise classes.

Topics covered are among others complexity analysis, big-O, algorithmic problem solving techniques including divide-and-conquer, concrete algorithms and data structures for search trees, sorting, hashing, graphs, shortest paths.

The lectures will cover theory and the exercise will train practical issues of applying the theory.

Læringsaktiviteter:

12 lecture series + 12 exercise sessions

We will spend 6 hours a week on lectures and exercises for the first 12 weeks of the semester.

You are expected to work systematically. The course gives plenty of opportunities to gain hands-on experience with solving problems, with implementing algorithms and with using them.

The textbook and lectures are in English, but written work and the exam can be delivered in Danish.
--------------------
See the schedule here:
link to the time table The schedule will be available shortly before the beginning of the term.

Eksamensform og -beskrivelse:

X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

The course has 10 mandatory programming assignments. 9 of these need to be completed and approved before you are eligible to register for the examination. You can work in pairs.

Litteratur udover forskningsartikler:

Algorithms, 4th Edition
Robert Sedgewick and Kevin Wayne
ISBN-10: 032157351X
ISBN-13: 9780321573513