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

Semester:Sommersemester 2019
Zeit/Ort:Mo 16-18 Uhr, HS Weismann-Haus, Albertstraße 21a
Dozent:M.Sc. Christian Palus
E-Mail Dozent:christian.palus@mathematik.uni-freiburg.de
Sprechstunde des Dozenten:n.V., Zi. 204, Hermann-Herder-Str. 10
Assistent:M.Sc. Steve Wolff-Vorbeck
E-Mail Assistent:steve.wolff-vorbeck@mathematik.uni-freiburg.de
Sprechstunde des Assistenten:n.V., Zi. 223, Hermann-Herder-Str. 10

Aktuelles

  • Die Evaluation der Veranstaltung können Sie in den letzten beiden Vorlesungswochen in den Übungsgruppen durchführen.
  • Bitte denken Sie an die rechtzeitige Anmeldung der Studienleistung in HISinOne, falls Sie die Veranstaltung als praktische Übung im 2-HF-Bachelor- oder Master-of-Education-Studiengang verwenden möchten.
  • Bitte denken Sie daran, sich in HISinOne auch für die Vorlesung anzumelden. Verspätete Anmeldungen bitte per E-Mail an Frau Fimmen vom ZfS: Katja.Fimmen@zfs.uni-freiburg.de
  • Die Anmeldung für die Übungsgruppen erfolgt über HISinOne ab dem 29.04.2019. Der Übungsbetrieb beginnt in der zweiten Vorlesungswoche. Aufgrund des Feiertags am 1. Mai finden die Mittwochstutorate in dieser Woche ausnahmsweise dienstags statt. Verspätete Anmeldungen bitte per E-Mail an Frau Fimmen vom ZfS: Katja.Fimmen@zfs.uni-freiburg.de

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
  • Aspekte der IT-Kommunikation

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

Studienleistung

Es gelten die Bedingungen des ZfS. Bei den Übungen ist eine Anwesenheit von mindestens 80% notwendig. Bei den Übungsblättern müssen mindestens 65% der zu vergebenden Punkte erreicht werden. Außerdem wird eine aktive Teilnahme an den Übungsgruppen und mindestens einmaliges Vorstellen einer Lösung verlangt; jeder Aufforderung dazu seitens des Tutors ist nachzukommen.

Vorlesungsnotizen

Die Notizen werden laufend ergänzt.
Kurzanleitung C++ (28.05.2019)
Vorlesungsnotizen (22.07.2019)

Beispieldateien

Kapitel 1:
hello.cc, wurzel.cc, ausgabe.cc, fallunterscheidung.cc, countdown-while.cc, countdown-for.cc, switch.cc, break.cc, minmax.cc, minmax2.cc, parameter.cc.

Kapitel 2:
Bauteile eines Computers, Hauptplatine, NPN-Transistor, Logisches ODER auf einer Steckplatine, Interne Kontaktreihen der Steckplatine.

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 5:
hello.m, quot.m, if_abfrage.m, switch_verzweigung.m, while_schleife.m, for_schleife.m, veknorm.m, vectorize.m.

Übungsblätter

Die Abgabe der Lösungen erfolgt in die Briefkästen vor Raum 201 (CIP-Pool) im 2. Stock des RZ (Hermann-Herder-Str. 10) beziehungsweise per E-Mail an den jeweiligen Tutor.

Blatt Ausgabe Abgabe
Blatt 129.04.201906.05.2019, 16 Uhr
Blatt 206.05.201913.05.2019, 16 Uhr
Blatt 313.05.201920.05.2019, 16 Uhr
Blatt 420.05.201927.05.2019, 16 Uhr
Blatt 527.05.201903.06.2019, 16 Uhr
Blatt 603.06.201917.06.2019, 16 Uhr
Blatt 717.06.201924.06.2019, 16 Uhr
Blatt 824.06.201901.07.2019, 16 Uhr
Blatt 901.07.201908.07.2019, 16 Uhr
Blatt 1008.07.201915.07.2019, 16 Uhr
Blatt 11 (Bonusblatt)15.07.201922.07.2019, 16 Uhr

Dateien

Blatt 7, Aufgabe 3: temperaturen.txt
Blatt 11: nqueens.cc

Musterlösungen

Blatt 4, Aufgabe 4: blackjack-1.cc
Blatt 5, Aufgabe 4: blackjack-2.cc

Korrekturen

Blatt 3: Bei der Fallunterscheidung im Beispiel zum Flussdiagramm fehlen die Beschriftungen "ja" und "nein". Eine korrigierte Version des Übungsblatts finden Sie hier.

Blatt 7 Aufgabe 1: in (ii) sollte iterativ statt dynamisch stehen.

Blatt 7 Aufgabe 2: Im Algorithmus (Bubblesort) in Schritt (3) muss (5) statt (6) stehen.

Übungsgruppen

Die Übungsgruppen finden im Rechenzentrum in der Hermann-Herder-Straße 10 statt. Die Termine sind folgendermaßen:

Gruppe Tutor Zeit/Ort
1 Felix Schmieder Mi 14-16 Uhr, CIP-Pool Raum 201, Hermann-Herder-Str. 10
2 Frank Meyer Mi 16-18 Uhr, CIP-Pool Raum 201, Hermann-Herder-Str. 10
3 Felix Schmieder Fr 10-12 Uhr, Raum -100, Hermann-Herder-Str. 10
4 Felix Schmieder Fr 12-14 Uhr, CIP-Pool Raum 201, Hermann-Herder-Str. 10

E-Mail-Adressen der Tutoren:

Felix Schmieder: einprog19@gmail.com
Frank Meyer: frank.meyer@pluto.uni-freiburg.de

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.
  • Unter Windows kann man Cygwin verwenden, um eine Linux-Umgebung zu emulieren. Eine andere Möglichkeit stellt die Verwendung einer IDE wie Code::Blocks dar.
  • C++-Programme können Sie auch in der Online-Shell http://cpp.sh entwickeln und testen. Eine Alternative zu der Online-Shell ist der Online Compiler and Debugger https://www.onlinegdb.com, der sich allerdings noch im Betastadium befindet.
  • Für das Arbeiten mit MATLAB empfehlen wir, dass Sie sich eine kostenlose Studentenlizenz besorgen (siehe Informationen des RZ zur MATLAB-Lizenz) und damit MATLAB auf Ihrem Rechner installieren oder die Online-Version im Browser benutzen.
  • Eine kostenlose, weitestgehend kompatible Alternative zu MATLAB ist GNU Octave.

Literatur

Online Tutorials