Intendierte Lernergebnisse
Building on the knowledge gained in the Introduction to Structured and Object-Oriented Programming (ISOP) course, students will learn to deal with data structures and algorithms of greater structural complexity.Students will gain knowledge of cost estimation, complexity measures, fundamentals of advanced data structures, search and sorting methods, and basic graph and optimization algorithms. This will enable them to design or select algorithms and appropriate data structures for given problems and to evaluate their performance.Based on the material presented in the lecture (VO), the exercises (UE) will deepen the material presented in the lecture and will help to construct and analyze algorithms. Some of the presented data structures or algorithms will have to be implemented in Java and submitted to Moodle. In addition to this basic goal of the course, selected implementation examples serve to consolidate the programming knowledge acquired in ISOP.
Lehrmethodik
Discussion of the exercise tasks, presentation including discussion of solutions by the students.Exchange & peer walk-through of programming solutions.
Inhalt/e
Introduction: Algorithm and their performanceSearching in linear data structuresSortingSome algorithm design paradigms: Divide & Conquer, Dynamic Programming, Greedy AlgorithmsGraphs and treesHashingText processing: Pattern matchingCompression, error detection & correction, encryptionOutlook: Classes P & NP, Turing Machines
Erwartete Vorkenntnisse
Programming at ISOP level
Literatur
Any textbook on Algorithms & Data Structures, e.g.,T.H. Cormen, C.E. Leiserson, C. Stein, R.L. Rivest: Introduction to Algorithms, MIT Press, 3rd ed. (2009) or 4th ed. (2022).S. Dasgupta, C. Papadimitrou, U. Vazirani: Algorithms, McGraw-Hill (2008).R. Sedgewick, K. Wayne: Algorithms, Addison-Wesley, 4th ed. (2011).M.T. Goodrich, R. Tamassia, M.H. Goldwasser: Data Structures and Algorithms in Java, Wiley, 6th ed. (2014).