Official course description:

Full info last published 22/03-21
Course info
Language:
English
ECTS points:
7.5
Course code:
KSALDAS1KU
Participants max:
130
Offered to guest students:
yes
Offered to exchange students:
yes
Offered as a single subject:
yes
Price for EU/EEA citizens (Single Subject):
10625 DKK
Programme
Level:
MSc. Master
Programme:
MSc in Software Design
Staff
Course manager
Associate Professor
Teacher
Full Professor
Course semester
Semester
Forår 2021
Start
1 February 2021
End
14 May 2021
Exam
Exam type
ordinær
Internal/External
ekstern censur
Grade Scale
7-trinsskala
Exam Language
GB
Abstract
This course provides the basic algorithmic tools indispensable for every software developer.
Description

Computers help us compute things: To sort alphabetically the entries in a telephone directory; to compute the next frame of a video game; to find the seats available on an airplane. However, there are faster and slower ways to compute things. To be an effective programmer, you must know not only how to make a computer compute things, but how to efficiently compute things.

This course provides the basic algorithmic tools indispensible for every software developer.

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.
Formal prerequisites

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 Introduction to Data Science and Programming (BSc DS) or Introductory Programming (BSc SWU or MSc SD) 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 about the course of study. This course is mandatory for students who are enrolled on BSc in Software Development, BSc in Data Science and MSc in Software Design and part of the second semester. Moreover the student must always meet the admission requirements of the IT University.

Intended learning outcomes

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/Python)
  • Implement abstractly specified computations and data structures in an imperative programming language (Java/Python).
  • 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.
Learning activities

We will spend 6 hours a week on lectures and exercises. 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.

Mandatory activities

The course has 14 mandatory assignments, all of which must be completed and approved before the student can take the examination. 

If the submission for a mandatory assignment is late or considered to be insufficient, it is not approved. However, make-up opportunities are available in these cases.

Detailed descriptions of the mandatory activities are available on the course website

The student will receive the grade NA (not approved) at the ordinary exam, if the mandatory activities are not approved and the student will use an exam attempt.

Course literature

“Algorithms, 4th Edition” by Sedgewick and Wayne

Student Activity Budget
Estimated distribution of learning activities for the typical student
  • Preparation for lectures and exercises: 10%
  • Lectures: 20%
  • Exercises: 20%
  • Assignments: 30%
  • Exam with preparation: 15%
  • Other: 5%
Ordinary exam
Exam type:
C: Submission of written work, External (7-point scale)
Exam variation:
C22: Submission of written work – Take home
Exam submission description:
Written take home exam with random fraud control after the exam.

Duration: 3 hours

Aids allowed:
All written material such as books and notes.
You can also use your computer to access all information on it (including digital copies of course material, old answers to exercises, etc.), and freely interact with applications (including programming environments, editors, compilers, the terminal).

Random fraud control with Zoom will be conducted right after the submission.
Student Affairs and Programmes will randomly select 10 % of students who will have to show up in Zoom to check authorship of submitted solutions.
The selection of students for fraud control will be published in LearnIT right after the exam together with a link to the Zoom meeting.

Please disregard the 1 day duration below
Take home duration:
1 day

Time and date