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

Semester:Sommersemester 2023
Zeit/Ort:Montag, 16:00 - 18:00 c.t. (Ort: HS Weismann-Haus, Alberstraße 21a)
Dozent: Ludwig Striet
E-Mail Dozent:ludwig.striet@mathematik.uni-freiburg.de
Assistentin: Tatjana Stiefken
E-Mail Assistentin:tatjana.stiefken@mathematik.uni-freiburg.de

Aktuelles

  • Der Kurs findet als Präsenzveranstaltung statt.
  • Die Einteilung der Übungsgruppen erfolgt über HISinOne in der ersten Vorlesungswoche und läuft von Montag, 17.4. um 18:00 Uhr bis Dienstag, 18.4. um 10:00 Uhr.
  • 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 mit Angabe von Name und Matrikelnummer per E-Mail an Frau Fimmen vom ZfS: Katja.Fimmen@zfs.uni-freiburg.de
  • Lehramtsstudierende, die die Veranstaltung als praktische Übung anrechnen wollen, belegen bitte die Veranstaltung 07LE23PÜ-5-EinfProgNW.
  • Die Tutorate finden Sie in HISinOne unter der Veranstaltungsnummer 00LE55T-BOK-5105T
  • Die Präsentationen der Abschlussprojekte finden am 27. und 28. Juli statt. Weitere Informationen folgen.
  • In der Woche vom 29.5. - 2.6. finden aufgrund der Pfingstpause keine Vorlesung oder Übungen statt.
  • Aktuelle Informationen zu den Abschlussprojekten finden Sie hier
  • Der aktuelle Zeitplan ist hier zu finden. Bitte melden Sie sich bei Fragen oder Problemen.
  • Die Präsentationen finden in Raum 226 im Uni-Rechenzentrum statt

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 erworbenen 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 und der Vorlesung
  • Bearbeitung von wöchentlichen Hausaufgaben und deren Besprechung in Übungsgruppen
  • Projektarbeit mit Kurzpräsentation am Ende des Semesters

Übungsaufgaben

Die Übungsblätter wöchentlich auf dieser Seite veröffentlicht. Die Abgabe erfolgt per e-Mail an Ihre/n Tutor/in. Die E-Mail-Adressen der Tutoren finden Sie hier. Einmal wöchentlich finden Tutorate statt, in denen die Übungsaufgaben besprochen und Fragen gestellt werden können.

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

AusgabeAbgabe
Blatt 00 17.04.2023
Blatt 01 24.04.2023 Bis 07.05.2023, 24:00
Blatt 02 01.05.2023 Keine Abgabe
Blatt 03 08.05.2023 Bis 14.05.2023, 24:00
Blatt 04 15.05.2023 Bis 21.05.2023, 24:00
Blatt 05 22.05.2023 Bis 04.06.2023, 24:00
Blatt 06 05.06.2023 Bis 11.06.2023, 24:00
Blatt 07 12.06.2023 Bis 18.06.2023, 24:00
Blatt 08 19.06.2023 Bis 25.06.2023, 24:00
Blatt 09 26.06.2023 Bis 02.07.2023, 24:00
Blatt 10 03.07.2023 Bis 09.07.2023, 24:00
Blatt 11 10.07.2023 Bis 16.07.2023, 24:00

Ergänzendes Material

stopwatch.cc stopwatch.h bankkonto.cc Notenliste.txt Approximation_NN.m

Studienleistung

Es gelten die Bedingungen des ZfS. Insbesondere ist die Teilnahme an den Übungsgruppen verpflichtend (max. zwei Mal fehlen). 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.

Vorlesungsaufzeichnungen und Material

17.04.2023 Folien Technische Probleme
Keine Aufzeichnung
24.04.2023 Folien Aufzeichnung
08.05.2023 Folien Aufzeichnung
15.05.2023 Folien Aufzeichnung
22.05.2023 Folien Aufzeichnung
05.06.2023 Folien Aufzeichnung
12.06.2023 Folien Aufzeichnung
19.06.2023 Folien Aufzeichnung
(Von letztem Jahr)
26.06.2023 Folien Aufzeichnung
03.07.2023 Folien Aufzeichnung
10.07.2023 Folien Aufzeichnung
17.07.2023 Folien Aufzeichnung

Skript

Das Skript ist hier zu finden.

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.

Übungsgruppen

Gruppe Tutor:in ZeitOrt
1 Matthias Zumkeller Dienstag 10-12 Uhr CIP-Pool, Uni-Rechenzentrum, 2. OG, Raum 201
2 Patrick Nasdala Dienstag 14-16 Uhr CIP-Pool, Uni-Rechenzentrum, 2. OG, Raum 201
3 Julian Wiedermann Dienstag 16-18 Uhr CIP-Pool, Uni-Rechenzentrum, 2. OG, Raum 201
4 Markus Krysiak Mittwoch 12-14 Uhr CIP-Pool, Uni-Rechenzentrum, 2. OG, Raum 201
5 Jascha Hettich Mittwoch 16-18 Uhr CIP-Pool, Uni-Rechenzentrum, 2. OG, Raum 201

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 oder Linux Mint. 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 und wir empfehlen die Verwendung.
  • 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