inf030 - Programming, Algorithms and Data Structures (Complete module description)

inf030 - Programming, Algorithms and Data Structures (Complete module description)

Original version English PDF Download
Module label Programming, Algorithms and Data Structures
Modulkürzel inf030
Credit points 9.0 KP
Workload 270 h
Institute directory Department of Computing Science
Verwendbarkeit des Moduls
  • Bachelor's Programme Business Informatics (Bachelor) >
  • Bachelor's Programme Computing Science (Bachelor) >
  • Bachelor's Programme Economics and Business Administration (Bachelor) >
  • Bachelor's Programme Mathematics (Bachelor) >
  • Bachelor's Programme Sustainability Economics (Bachelor) >
  • Dual-Subject Bachelor's Programme Computing Science (Bachelor) >
Zuständige Personen
  • Schönberg, Christian (module responsibility)
  • Lehrenden, Die im Modul (Prüfungsberechtigt)
Prerequisites
No participant requirement
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 object-oriented 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 object-oriented 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.

Professional competence
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 object-oriented 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, divide-and-conquer 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 well-founded 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 object-oriented programming
  • transfer practical experience in programme development to new tasks
Social competence
The students:
  • communicate the structure and mode of operation of self-developed programmes to others
  • present solutions to small tasks in front of groups
Self-competence
The students:
  • organise themselves in finding algorithmic solutions to small and medium-sized 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 indynamic 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,
  • Graph-based 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.
Literaturempfehlungen
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 every winter term
Module capacity unlimited
Teaching/Learning method 1V + 1Ü
Previous knowledge none
Form of instruction Comment SWS Frequency Workload of compulsory attendance
Lecture 4 WiSe 56
Exercises 2 WiSe 28
Präsenzzeit Modul insgesamt 84 h
Examination Prüfungszeiten Type of examination
Final exam of module
At the End of the Semester
Portfolio or written exam or oral exam