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

Zeit/Ort: Mo 16 - 18 Uhr, HS Weismann-Haus, Albertstr. 21a
Dozent: Prof. Dr. P. W. Dondl
Sprechstunde Dozent: Mo 12:15-13:45 Uhr, Zi. 217, Hermann-Herder-Str. 10
Tutorium: Dr. Keith M. P. Anguige
Sprechstunde Assistent: Di 10-12 Uhr, Zi. 206, Hermann-Herder-Str. 10

Aktuelles

(15.8.2017) Klausureinsicht findet statt am 21.8.2017, 11-13 Uhr im Raum 217, Hermann-Herder-Str. 10.

(15.8.2017) Nachklausur findet statt am 12.10.2017, 15-17 Uhr im HS Rundbau, Albertstr. 21.

C++-Compiler: Am einfachsten: cpp.sh. Hier können Sie einfach ein Programm in das Fenster eintippen (ich empfehle, das Programm in einem Texteditor zu schreiben und dann in das Fenster mittels Copy/Paste zu übertragen). Unter Linux sollte gcc installiert sein, dann können Sie mit dem Kommando g++ wie in der Vorlesung diskutiert Ihre Programme übersetzen. Auf dem Mac müssen Sie das kostenlose XCode (aus dem AppStore) installieren. Unter Windows empfehle ich die Nutzung von cpp.sh oder (für etwas erfahrenere Windows-Nutzer) eine Installation von mingw-64 (Downloadlink). Nach der Installation können Sie g++ (eventuell mit Angabe das Installationspfades, Sie sollten alse einen PATH setzen) wie unter Linux auf der Kommandozeile aufrufen.

Es ist dringend empfohlen, dass Sie eine MATLAB-Lizenz bekommen. MATLAB kostenlos für Studenten (Student Option). Mit dieser Lizenz können Sie MATLAB auf Ihrem eigenen Rechner installieren oder via MATLAB Online direkt im Webbrowser verwenden.

Es gibt auch von Mathworks direkt ein MATLAB Tutorial.

Eine sehr gute freie Alternative zu MATLAB ist GNU Octave.

Achtung, Raumänderung! Die Tutorate finden im Raum 201 im Rechenzentrum (Hermann-Herder-Str. 10) statt.

Klausur Die Klausur findet (wie bereits mehrfach angekündigt) am 1.8.2017 im HS 3219 (Kollegiengebäude III) um 16 Uhr (ct) statt. Bitte seien Sie 10 Minuten vorher anwesend. Es sind keine Hilfsmittel zugelassen. Dauer: 90 Minuten.

Inhalte

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

  • Programmstruktur und Kontrollfluss
  • Ausdrücke, Operatoren und Anweisungen
  • Datentypen, Typumwandlung und Typinferenz
  • Container: Tupel, Felder, Listen, etc.
  • Funktionen und Rekursion
  • Zeichenketten, Dateien, Ein- und Ausgabe
  • Einführung in die objektorientierte Programmierung
  • grafische Darstellungsmöglichkeiten

Die Inhalte werden anhand von Beispielen aus den Naturwissenschaften in der Programmiersprache C++ sowie in MATLAB erarbeitet. Die erworbenen Kenntnisse werden anhand von Übungen und Hausaufgaben praktisch erprobt und vertieft.

Vorlesungsfolien und Beispielprogramme

  • Folien

24.7.2017

  • MATLAB-Beispiele

Informationen zur Arrayindizierung
Beispielprogramm zur Arrayindizierung
test_movie.m
test_avi.m
vecexample.m

Beispielfragen

  • C++-Beispiele

hello.cpp
greet.cpp
string_and_int.cpp
while.cpp
for.cpp
pointertest.cpp
point.hpp, point.cpp, point_test.cpp

Beispielfragen

Studienleistung/Prüfungsleistung

Es gelten die Bedingungen des ZfS. Bei den Übungen ist eine Anwesenheit von mindestens 80% notwendig, 50% der Übungspunkte müssen erbracht werden. Die Prüfung findet am 1. August 2017 statt.

Übungsblätter

Blatt Ausgabe Abgabe
Blatt 1 5.5.2017 17.5.2017
Blatt 2 11.5.2017 24.5.2017
Blatt 3 20.5.2017 31.5.2017
Blatt 4 26.5.2017 14.6.2017
Blatt 5 9.6.2017 21.6.2017
Blatt 6 15.6.2017 28.6.2017
Blatt 7 24.6.2017 5.7.2017
Blatt 8 3.7.2017 12.7.2017
Blatt 9 10.7.2017 19.7.2017

Hinweise zu Aufgabe 22: Es ist eventuell nützlich einen Vektor v zu sortieren. Das geht mit "std::sort(v.begin(), v.end());" nach "#include <algorithm>". Probieren Sie es aus. Eine einfachere Möglichkeit Zufallszahlen zu generieren ist hier zu finden. Hier ein Beispielprogramm. Compilieren mit "g++ -std=c++11 -o rand_and_sort rand_and_sort.cpp" oder über cpp.sh.

Compilieren von Programmen: Falls "g++ -o dateiname dateiname.cpp" nicht funktioniert, versuchen Sie "g++ -std=c++11 -o dateiname dateiname.cpp". Mehr dazu in der Vorlesung am 10. Juli.

Achtung: Aufgabe 12: Es sollte $v_{ij} = (x_i)^j$ heissen.

Achtung 2: Aufgabe 27: Die zweite Codezeile sollte "std::vector<int> v(u.size());" lauten.

Übungsblatt 9 ist das letzte Blatt. In den Übungen der vorletzten Vorlesungswoche haben Sie Gelegenheit, abschließende Fragen zu diesem Blatt zu klären. In der letzten Vorlesungswoche finden keine Übungen mehr statt.

Programm door.m.
Programm elstring.m.

Anmeldung/Organisatorisches

Die Anmeldung zu den Übungsgruppen erfolgt via HISinOne.

Falls Sie sich noch nachträglich zum Kurs anmelden wollen, bitte eine Anfrage an zfs-info -at- zfs.uni-freiburg.de (cc an den Dozenten) senden. Es gibt keine Garantie für nachträgliche Aufnahme in den Kurs. Eine Abmeldung kann nur mit triftigem Grund erfolgen, bitte per Email an abmeldung -at- zfs.uni-freiburg.de.

Termine

  Termin Uhrzeit Ort
Anmeldung Übungsgruppen -- -- HISinOne
Erfassung Studienleistung 28.7.17 -- ---
Klausur 1.8.2017 16-18 Uhr HS 3219, KG3
Klausureinsicht 21.8.2017 10:00 Uhr Raum 217, H.-H. 10
Nachklausur 12.10.2017 15-17 Uhr HS Rundbau Albertstr. 21
Einsicht, Nachklausur --- --- ---

Übungen (Wöchentlich ab 3. SW)

Gruppe Zeit Ort
1 Di 14 - 16 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10
2 Di 16 - 18 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10
3 Mi 14 - 16 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10
4 Fr 12 - 14 Uhr Raum 201 (CIP-Pool), Hermann-Herder-Str. 10