Einführung in die Programmierung für Studierende der Naturwissenschaften

Semester:Sommersemester 2021
Zeit/Ort:Montag, 16:00 - 18:00 c.t. online (Ort: Virtueller Vorlesungsraum Morphy)
Dozent:Ludwig Striet
E-Mail Dozent:ludwig.striet@mathematik.uni-freiburg.de
Sprechstunde des Dozenten:n.V.
Assistentin:Hedwig Keller
E-Mail Assistentin:hedwig.keller@mathematik.uni-freiburg.de
Sprechstunde der Assistentin:n.V.

Aktuelles

  • Der Kurs findet als online-Vorlesung statt. Die Vorlesung soll zusätzlich aufgezeichnet werden.
  • Die Einteilung der Übungsgruppen erfolgt über HISinOne in der ersten Vorlesungswoche.
  • Bitte denken Sie daran, sich in HISinOne sowohl für den Kurs selbst als auch für die Tutorate anzumelden. Ohne Anmeldung zum Kurs kann keine Erfassung der Studienleistung erfolgen. Verspätete Anmeldungen für den BOK-Kurs bitte per E-Mail an Frau Fimmen vom ZfS: Katja.Fimmen@zfs.uni-freiburg.de
  • Es gibt ein Forum zum Kurs, das für inhaltliche und organisatorische Fragen genutzt werden soll
  • Die Einteilung der Übungsgruppen über HISinOne ist erfolgt. Bitte melden Sie sich bei Ludwig Striet, wenn Sie sich nicht anmelden konnten oder es andere Probleme gibt
  • Die e-Mail Adressen für die Abgaben finden Sie unten auf der Webseite. Bitte beachten Sie: die Abgabe erfolgt stets Mittwochs, die Angabe wurde unten korrigiert.
  • Wir bieten ab dem 14. Mai jeden Freitag von 14-16 Uhr c.t. eine Fragestunde im virtuellen Raum Anderssen an
  • Die Präsentation der Abschlussprojekte findet vom 2.8. - 4.8.2021 statt
  • Weitere Informationen zu den Abschlussprojekten finden Sie hier
  • Der Vorläufige Zeitplan für die Vorstellung der Projekte ist online. Bitte melden Sie sich bei Problemen bei Ludwig Striet.
  • Eine aktualisierte Version des Zeitplans für die Vorstellung der Projekte ist online. Bitte melden Sie sich bei Problemen bei Ludwig Striet.
  • Die Abschlusspräsentationen finden im virtuellen Raum Yifan statt.
  • Der Zeitplan wurde erneut aktualisiert.
  • Die Eintragung der Bewertungen ins HISinOne System ist abgeschlossen.

Inhalte

Die Veranstaltung bietet eine Einführung in die Programmierung mit theoretischen und praktischen Einheiten. Schwerpunkte der Veranstaltung sind:

  • Logische Grundlagen der Programmierung
  • Elementares Programmieren in C++
  • Funktionsweise eines Prozessors
  • Felder, Zeiger, abgeleitete Datentypen, (Datei-)Ein- und -ausgabe
  • Algorithmik
  • Programmieren und Visualisieren in MATLAB
  • Funktionsweise eines Compilers
  • Paralleles und objektorientiertes Programmieren

Die praktischen Inhalte werden in der Programmiersprache C++ sowie in MATLAB erarbeitet. Die erworbene Kenntnisse werden anhand von Übungen und Hausaufgaben erprobt und vertieft.

Struktur des Kurses

Der Kurs setzt sich in diesem Semester aus drei Teilen zusammen:

  • Studium auf Basis des bereitgestellten Skripts mit begleitenden Beispielen, online-Vorlesung und Aufzeichnungen
  • Bearbeitung von wöchentlichen Hausaufgaben und deren Besprechung
  • Projektarbeit mit Kurzpräsentation am Ende des Semesters

Übungsaufgaben

Die Übungsblätter wöchentlich auf dieser Seite veröffentlicht. Genauere Infos zur Abgabe folgen. Einmal wöchentlich finden Online-Tutorate statt, in denen die Übungsaufgaben besprochen und Fragen gestellt werden können.

Ab Blatt 06 werden nur noch Abgaben bepunktet, die kompiliert werden können

AusgabeAbgabe
Blatt 01 19.04.2021 Bis 28.04.2021, 18:00
Blatt 02 26.04.2021 Bis 05.05.2021, 18:00
Blatt 03 03.05.2021 Bis 12.05.2021, 18:00
Blatt 04 10.05.2021 Bis 19.05.2021, 18:00
Blatt 05 17.05.2021 Bis 02.06.2021, 18:00
Blatt 06 31.05.2021 Bis 09.06.2021, 18:00
Blatt 07 07.06.2021 Bis 16.06.2021, 18:00
Blatt 08 14.06.2021 Bis 23.06.2021, 18:00
Blatt 09 21.06.2021 Bis 30.06.2021, 18:00
Blatt 10 29.06.2021 Bis 07.07.2021, 18:00
Blatt 11 05.07.2021 Bis 14.07.2021, 18:00

Ergänzendes Material:

Korrekturen:

  • Blatt 5, Aufgabe 4: hier sollen alle Zahlen aus der Datei eingelesen werden.
  • Blatt 8, Aufgabe 1: hier soll überprüft werden, ob ein Element in einer Liste enthalten ist. Das Blatt wurde aktualisiert.
  • Blatt 8, Aufgabe 2b: hier ist es ausreichend, das Verfahren für eine Liste für integer zu implementieren. Das Blatt wurde aktualisiert.
  • Blatt 10, Aufgabe 4: hier war ein Fehler in der zweiten Zeile der diskreten Gleichung (+ statt -). Der Fehler wurde korrigiert.

Studienleistung

Es gelten die Bedingungen des ZfS. Eine aktive Teilnahme an den Übungsgruppen wird erwartet. Sie müssen mindestens 65% der maximal möglichen Punkte aus den Übungsblättern erreichen. Jeder Aufforderung zur genaueren Erläuterung einer eingereichten Lösung seitens der Tutoren ist nachzukommen. Bis zum Ende der Vorlesungszeit ist eine Projektarbeit anzufertigen und in einem Vortrag vorzustellen.

Kursmaterial

Das Kursmaterial wird laufend ergänzt.

Skript

Das Skript (Stand: 5. Juli) ist hier zu finden. Die Inhalte innerhalb der Kapitel können in der Reihenfolge leicht unterschiedlich sein.

Beispieldateien

Kapitel 1:
hallo.cc, wurzel.cc, einaus.cc, if_else.cc, switch.cc, while.cc, for.cc, goto.cc, funktion.cc, funktion2.cc.

Kapitel 3:
pointer.cc, call-by-reference.cc, array-pointer.cc, dyn-array.cc, function-pointer.cc, char-feld.cc, strings.cc, vector.cc, datei-schreiben.cc, datei-lesen.cc, koordinaten.txt, main-param.cc, namevector.cc, namevector.hh.

Kapitel 4:
bank-accout.cc, template.cc.

Kapitel 6:
hello.m, quot.m, if_abfrage.m, switch_verzweigung.m, for_schleife.m, while_schleife.m. veknorm.m, vectorize.m.

Vorlesungsaufzeichnungen und Material

19.04.2021 Vorlesung 01
26.04.2021 Vorlesung 02
03.05.2021 Vorlesung 03 Folien
10.05.2021 Teil A Teil B Folien
17.05.2021 Teil A Teil B Folien
31.05.2021 Teil A Teil B
07.06.2021 Teil A Teil B Folien
14.06.2021 Teil A Teil B Folien
21.06.2021 Teil A Teil B
28.06.2021 Vorlesung 10
05.07.2021 Vorlesung 11
12.07.2021 Teil A Teil B
19.07.2021 entfällt

Übungsgruppen

Die Übungen finden über BigBlueButton statt. Die Räume finden Sie hier. Die Passwörter erhalten Sie per e-Mail nach Abschluss der Belegung.

Gruppe Tutor:in Zeit/Ort
1 Mario Fritsch Mo 10-12 Uhr, Ort: virtueller Raum Yifan
2 Theresa Kleinert Mo 14-16 Uhr, Ort: virtueller Raum Yifan
3 Evgenij Pascual Di 10-12 Uhr, Ort: virtueller Raum Yifan
4 Simon Traub Di 14-16 Uhr, Ort: virtueller Raum Zukertort
5 Nick Burk Di 14-16 Uhr, Ort: virtueller Raum Yifan
6 Markus Krysiak Mi 8-10 Uhr, Ort: virtueller Raum Yifan

E-Mail-Adressen der Tutoren:

Finden Sie hier (gleiche Login-Daten wie oben)

Sonstiges

Software

  • Unter Linux bietet es sich an, mit dem C/C++-Compiler der GNU Compiler Collection zu arbeiten. Die Installation kann in der Regel über das Paketmanagement der Linux-Distribution erfolgen. Verbreitete und anfängerfreundliche Linux-Distributionen sind beispielsweise Ubuntu, Linux Mint oder Pop!_OS. Diese können einfach parallel zu einem bereits vorhanden Betriebssystem auf der Festplatte installiert werden.
  • Die einfachste Variante unter Windows ist vermutlich die Verwendung einer Entwicklungsumgebung (IDE) mit integriertem Compiler, z.B. Code::Blocks. Unter Windows 10 kann man alternativ das Windows-Subsystem für Linux verwenden, um direkt in Windows eine Linux-Umgebung zu installieren.
  • Unter macOS kann man ebenfalls die GNU Compiler Collection verwenden. Dazu einfach im Terminal g++ eingeben. Falls GCC noch nicht vorhanden ist, erscheint eine Fehlermeldung und ein Fenster, in welchem "install" ausgewählt werden muss (funktioniert ab OS X 10.9 Maverick, getestet mit macOS 10.14 Mojave). Anschließend kann der Compiler im Terminal aufgerufen werden. Alternativ kann man die Entwicklungsumgebung Xcode installieren und verwenden.
  • Kurze C++-Programme können Sie auch in der Online-Shell http://cpp.sh entwickeln und testen. Alternativen sind der etwas umfangreichere Online Compiler and Debugger https://www.onlinegdb.com, der sich allerdings noch im Betastadium befindet, sowie die Seite rextester.com, wo man sogar kollaborativ arbeiten kann. Diese Online-Tools ermöglichen einen schnellen Einstieg, sind jedoch im Umfang sehr eingeschränkt.
  • Eine freie, weitestgehend kompatible Alternative zu MATLAB ist GNU Octave. Diese Software ist für die Inhalte des Kurses vollkommen ausreichend.
  • Bei Bedarf können Sie sich auch eine kostenlose MATLAB-Studentenlizenz besorgen (siehe Informationen des RZ zur MATLAB-Lizenz) und damit MATLAB auf Ihrem Rechner installieren oder die Online-Version im Browser benutzen.

Literatur

Online Tutorials