====== Einführung in die Programmierung (Wintersemester 2019/20) ======
=== Exportvorlesung Einführung in die Programmierung (für ET/IT, IKT, Physik, WiMa) ===
* Veranstalter: [[https://ess.cs.tu-dortmund.de/~hsc|Dr.-Ing. Horst Schirmeier]]
* Vorlesung (4 SWS) + [[:teaching:ep1920uebung|Übung (2 SWS)]] + [[:teaching:ep1920sopra|Praktikum (4 SWS)]]
* Klausurtermine: 05.02.2020 (13-16 Uhr), 19.03.2020 (8-11 Uhr)
* **[[ep1920klausur|Informationen zu den Klausuren]]** (Anmeldung, Ergebnisse, Einsichtnahmetermine)
* Update 27.02.: Die Ergebnisse zur Klausur vom 05.02.2020 sind [[https://www.boss.tu-dortmund.de/|via BOSS einsehbar]], die [[ep1920klausur#klausur_am_05022020_13-16_uhr_haupttermin|Einsichtnahme findet am 10.03.2020 10-12 Uhr]] statt.
* Update 15.03.: Wegen der aktuellen Entwicklungen rund um das Coronavirus [[https://www.tu-dortmund.de/universitaet/aktuelles/detail/coronavirus-massnahmen-an-der-tu-dortmund/|sagt die TU Dortmund alle Klausuren bis 19.04.2020 ab]], und damit auch den EidP-Klausur-Nebentermin am 19.03. -> [[ep1920klausur|weitere Informationen]]
* Update 15.05.: Die EidP-Klausur vom 19.03. wird am 25.06. 14-17 Uhr nachgeschrieben. Die Anmeldelisten vom März bleiben bestehen. Ob darüber hinaus Nachmeldungen möglich sind, steht noch nicht fest; bei Interesse schreiben Sie bitte bis zum 29.05.2020 [[https://ess.cs.tu-dortmund.de/~hsc|dem Dozenten eine E-Mail]].
* Alle angemeldeten Teilnehmer wurden per E-Mail über die Details zur Klausur informiert. Falls Sie angemeldet sind und keine Informationen bekommen haben, prüfen Sie bitte Ihren Spam-Ordner und/oder [[https://ess.cs.tu-dortmund.de/~hsc|melden Sie sich unbedingt beim Dozenten]]!
* Update 16.07.: Die Ergebnisse zur Nachholklausur vom 25.06.2020 sind [[https://www.boss.tu-dortmund.de/|via BOSS einsehbar]].
* **Update 14.08.:** Die Einsichtnahme zur Nachholklausur vom 25.06.2020 findet am 21.08.2020 statt; Details dazu gab es am 18.08. per E-Mail. (Bitte melden Sie sich beim Dozenten, falls Sie keine erhalten haben.)
* **[[:teaching:ep1920uebung|Webseite zur Übung]]**, **[[:teaching:ep1920sopra|Webseite zum Praktikum]]**
* [[https://ess.cs.tu-dortmund.de/KK/|Kummerkasten]]
/* Erster Vorlesungstermin: 08.10.2019 */
Am **28.01.2020 findet in der Vorlesung eine Wiederholung** besonders gewünschter Themen statt (u.a. DEAs, kontextfreie Grammatiken, Polymorphie, Zeigerarithmetik).
/*
**Am Donnerstag, den 21.11.2019 (14:10-15:40), findet statt der Vorlesung eine Probeklausur statt.**
Damit wir nicht mehr Klausuren drucken als nötig, ist eine [[https://ess.cs.tu-dortmund.de/ASSESS/index.php?do=exerciselist&lectureid=372|Anmeldung über ASSESS zwingend erforderlich]].
Weitere Details finden sich auf der [[:teaching:ep1920uebung|Webseite zur Übung]].
*/
=== Termine ===
^ Tag ^ Uhrzeit ^ Hörsaal ^
| Dienstag| 12:15 - 13:45 | HG II/HS 3 |
| Donnerstag| 14:15 - 15:45 **14:10 - 15:40** | ::: |
=== Zielgruppen ===
* BSc Elektro- und Informationstechnik (ET/IT): [[http://www.e-technik.tu-dortmund.de/cms1/de/Lehre_Studium/Studienangebot/Bachelor_ETIT/Studienplan_Bachelor_ETIT_neu/index.html|Pflichtfach (Modul IF-001)]]
* BSc Informations- und Kommunikationstechnik (IKT): [[http://www.e-technik.tu-dortmund.de/cms1/de/Lehre_Studium/Studienangebot/Bachelor_IKT/Studienplan_Bachelor_IKT_neu/index.html|Pflichtfach (Modul IF-001)]]
* BSc Physik: [[http://physik.tu-dortmund.de/cms/Medienpool/Studiengaenge/Bachelor-of-Science-and-Master-of-Science-Physik/modulhandbuch_physik.pdf#page=17|Wahlpflichtfach]]
* BSc Wirtschaftsmathematik BPO 2015: [[http://www.mathematik.tu-dortmund.de/modulhandbuch/index.php/MAT-107b|Wahlpflicht (Modul MAT 107 b)]]
=== Inhalt ===
Die Veranstaltung führt in die Programmierung in C++ sowie in wesentliche Datenstrukturen und Algorithmen ein.
* Begriffsklärungen: Informatik allgemein, Teilgebiete der Informatik, Algorithmus; Abgrenzung zu anderen Wissenschaften
* Überblick: Rechnerarchitektur und Programmiersprachen; Darstellung von Information
* Programmierung in C++: grundlegende Datentypen und -strukturen, Kontrollstrukturen, Zeiger, Funktionen, Klassenkonzept, Vererbung, Polymorphie, Ausnahmebehandlung, Schablonen, Überblick STL
* Abstrakte Datentypen: Keller, Schlange, Listen, Binärbaum, Graphen, Komplexe Zahlen
* Algorithmen: Suchen, Sortieren, Hashing, Rekursionsprinzip, einfache Graphalgorithmen
* Formale Konzepte: Endliche Automaten, Grammatiken
* Einführung in die GUI-Programmierung (mit Qt)
Zudem werden einige Konzepte der neueren C++-Standards (C++11 et al.) eingeführt.
Nach erfolgreichem Abschluss des Moduls sind die Studierenden in der Lage, Algorithmen aus unterschiedlichen Bereichen strukturiert zu entwerfen und in der objektorientierten Programmiersprache C++ umzusetzen. Dabei wählen sie jeweils geeignete Datentypen aus. Sie kennen die Sprachkonstrukte von C++ und beherrschen die Grundkonzepte von objektorientierten Programmiersprachen. Sie können verschiedene Softwarewerkzeuge zur Unterstützung der Programmierung und der Fehlersuche einsetzen.
=== Vorlesungsfolien ===
Die Folien werden regelmäßig **vor der Vorlesung** hier zum Download bereitgestellt, damit sie ausgedruckt und während der Vorlesung mit Notizen versehen werden können.
^ Nr. ^ Thema ^ Download ^ Aktualisierungen ^
| 0. | Organisatorisches | {{:teaching:eidp:vorlesung:kap00.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap00-2x2.pdf|PDF 2x2}} | 10.10.2019: Termine Praktikum ET/IT/IKT |
| 1. | Einleitung | {{:teaching:eidp:vorlesung:kap01.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap01-2x2.pdf|PDF 2x2}} | |
| 2. | Darstellung von Information | {{:teaching:eidp:vorlesung:kap02.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap02-2x2.pdf|PDF 2x2}} | |
| | Codierung von floats | {{:teaching:eidp:vorlesung:kap02-floats.pdf|PDF}} | |
| 3. | Kontrollstrukturen | {{:teaching:eidp:vorlesung:kap03.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap03-2x2.pdf|PDF 2x2}} | |
| 4. | Zeiger | {{:teaching:eidp:vorlesung:kap04.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap04-2x2.pdf|PDF 2x2}} | |
| 5. | Funktionen | {{:teaching:eidp:vorlesung:kap05.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap05-2x2.pdf|PDF 2x2}} | |
| 6. | Gültigkeitsbereiche | {{:teaching:eidp:vorlesung:kap06.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap06-2x2.pdf|PDF 2x2}} | |
| 7. | Rekursion | {{:teaching:eidp:vorlesung:kap07.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap07-2x2.pdf|PDF 2x2}} | |
| 8. | Klassen | {{:teaching:eidp:vorlesung:kap08.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap08-2x2.pdf|PDF 2x2}} | |
| 9. | Elementare Datenstrukturen | {{:teaching:eidp:vorlesung:kap09.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap09-2x2.pdf|PDF 2x2}} | |
| 10. | Vererbung | {{:teaching:eidp:vorlesung:kap10.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap10-2x2.pdf|PDF 2x2}} | |
| 11. | Virtuelle Methoden | {{:teaching:eidp:vorlesung:kap11.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap11-2x2.pdf|PDF 2x2}} | |
| | [[https://stackoverflow.com/questions/4842424/list-of-ansi-color-escape-sequences|ANSI color escape sequences (stack overflow)]], [[https://github.com/apolukhin/christmas-tree|Weihnachtsbaum-C++-Quellcode]] |||
| 12. | Ausnahmebehandlung | {{:teaching:eidp:vorlesung:kap12.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap12-2x2.pdf|PDF 2x2}} | |
| 13. | Datenstrukturen & Algorithmen | {{:teaching:eidp:vorlesung:kap13.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap13-2x2.pdf|PDF 2x2}} | |
| 14. | Standard Template Library (STL) | {{:teaching:eidp:vorlesung:kap14.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap14-2x2.pdf|PDF 2x2}} | |
| 15. | GUI-Programmierung mit Qt | {{:teaching:eidp:vorlesung:kap15.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap15-2x2.pdf|PDF 2x2}} | |
| 16. | Wiederholung ausgewählter Themen | {{:teaching:eidp:vorlesung:wiederholung.pdf|PDF}}, {{:teaching:eidp:vorlesung:wiederholung-2x2.pdf|PDF 2x2}} | 28.01.2020: 2x Tippfehler Zeiger-Aufgabe |
| | {{:teaching:eidp:vorlesung:zeiger.cc|Lösung zur Zeiger-Aufgabe}} |||
| 17. | Besprechung Evaluation, Zusammenfassung, Ausblick | {{:teaching:eidp:vorlesung:kap17.pdf|PDF}}, {{:teaching:eidp:vorlesung:kap17-2x2.pdf|PDF 2x2}} | |
| | {{:teaching:eidp:vorlesung:ws1920-eidp.pdf|Evaluationsergebnisse}} |||
=== Literatur ===
* U. Breymann: C++ - Einführung und professionelle Programmierung, 9. Auflage, Hanser Fachbuchverlag 2007.
* U. Kaiser und C. Kecher: C++ - Von den Grundlagen zur professionellen Programmierung, 4. Auflage, Galileo Press 2008.
* U. Kirch-Prinz, Peter Prinz: C++ lernen und professionell anwenden, 4. Auflage, Vmi Buch 2007.
* D. May: Grundkurs Software-Entwicklung mit C++, Vieweg, Wiesbaden, 2003.
* A. Willemer: Einstieg in C++, 4. Auflage, Galileo Press 2009.
* J. Wolf: C++ von A bis Z - Das umfassende Handbuch, 2. Auflage, Galileo Press 2009.
* S.B. Lippmann, J. Lajoie und B.E. Moo: C++ Primer, 4. Auflage (dt. Ausgabe), Addison-Wesley, München, 2006. **Anmerkung: Für den ambitionierten Leser.**
* B. Stroustrup: Die C++ Programmiersprache, 4. Auflage, Addison-Wesley, München, 2000. **Anmerkung: Die Referenz. Für Anfänger nicht leicht zu lesen.**
* R. Grimm: C++11 > Der Leitfaden für Programmierer zum neuen Standard, Addison-Wesley, München, 2012. **Anmerkung: Enthält alle Neuerungen des neuen Standards. Wir verwenden nur einen winzigen Bruchteil aus diesem Buch.**