252-0846-AAL  Computer Science II

SemesterFrühjahrssemester 2023
DozierendeC. Cotrini Jimenez, M. Fischer
Periodizitätjedes Semester wiederkehrende Veranstaltung
LehrspracheEnglisch
KommentarBelegung ist NUR erlaubt für MSc Studierende, die diese Lerneinheit als Auflagenfach verfügt haben.

Alle anderen Studierenden (u.a. auch Mobilitätsstudierende, Doktorierende) können diese Lerneinheit NICHT belegen.


KurzbeschreibungThis course provides the foundations of programming and working with data. Computer Science II particularly stresses code efficiency and provides the basis for understanding, design, and analysis of algorithms and data structures. In terms of working with data, foundations required for understanding experimental data and notation and basic concepts for machine learning are covered.
LernzielBased on the knowledge covered by the lecture Computer Science I, the primary educational objective of this course is the constructive knowledge of data structures and algorithms. After successfully attending the course, students have a good command of the mechanisms to construct a program in Python and to work with multidimensional data using Python libraries. Students particularly understand how an algorithmic problem can be solved with a sufficiently efficient computer program. Secondary educational objectives are formal thinking, the power of abstraction, and appropriate modeling capabilities.
InhaltIntroduction of Python: from Java to Python, advanced concepts and built-in data structures in Python; parsing data, operating on data using Numpy and visualization using Matplotlib; linear regression, classification and (k-means) clustering, mathematical tools for the analysis of algorithms (asymptotic function growth, recurrence equations, recurrence trees), classical algorithmic problems (searching, selection and sorting), design paradigms for the development of algorithms (divide-and-conquer and dynamic programming), data structures for different purposes (linked lists, trees, heaps, hash-tables). The relationship and tight coupling between algorithms and data structures is illustrated with graph algorithms (traversals, topological sort, closure, shortest paths).

In general, the concepts provided in the course are motivated and illustrated with practically relevant algorithms and applications.
Exercises are carried out in Code-Expert, an online IDE and exercise management system. Programming language used in this course is Python.
SkriptThe slides will be available for download on the course home page.
LiteraturT. Cormen, C. Leiserson, R. Rivest, C. Stein, Introduction to Algorithms , 3rd ed., MIT Press, 2009
Voraussetzungen / BesonderesPreliminaries: course 252-0845 Computer Science or equivalent knowledge in programming.