# Programmieren 2 (Sommersemester 2025)

## Aufbau der Veranstaltung

Die folgende Tabelle zeigt Ihnen die Themen der Woche und welche Kapitel Sie bis wann vorbereitet haben müssen. Da die Veranstaltung als **Inverted Classroom** durchgeführt wird, ist es **Ihre Aufgabe** das entsprechende **Kapitel** im Skript **bis zum genannten Termin** durchgearbeitet zu haben.

| #  | 📢 Motto                                   | 🎓 Themen                                             | 📚 Kapitel         | 📆 bis   |
|----|--------------------------------------------|-------------------------------------------------------|--------------------|----------|
| 1  | Auffrischen, einchecken und loslegen       | Auffrischung                                          | [1][1]             | ¹        |
| 2  | Wie Julius Caesar programmieren            | JUnit, JavaDoc, Programmierstil, Pakete, Module, JARs | [2][2], [3][3]     | **30.03** |
| 3  | Erben und vererben                         | Vererbung, Überladen, Verdecken, Konstruktoren        | [4][4]             | **06.04** |
| 4  | Verhaltenstherapie für Klassen             | Überschreiben, Polymorphie, static, final             | [4][4]             | **13.04** |
| 5  | Mit Interfaces geht es noch abstrakter     | Interfaces, abstrakte Klassen, SOLID, STUPID          | [5][5]             | **20.04** |
| 6  | Wenn es mal schief geht, Ausnahmen         | Exceptions, try, catch                                | [9][9]             | **27.04** | 
| 7  | Geschenkverpackungen und andere Feinheiten | Object, Wrapper,              			  | [7][7]    	       | **04.05** |
| 8  | Daten brauchen Struktur 		          | Abstrakte Datentypen, Collections                     | [13][13], [14][14] | **11.05** |
| 9 | Rein oder raus, die Daten müssen fließen   | Input/Output mit Streams und Reader/Writer            | [10][10]           | **18.05** |
| 10 | One size fits all, mit generischen Typen   | Generische Typen, Wildcards                           | [11][11]           | **25.05** |
| 11 | Matroschka-Klassen                         | Geschachtelte Klassen, Lambdas                        | [12][12]           | **01.06** |
| 12 | Wer sortiert, muss trotzdem suchen         | Suchen, Sortieren, Regex                              | [6][6]             | **08.06** |
| 13  | -------                                    | -------                                               |                    |          |
| 14 | Objekte sammeln                            | Streams, Optional, Enums, Records      	          | [15][15], [8][8]   | **22.06** |
| 15 | Parallel läuft es schneller                | Threads, Probleme der Thread-Programmierung           | [16][16]           | **29.06** |

¹ = Wird als aus PR1 bekannt vorausgesetzt

[1]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_01_auffrischung-script.pdf
[2]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_02_intro-script.pdf?forcedownload=1
[3]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_03_strukturierung-script.pdf?forcedownload=1
[4]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_04_objektorientierung-script.pdf?forcedownload=1
[5]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_05_interfaces_design-script.pdf?forcedownload=1
[6]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_06_algorithmen-script.pdf?forcedownload=1
[7]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_07_object_und_wrapper-script.pdf?forcedownload=1
[8]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_08_enum_records-script.pdf?forcedownload=1
[9]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_09_ausnahmebehandlung-script.pdf?forcedownload=1
[10]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_10_input_output-script.pdf?forcedownload=1
[11]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_11_generische_typen-script.pdf?forcedownload=1
[12]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_12_geschachtelte_klassen_lambdas-script.pdf?forcedownload=1
[13]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_13_datenstrukturen-script.pdf?forcedownload=1
[14]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_14_collections-script.pdf?forcedownload=1
[15]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_14_collections-slides.pdf?forcedownload=1
[16]: https://moodle.hs-mannheim.de/pluginfile.php/478124/mod_folder/content/0/pr2_16_threads-script.pdf?forcedownload=1


## Freiwillige Übungen

Die freiwilligen Übungen zur Vertiefung der Vorlesungsinhalte finden Sie in einem getrennten Repository: [Freiwillige Übungen](https://gitty.informatik.hs-mannheim.de/pr2-lecture-STG/uebungen) 

## Assignments

Hier finden Sie die Assignments (Aufgaben) für die Vorlesung Programmieren 2 (PR2). Die Assignments sind in der nachfolgenden Tabelle zusammen mit dem Fälligkeitsdatum aufgelistet. Diese Fälligkeit dient Ihnen zur zeitlichen Orientierung und dem eigenen Überprüfen Ihres Lernfortschritts. Am Tag der Fälligkeit laden Sie bitte die .md Datei Ihres persönlichen Journals in Git hoch (pro Gruppenmitglied eine Datei). 


Hinweise zur nötigen Softwareausstattung finden Sie [hier](help/softwareausstattung.md). 
Wichtige Einstellungen für Eclipse sind [hier](help/eclipse.md) beschrieben.




| #  | Ausgabe    | Thema                                                               | Fällig am 📆   |
|----|------------|---------------------------------------------------------------------|----------------|
| 1. | 19.03.2025 | [Umgebung aufsetzen](Assignment_01/readme.md)                       | **30.03.2025**  **21:00:00 MEZ** |
| 2. | 19.03.2025 | [Erster Commit](Assignment_02/readme.md)                            | **30.03.2025**  **21:00:00 MEZ** |
| 3. | 26.03.2025 | [Stein, Papier, Schere (, Echse, Spock)](Assignment_03/readme.md)   | **06.04.2025**  **21:00:00 MEZ** |
| 4. | 02.04.2025 | [Vektor](Assignment_04/readme.md)                                   | **13.04.2025**  **21:00:00 MEZ** |
| 5. | 09.04.2025 | [Racewars](Assignment_05/readme.md)     			        | **27.04.2025**  **21:00:00 MEZ** |
| 6. | 30.04.2025 | [Fibonacci](Assignment_06/readme.md)			        | **11.05.2025**  **21:00:00 MEZ** |
| 7. | 14.05.2025 | [Passwortcracker](Assignment_07/readme.md)                          | **01.06.2025**  **21:00:00 MEZ** |
| 8. | 28.05.2025 | [Performance von Sortieralgorithmen](Assignment_08/readme.md)       | **08.06.2025**  **21:00:00 MEZ** |
| 9. | 18.06.2025 | [Textanalyse](Assignment_09/readme.md)                              | **29.06.2025**  **21:00:00 MEZ** |

