Course syllabus adopted 2023-02-04 by Head of Programme (or corresponding).
Overview
- Swedish nameAlgoritmer
- CodeTIN093
- Credits7.5 Credits
- OwnerMPALG
- Education cycleSecond-cycle
- Main field of studyComputer Science and Engineering, Software Engineering
- DepartmentCOMPUTER SCIENCE AND ENGINEERING
- GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail
Course round 1
- Teaching language English
- Application code 02124
- Maximum participants135 (at least 10% of the seats are reserved for exchange students)
- Block schedule
- Open for exchange studentsYes
- Only students with the course round in the programme overview.
Credit distribution
Module | Sp1 | Sp2 | Sp3 | Sp4 | Summer | Not Sp | Examination dates |
---|---|---|---|---|---|---|---|
0114 Examination 7.5 c Grading: TH | 7.5 c |
|
In programmes
- MPALG - COMPUTER SCIENCE - ALGORITHMS, LANGUAGES AND LOGIC, MSC PROGR, Year 1 (compulsory)
- MPCAS - COMPLEX ADAPTIVE SYSTEMS, MSC PROGR, Year 1 (compulsory elective)
- MPCAS - COMPLEX ADAPTIVE SYSTEMS, MSC PROGR, Year 2 (elective)
- MPCSN - COMPUTER SYSTEMS AND NETWORKS, MSC PROGR, Year 2 (elective)
- MPDSC - DATA SCIENCE AND AI, MSC PROGR, Year 1 (compulsory elective)
- MPDSC - DATA SCIENCE AND AI, MSC PROGR, Year 2 (elective)
- MPEES - EMBEDDED ELECTRONIC SYSTEM DESIGN, MSC PROGR, Year 2 (elective)
Examiner
- Birgit Grohe
- Instructor, Data Science and AI, Computer Science and Engineering
Course round 2
- Teaching language English
- Application code 02126
- Maximum participants100 (at least 10% of the seats are reserved for exchange students)
- Block schedule
- Open for exchange studentsYes
Credit distribution
Module | Sp1 | Sp2 | Sp3 | Sp4 | Summer | Not Sp | Examination dates |
---|---|---|---|---|---|---|---|
0114 Examination 7.5 c Grading: TH | 7.5 c |
|
In programmes
- MPCSN - COMPUTER SYSTEMS AND NETWORKS, MSC PROGR, Year 1 (elective)
- MPDSC - DATA SCIENCE AND AI, MSC PROGR, Year 1 (compulsory elective)
- MPENM - ENGINEERING MATHEMATICS AND COMPUTATIONAL SCIENCE, MSC PROGR, Year 1 (compulsory elective)
- MPHPC - HIGH-PERFORMANCE COMPUTER SYSTEMS, MSC PROGR, Year 1 (elective)
- MPSOF - SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 1 (compulsory elective)
- MPSOF - SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 2 (elective)
- MPSYS - SYSTEMS, CONTROL AND MECHATRONICS, MSC PROGR, Year 1 (elective)
- TKDAT - COMPUTER SCIENCE AND ENGINEERING, Year 3 (elective)
- TKITE - SOFTWARE ENGINEERING, Year 3 (elective)
Examiner
- Peter Damaschke
- Full Professor, Data Science and AI, Computer Science and Engineering
Eligibility
General entry requirements for Master's level (second cycle)Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.
Specific entry requirements
English 6 (or by other approved means with the equivalent proficiency level)Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.
Course specific prerequisites
Particularly relevant are an introductory course in data structures and knowledge in discrete mathematics.Aim
The algorithms course revolves around three central questions that appears naturally when one wants to use a computer to compute a problem:- Is the problem computationally solvable at all?
- How can we do it?
- How fast can the solution be?
The course shall provide basic knowledge and methods to answer these types of question as precisely as possible, and improve the ability to write fast and well-founded programs.
Other important aspects are: to improve the intuitive sense of time complexity of problems and algorithms in general, to show how the choice of data structures can influence speed of a program, and how data structures must be adapted to algorithms.
The most important goal of the course is to give general principles of creating good algorithms for new problems for which you cannot find any published algorithm.
Learning outcomes (after completion of the course the student should be able to)
- Knowledge and understanding
- describe your algorithms and their qualities: explain algorithms in writing, so that others can understand how they work, why they are correct and fast, and where they are useful.
- recognize that non-trivial computational problems, which need to be solved by algorithms, appear in various real-world computer applications and to formalize them.
- intractability: recognize intractable problems and other classes of problems like P, NP, NPC.
- prove the correctness of algorithms.
- Skills and abilities
- design: apply the main design techniques for efficient algorithms (for instance greedy, dynamic programming, divide-and-conquer) to problems which are similar to the textbook examples but new.
- perform the whole development cycle of algorithms: problem analysis, choosing, modifying and combining suitable techniques and data structures, analysis of correctness and complexity, filling in implementation details, looking for possible improvements, etc.
- perform simple reductions between problems, explain NP completeness, recognize various computationally hard problems which tend to appear over and over again in different applications.
- Judgement and approach
- critically assess algorithmic ideas and demonstrate the ability to resist the temptation to create obvious and seemingly plausible algorithms (which often turn out to be incorrect).
- analyse: explain why the time efficiency of algorithms is crucial, express the time complexity in a rigorous and scientifically sound manner, analyze the time complexity of algorithms (sum up operations in nested loops, solve standard recurrences, etc.) i.e. perform an objective evaluation of the performance and be able to compare it to other algorithms performance.
Content
The course topics are as follows:- Introduction. What is an efficient algorithm?
- Tools for analysis of algorithms. O-notation. Analyzing loops and recursive calls. Solving recurrences.
- Data structures and algorithms. Review of basic data structures.
- Combining data structures. Merge-and-find.
- Graph algorithms.
- Greedy algorithms.
- Divide-and-conquer.
- Dynamic programming.
- Basic complexity theory. Complexity classes P, NP, and NPC, reductions. Examples of NP-complete problems. Coping with hard problems.
Organisation
The course is given as lectures, combined with tutorial groups for problem solving related to the course and a number of assignments intended to develop the skill of analyzing and designing algorithms.Literature
Information about literature is given on the course homepage before course start.Examination including compulsory elements
The course is examined by an individual written hall-exam.The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.