====== 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.**