Kursusnavn (dansk):  Foundations of Computing  Algorithms and Data Structures 
Kursusnavn (engelsk):  Foundations of Computing  Algorithms and Data Structures 
Semester:  Forår 2019 
Udbydes under:  cand.it., softwareudvikling og teknologi (sdt) 
Omfang i ECTS:  7,50 
Kursussprog:  Engelsk 
Kursushjemmeside:  https://learnit.itu.dk 
Min. antal deltagere:  1 
Forventet antal deltagere:  0 
Maks. antal deltagere:  5 
Formelle forudsætninger:  The course Foundations of Computing  Discrete Mathematics (SGDM) or similar.
The course Introductory Programming (GP) or similar.

Information about the course of study
This course is mandatory for students who are enrolled on on the Master of Science in IT, study programme Software Development, Design track. 
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/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 singlethreaded 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.
Reflect on and select among various epistemologies used in the analysis 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, bigO, algorithmic problem solving techniques including divideandconquer, concrete algorithms and data structures for search trees, sorting, hashing, graphs, shortest paths, the role of the scientific method in the analysis of algorithms.
The lectures will cover theory and the exercise will train practical issues of applying the theory. 
Læringsaktiviteter:  12 forelæsninger og 12 øvelsesgange 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 handson experience with solving problems, with implementing algorithms and with using them. 
Obligatoriske aktivititer:  The course has 10 mandatory programming assignments. 7 of these need to be completed and approved before you can take the examination. You can work in groups of size 3.
Be aware: 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. 
Eksamensform og beskrivelse:  A33: Skriftlig eksamen (stedprøve) på papir med restriktioner, (7scale, external exam) Written exam, 4 hours, with access to all paperbased aids.
 For instance, you may bring the course book and your own notes.
 The test is filled in in handwriting, for instance using pen.
 You do not have access to any electronic devices, in particularly you may not use a mobile phone, a computer, a pocket calculator, or an ebook reader.
The reexam has the same form as the ordinary exam.

 