185.A92 Introduction to Programming 2
This course is in all assigned curricula part of the STEOP.
This course is in at least 1 assigned curriculum part of the STEOP.

2019S, VU, 3.0h, 4.0EC


  • Semester hours: 3.0
  • Credits: 4.0
  • Type: VU Lecture and Exercise

Aim of course

Technical and Methodological Knowledge:

After successfully participating in this course students can describe

  • systematic approaches to programming (especially for creating and using data abstractions, traversing and modifying recursive data structures),
  • selected algorithms, data structures and data abstractions,
  • important sources of errors as well as quality assurance techniques (verifying input data, exception handling, testing, documentation, code-review).

Cognitive and Practical Skills:

After successfully participating in this course students can

  • translate informal program descriptions given in natural language (i.e. programming tasks) into executable Java programs,
  • implement and use specified data abstractions, algorithms and data structures,
  • apply language concepts and techniques for data abstraction, traversal and modification of recursive data structures, input and output through files as well as quality assurance.

Social and Personal Skills:

After successfully participating in this course students can

  • act autonomously as well as team players (teams of 2 persons) when solving programming assignments,
  • communicate properties of programs.

Subject of course

  • concept of data abstraction and language features for data abstraction
  • implementation and essential properties of recursive data structures (as lists and trees)
  • implementation and essential properties of algorithms (for insertion, deletion, search, sorting, comparison, conversion) on several data structures
  • abstraction over data structures with comparable access functions
  • exception handling
  • input and output over files, validation of input
  • simple testing methods and code review
  • approaches to program optimization
  • programming styles and program documentation

Additional information

Preliminary Talk

The preliminary talk (March 4, 2019, 10-11 a.m., Audi.Max.) gives much information on the organisation of this course. Please participate.

Learning Activities

  • Talks each Monday and Tuesday (10 a.m. c.t. in the Audi.Max., in German) give an overview of all topics in the course and provide examples. It is recommended to participate in all talks. The first talk (March 4) gives information on the organisation of this course.
  • A script (in German) is available for download - see the Documents section. The script serves as an accompanying textbook and gives some information students shall know before taking this course. Hence, ideal students familiarize with the script before the course starts.
  • Programming tasks on 7 exercise sheets have to be solved within about 1 week each. Solutions in the form of IntelliJ IDEA projects have to be uploaded before the deadlines. Some of the tasks are obligatory, they must be solved.
  • The team task is a slightly larger programming task to be solved by a team of two students within about two months. The solution has to be uploaded in the same way as for exercise sheets. Feedback to a preliminary solution has to be requested from a tutor in good time before the deadline, and given suggestions shall be considered in the final solution.
  • Guided exercises take place in groups of approximately 25 students who meet 8 times for 45 minutes, one meeting for discussing each exercise sheet and the team task. In the meetings, students have to present their solutions of programming tasks when requested to do so by the exercise instructor. Furthermore, small programming tasks (called ad-hoc tasks) have to be solved during the meetings either allone or in teams of two students (as requested by the exercise instructor) under pressure of time. Some ad-hoc tasks may depend on solutions of obligatory programming tasks on exercise sheets; if the obligatory task has not been solved, such ad-hoc tasks will be almost insolvable.
  • The "programming cafe" is a weekly informal meeting in the InfLab where students can discuss their experiences and solve programming tasks together. At least one instructor or tutor will attend the meeting to provide assistance.
  • There are two regular tests on computer terminals in the labs, 60 minutes each, where you have to answer multiple-choice questions and solve programming tasks. The first test will happen in the middle of the semester, the second at the end of the semester.
  • For each regular test there will be a corresponding supplementary test. Results of these tests replace results of corresponding regular tests. Participation in a supplementary test is only possible if at least 50% of the accomplishable achievements in the guided exercises were accomplished and the corresponding regular test was missed or yielded a negative result. The supplementary test substituting the 1st regular test will happen shortly before the begin of the summer break, that substituting the 2nd regular test shortly after the end of the summer break.

Who shall participate

  • Shortly after successfully completing "Einführung in die Programmierung 1" students shall participate in "Einführung in die Programmierung 2".
  • It is recommended to participate in "Einführung in die Programmierung 2" together with "Algorithmen und Datenstrukturen".
  • Students, who got a negative mark in "Einführung in die Programmierung 1" shall not participate in "Einführung in die Programmierung 2". The only exception are students, who almost completed successfully, know the reasons for their failure and meanwhile eliminated these reasons.
  • Students in the first semester shall participate only if they already have much programming experience in Java.


To participate, students have to register for a guided exercise group within the short registation period using TISS in order to determine room and dates.


For questions concerning this course please use the following mail address: ep2@complang.tuwien.ac.at

Please use your TU mail address for sending mails.


(4 ECTS correspond to 100 hours of work)

  • 21 h for participation in talks
  • 06 h for participation in 8 guided exercise meetings, 45 minutes each
  • 03 h for participation in 2 regular tests,  60 minutes each (and proportionately in supplementary tests)
  • 28 h for solving 7 exercise sheets (4 h for each sheet)
  • 16 h for solving the team task
  • 26 h for private study, programming cafe, test preparation



Course dates

Mon10:00 - 11:0004.03.2019 - 24.06.2019GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue10:00 - 11:0005.03.2019 - 25.06.2019GM 1 Audi. Max.- ARCH-INF Vorlesung
Thu15:00 - 17:0014.03.2019 - 06.06.2019InfLab Pong -
Fri10:00 - 12:0015.03.2019 - 21.06.2019InfLab Pong Programmier-Café
Introduction to Programming 2 - Single appointments
Mon04.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue05.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Mon11.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue12.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Thu14.03.201915:00 - 17:00InfLab Pong -
Fri15.03.201910:00 - 12:00InfLab Pong Programmier-Café
Mon18.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue19.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Fri22.03.201910:00 - 12:00InfLab Pong Programmier-Café
Mon25.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue26.03.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Fri29.03.201910:00 - 12:00InfLab Pong Programmier-Café
Mon01.04.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue02.04.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Fri05.04.201910:00 - 12:00InfLab Pong Programmier-Café
Mon08.04.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue09.04.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Fri12.04.201910:00 - 12:00InfLab Pong Programmier-Café
Mon29.04.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung
Tue30.04.201910:00 - 11:00GM 1 Audi. Max.- ARCH-INF Vorlesung

Examination modalities

  • A positive marking of this course requires that at least 50% of the accomplishable achievements were accomplished for each of the following three parts:
    • guided exercises
    • 1st test (1st regular test or alternatively the corresponding supplementary test)
    • 2nd test (2nd regular test or alternatively the corresponding supplemantary test)
  • If the marking of the course is positive, the mark results from the average of the percentages of achievements of the three parts:
    1. :  87.5% to 100% (sehr gut)
    2. :  75% to 87,5% (gut)
    3. :  62.5% to 75% (befriedigend)
    4. :  50% to 62.5% (genügend)
  • The percentage of achievements for the guided exercises is the average of the percentages of achievements in the following three areas:
    • sum of the ratings of exercise sheets and their presentations in guided exercise meetings, each calculated by (participation factor * points for solved tasks as specified on the task sheet) where the exercise instructor determines the participation facor (1 usually; 0 on absence from the meeting, refusal of participation or obvious misunderstanding of a self-uploaded solution of a task; a value between 0 and 1 if there are deficits in presenting a self-uploaded solution of a task),
    • sum of the ratings of all ad-hoc tasks by the exercise instructor,
    • rating of the team task by the exercise instructor, where the team task is rated with at most 50% if no feedback for a preliminary solution was collected from a tutor before uploading the final solution.

Group dates

di11aTue11:00 - 12:0019.03.2019InfLab Frogger -
di11aTue11:00 - 12:0002.04.2019 - 18.06.2019InfLab Frogger -
di11bTue11:00 - 12:0019.03.2019InfLab Q*bert -
di11bTue11:00 - 12:0002.04.2019 - 18.06.2019InfLab Q*bert -
di12aTue12:00 - 13:0019.03.2019InfLab Frogger -
di12aTue12:00 - 13:0002.04.2019 - 18.06.2019InfLab Frogger -
di12bTue12:00 - 13:0019.03.2019InfLab Q*bert -
di12bTue12:00 - 13:0002.04.2019 - 18.06.2019InfLab Q*bert -
di17aTue17:00 - 18:0019.03.2019InfLab Frogger -
di17aTue17:00 - 18:0002.04.2019 - 18.06.2019InfLab Frogger -
di17bTue17:00 - 18:0019.03.2019InfLab Q*bert -
di17bTue17:00 - 18:0002.04.2019 - 18.06.2019InfLab Q*bert -
di18aTue18:00 - 19:0019.03.2019 - 18.06.2019InfLab Frogger -
di18bTue18:00 - 19:0019.03.2019 - 18.06.2019InfLab Q*bert -
mi11aWed11:00 - 12:0020.03.2019InfLab Frogger -
mi11aWed11:00 - 12:0003.04.2019 - 12.06.2019InfLab Frogger -
mi11bWed11:00 - 12:0020.03.2019InfLab Q*bert -
mi11bWed11:00 - 12:0003.04.2019 - 12.06.2019InfLab Q*bert -
mi12aWed12:00 - 13:0020.03.2019InfLab Frogger -
mi12aWed12:00 - 13:0003.04.2019 - 12.06.2019InfLab Frogger -
mi12bWed12:00 - 13:0020.03.2019InfLab Q*bert -
mi12bWed12:00 - 13:0003.04.2019 - 12.06.2019InfLab Q*bert -
mi17aWed17:00 - 18:0020.03.2019InfLab Frogger -
mi17aWed17:00 - 18:0003.04.2019 - 12.06.2019InfLab Frogger -
mi17bWed17:00 - 18:0020.03.2019 - 12.06.2019InfLab Q*bert -
mi18aWed18:00 - 19:0020.03.2019 - 12.06.2019InfLab Frogger -
mi18bWed18:00 - 19:0020.03.2019 - 12.06.2019InfLab Q*bert -
mo11aMon11:00 - 12:0018.03.2019InfLab Frogger -
mo11aMon11:00 - 12:0001.04.2019 - 17.06.2019InfLab Frogger -
mo11bMon11:00 - 12:0018.03.2019InfLab Q*bert -
mo11bMon11:00 - 12:0001.04.2019 - 17.06.2019InfLab Q*bert -
mo12aMon12:00 - 13:0018.03.2019InfLab Frogger -
mo12aMon12:00 - 13:0001.04.2019 - 17.06.2019InfLab Frogger -
mo12bMon12:00 - 13:0018.03.2019InfLab Q*bert -
mo12bMon12:00 - 13:0001.04.2019 - 17.06.2019InfLab Q*bert -
mo15aMon15:00 - 16:0018.03.2019InfLab Frogger -
mo15aMon15:00 - 16:0001.04.2019 - 17.06.2019InfLab Frogger -
mo15bMon15:00 - 16:0018.03.2019InfLab Q*bert -
mo15bMon15:00 - 16:0001.04.2019 - 17.06.2019InfLab Q*bert -
mo16aMon16:00 - 17:0018.03.2019InfLab Frogger -
mo16aMon16:00 - 17:0001.04.2019 - 17.06.2019InfLab Frogger -
mo16bMon16:00 - 17:0018.03.2019InfLab Q*bert -
mo16bMon16:00 - 17:0001.04.2019 - 17.06.2019InfLab Q*bert -
mo17aMon17:00 - 18:0018.03.2019InfLab Frogger -
mo17aMon17:00 - 18:0001.04.2019 - 17.06.2019InfLab Frogger -
mo17bMon17:00 - 18:0018.03.2019InfLab Q*bert -
mo17bMon17:00 - 18:0001.04.2019 - 17.06.2019InfLab Q*bert -
mo18aMon18:00 - 19:0018.03.2019 - 17.06.2019InfLab Frogger -
mo18bMon18:00 - 19:0018.03.2019 - 17.06.2019InfLab Q*bert -

Course registration

Begin End Deregistration end
04.03.2019 12:00 06.03.2019 13:00 06.03.2019 13:00

Registration modalities:

Register for a group of this course. Group registration is regarded as registration for the course.

Application is currently locked manually.

Group Registration

GroupRegistration FromTo
di11a04.03.2019 12:0006.03.2019 13:00
di11b04.03.2019 12:0006.03.2019 13:00
di12a04.03.2019 12:0006.03.2019 13:00
di12b04.03.2019 12:0006.03.2019 13:00
di17a04.03.2019 12:0006.03.2019 13:00
di17b04.03.2019 12:0006.03.2019 13:00
di18a04.03.2019 12:00
di18b04.03.2019 12:00
mi11a04.03.2019 12:0006.03.2019 13:00
mi11b04.03.2019 12:0006.03.2019 13:00
mi12a04.03.2019 12:0006.03.2019 13:00
mi12b04.03.2019 12:0006.03.2019 13:00
mi17a04.03.2019 12:0006.03.2019 13:00
mi17b04.03.2019 12:0006.03.2019 13:00
mi18a04.03.2019 12:0006.03.2019 13:00
mi18b04.03.2019 12:00
mo11a04.03.2019 12:0006.03.2019 13:00
mo11b04.03.2019 12:0006.03.2019 13:00
mo12a04.03.2019 12:0006.03.2019 13:00
mo12b04.03.2019 12:0006.03.2019 13:00
mo15a04.03.2019 12:0006.03.2019 13:00
mo15b04.03.2019 12:0006.03.2019 13:00
mo16a04.03.2019 12:0006.03.2019 13:00
mo16b04.03.2019 12:0006.03.2019 13:00
mo17a04.03.2019 12:0006.03.2019 13:00
mo17b04.03.2019 12:0006.03.2019 13:00
mo18a04.03.2019 12:0006.03.2019 13:00
mo18b04.03.2019 12:0006.03.2019 13:00



A script is available for download.

Previous knowledge

Technical and Methodological Knowledge:

Before participating in the course students must be able to describe the following:

  • basic precedural concepts of Java,
  • basic algorithms for searching in and sorting of arrays,
  • sources of errors in simple procedural programs.

Cognitive and Practical Skills: 

Before participating in the course students must be able to develop, understand, debug, modify and document simple programs in Java.

 Social and Personal Skills:

Before participating in the course students must be able to

  • act autonomously when solving programming assignments,
  • communicate basic properties of simple programs.

Preceding courses

Accompanying courses