Intendierte Lernergebnisse
Building on the knowledge of the "Introduction to Structured and Object-Oriented Programming" (ISOP), the handling of data structures and algorithms of greater structural complexity is to be trained. Students gain knowledge of cost estimation, complexity measures, basics of advanced data structures, search and sorting methods, and basic graph and optimization algorithms. This will enable them to design or select algorithms and suitable data structures for given problems and to evaluate the performance behavior.The accompanying exercises (UE) deepen the lecture material (VO) and should help to perform the construction and analysis of algorithms. Some of the presented data structures or algorithms are to be implemented exemplarily in Java. In addition to this basic goal of the course, selected implementation examples serve to consolidate the programming knowledge acquired in ISOP.
Lehrmethodik
Lecture and discussion (live & via Moodle)
Inhalt/e
Introduction: Algorithm, (un)decidability, efficiency, complexityElementary data structuresElementary algorithmsDivide & conquerSorting and searchingHashingGraphs and advanced treesString matchingData communication: Compression, error detection & correction, encryptionOutlook: Classes P & NP
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).