# TDDD95 Algorithmic Problem Solving

### Literature

The course seminars provides introductions to all algorithms and data structures covered in the course. You might however feel the need to consult additional resources when it's time to implement them on your own. For this purpose, we recommend the following resources.

• Competitive Programming 3 by Steven and Felix Halim has been used for many years in this and similar courses, and it's cheap to buy digitally. It's written by two very sucessful competitive programmers and takes a practical approach to the subject. Edition 4 was published during 2020 and has more content than edition 3, but CP3 should be enough.
• CP-Algorithms is an free online book that provides similar content as Competetive Programming 3.
• VisuAlgo is a free online resource that visualizes many common data structures and algorithms alongside pseudo code. This is great both for improving your understanding and troubleshooting where your implementation gets it wrong.
• Introduction to Representations and Estimation in Geometry by Klas Nordberg is useful for the computational geometry in lab 4. Chapter 2 recapitulates the basics of euclidean geometry as taught in introductory linear algebra courses. Chapter 3 introduces so-called homogeneous coordinates in 2D. They allow for simpler and more numerically stable solutions to common 2D geometric problems, though you can implement your solutions using whatever method you prefer. Chapter 4 deals with transformations in 2D and might also be useful, though to a lesser extent. If you find the rest of this book interesting, it is covered in the course TSBB06 - Multidimensional Signal Analysis.
• A Second Course in Algorithms is a series of recorded lectures from the Stanford course CS261. It includes some algorithms included in this course, in particular the Maximum Flow problem with both mathematical background and it's relation to linear programming.
• Algorithms Illuminated is another set of recorded lectures. In particular they recapitulate the basics of complexity analysis and explains Karatsuba's multiplication algorithm and the algorithms for closes pair of points.
If you haven't previously dabbled with competitive programming, we hope that you'll develop an interest for it during the course. If so, here are some great places to get started.
• IMPA is a programming contest exclusively for students at LiU. The contest consists of five three-week rounds per semester, where you can win up to 1,000 SEK in gift cards each round. IMPA uses problems from Kattis and Online Judge.
• Kattis has an open portal with thousands of problems, rankings and some job offers.
• Project Euler has a large collection of problems requiring a mix of programming and mathematical knowledge.
• Swedish Coding Cup is a championship held during spring 2021 consisting of five qualifying contests and one final. You may use some of your results from these contests towards passing the problem solving session part of the course.
• Codeforces is another problem solving portal where you can score points both by providing your own solution and by writing challenging test cases. The second part is great practice for troubleshooting your own implementations.

Page responsible: Fredrik Heintz
Last updated: 2024-01-22