Module label  Programming, Algorithms and Data Structures 
Module code  inf030 
Credit points  9.0 KP 
Workload  270 h 
Institute directory  Department of Computing Science 
Applicability of the module 

Responsible persons 
Lehrenden, Die im Modul (Authorized examiners)
Schönberg, Christian (Module responsibility)

Prerequisites  
Skills to be acquired in this module  Programming is one of the basic activities of computer scientists and a prerequisite for many other courses in computer science studies. The aim of the module "Programming, Data Structures and Algorithms" is to learn the basic concepts of imperative, procedural and objectoriented programming using the Java programming language and to present known, efficient algorithms and data structures for various, frequently occurring problems. After completing the module, the students should be able to independently develop imperative and simple objectoriented programmes based on Java for solving smaller problems and assess the efficiency of their programmes. They should also be able to apply important algorithms and select them based on their complexity.The students:  describe basic concepts of imperative programming with Java  recognise imperative programming terminology and use the appropriate terms accurately in discussions  recognise basic terminology of objectoriented programming  describe what programs presented to them do  independently develop programs to solve small problems  systematically examine their own and other people's programmes for errors  use modern programme development environments to develop and test programmes  create algorithms with general design concepts (e.g. Greedy method, divideandconquer method)  name algorithms and data structures for solving common problems and evaluate their applicability  name problems of efficiency of algorithmic solutions of concrete problems and evaluate them  make a wellfounded choice of an algorithm and a data structure for solving a concrete problem  apply the learned algorithms and data structures sensibly to given and concrete problems**Methodogical competence** The students:  solve given problems from the point of view of imperative or objectoriented programming  transfer practical experience in programme development to new tasks**Social competence** The students:  communicate the structure and mode of operation of selfdeveloped programmes to others  present solutions to small tasks in front of groups**Selfcompetence** The students:  organise themselves in finding algorithmic solutions to small and mediumsized problems in computer science  incorporate the concepts of general programme design in their actions 
Module contents  In the first part, general basic concepts of programming are introduced:  Algorithm, programming languages, computer  development tools, development phases  compilers  grammars  logic The second part deals with basic programming concepts:  data types  variables  Expressions, statements  control structures  Methods, parameters  recursion  Reference data types, arrays  Classes, objects  Documentation  Testing
The third part contains an introduction to data structures and algorithms as well as a discussion of their efficiency, i.e. the computational effort or memory requirements depending on the amount of data to be processed. The module introduces known, efficient algorithms and data structures for various, frequently occurring problems. These include in particular:  Methods for searching for keys, as well as insertion and deletion in dynamic data sets, e.g. lists, trees, AVL trees or hash methods, Methods for searching for text patterns,  Methods for sorting data by key values, e.g. QuickSort and HeapSort,  Graphbased applications, e.g. for finding shortest paths in graphs. The lecture part is supplemented by a comprehensive exercise part, in which in particular the taught programming contents are implemented in practical examples. 
Reader's advisory  Essential: Lecture Notes (made available either in printed form or via Stud.IP during the course of the lecture)
Good secondary literature: Dietmar Ratz, Jens Scheffler, Detlev Seese, Jan Wiesenberger: Grundkurs Programmieren in Java, Carl Hanser Verlag. Joachim Goll, Cornelia Heinisch: Java als erste Programmiersprache, Springer Vieweg Verlag Ottmann, Widmayer: Algorithmen und Datenstrukturen. Spektrum Verlag, 5. Auflage, 2012 Segdewick, Wayne: Algorithms. Addison Wesley, 4th ed., 2011 Siege: Einführung in die Informatik. Shaker Verlag, 2013 
Links 

Language of instruction  German 
Duration (semesters)  1 Semester 
Module frequency  WiSe 
Module capacity  unlimited 
Modullevel / module level  BC (Basiscurriculum / Base curriculum) 
Modulart / typ of module  Pflicht / Mandatory 
Lehr/Lernform / Teaching/Learning method  V+Ü 
Vorkenntnisse / Previous knowledge 
Course type  Comment  SWS  Frequency  Workload of compulsory attendance 

Lecture  4  WiSe  56  
Exercises  2  WiSe  28  
Total time of attendance for the module  84 h 
Examination  Time of examination  Type of examination 

Final exam of module  At the End of the Semester 
Portfolio / Klausur /mündliche Prüfung 