htw saar Piktogramm QR-encoded URL
Back to Main Page Choose Module Version:
XML-Code

flag

Programming 2

Module name (EN):
Name of module in study programme. It should be precise and clear.
Programming 2
Degree programme:
Study Programme with validity of corresponding study regulations containing this module.
Applied Informatics, Bachelor, ASPO 01.10.2011
Module code: PIB210
SAP-Submodule-No.:
The exam administration creates a SAP-Submodule-No for every exam type in every module. The SAP-Submodule-No is equal for the same module in different study programs.
P221-0032, P221-0034
Hours per semester week / Teaching method:
The count of hours per week is a combination of lecture (V for German Vorlesung), exercise (U for Übung), practice (P) oder project (PA). For example a course of the form 2V+2U has 2 hours of lecture and 2 hours of exercise per week.
4V+2P (6 hours per week)
ECTS credits:
European Credit Transfer System. Points for successful completion of a course. Each ECTS point represents a workload of 30 hours.
7
Semester: 2
Mandatory course: yes
Language of instruction:
German
Assessment:


[updated 08.05.2008]
Applicability / Curricular relevance:
All study programs (with year of the version of study regulations) containing the course.

DFBI-421 (P610-0224) Computer Science and Web Engineering, Bachelor, ASPO 01.10.2018 , semester 4, mandatory course
PIB210 (P221-0032, P221-0034) Applied Informatics, Bachelor, ASPO 01.10.2011 , semester 2, mandatory course
Workload:
Workload of student for successfully completing the course. Each ECTS credit represents 30 working hours. These are the combined effort of face-to-face time, post-processing the subject of the lecture, exercises and preparation for the exam.

The total workload is distributed on the semester (01.04.-30.09. during the summer term, 01.10.-31.03. during the winter term).
90 class hours (= 67.5 clock hours) over a 15-week period.
The total student study time is 210 hours (equivalent to 7 ECTS credits).
There are therefore 142.5 hours available for class preparation and follow-up work and exam preparation.
Recommended prerequisites (modules):
PIB120 Programming 1


[updated 06.04.2018]
Recommended as prerequisite for:
PIB320 Software Engineering 1
PIB330 Databases
PIB413 Programming 3
PIB440 Project Work
PIB520 Distributed Systems 1
PIBWI14 Functional Programming
PIBWI18 Cloud Computing
PIBWI24 Internet Development with Java 1
PIBWI43 Game Design and Development
PIBWI49 Enterprise Java Beans
PIBWI50 Programming 4
PIBWI55 Compiler Construction
PIBWI63 GUI Programming with Qt
PIBWI72 Ruby on Rails


[updated 26.04.2021]
Module coordinator:
Prof. Dr. Markus Esch
Lecturer:
Prof. Dr. Reiner Güttler
Dipl.-Inf. Christopher Olbertz
Dipl.-Inf. Regina Piontek
Dipl.-Ing. Wolfgang Pauly (practical training)
Dipl.-Ing. Achim Pick (practical training)


[updated 25.09.2017]
Lab:
Technical Systems Lab (8207)
Learning outcomes:
After successfully completing this module, students will:
        understand the relationship between algorithms and data structures;
        understand complexity and be able to apply the concept to simple algorithms;
        understand what an abstract data type is;
        understand the independence of concept and implementation;
        have a good command of basic data structures (lists, stacks, queues, binary trees) and the associated operations. (Students will be able to write their own programs and use corresponding class libraries and will be appreciate and deploy objected-oriented programming concepts, such as inheritance and polymorphism);
        be acquainted with different implementations and their respective pros and cons;
        be able to apply and operate on more complex variants of these data structures in their programs;
        be acquainted with different types of balanced trees and rebalancing techniques;
        be acquainted with different types of B-trees (e.g. 2-3-4 trees);
        be able to use hash tables and different collision handling methods (with particular emphasis on OOP concepts);
        know how to apply and program known graph algorithms.


[updated 08.05.2008]
Module content:
1.        Introduction: Theoretical background
2.        Algorithm complexity (average-case and worst-case complexity)
3.        Relationship between algorithms and data structures
4.        Simple data structures and examples of typical applications; suitability for specific algorithms; variant implementations
                - Lists
                - Stacks
                - Queues (ring buffers)
                - Simple binary trees (search trees)
5.        Recursion
6.        Complex data structures
7.        Complex lists (backward chaining, multiple chaining)
8.        Simple balanced trees (height-balanced trees, AVL trees)
9.        Weight-balanced (or probability-balanced) trees
10.        Rebalancing methods (rotation), complexity
11.        Optimum search trees, optimization criteria (worst-case complexity, average-case complexity)
12.        Hash tables, collision handling
13.        Red-black trees
14.        2-3-4 trees (connection to B-trees, applications in external storage problems)
15.        Hashing
16.        Graph algorithms


[updated 08.05.2008]
Teaching methods/Media:
PowerPoint slides, applet for teaching data structures, blackboard

[updated 08.05.2008]
Recommended or required reading:
Th. CORMEN, Ch. LEISERSON, R. RIVEST:  Introduction to Algorithms, MIT Press, McGraw-Hill, 1998
M. WAITE, R. LAFORE:  Data Structures & Algorithms in JAVA, The Waite Group Press, 1998
Th. STANDISH:  Data Structures in JAVA, Addison Wesley, 1997


[updated 08.05.2008]
Module offered in:
SS 2017, SS 2016, SS 2015, SS 2014, SS 2013, ...
[Thu Nov 21 15:19:00 CET 2024, CKEY=pprog2, BKEY=pi, CID=PIB210, LANGUAGE=en, DATE=21.11.2024]