Einführung in die Programmierung für Studierende der Naturwissenschaften
Semester: | Sommersemester 2022 |
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 |
Sprechstunde des Dozenten: | n.V. |
Fragestunde | Freitag, 10-12 Uhr, Uni-Rechenzentrum, 2. OG, CIP-Pool |
Aktuelles
- Der Kurs findet als Präsenzveranstaltung statt. Die Vorlesungen werden aufgezeichnet und kurz nach der Vorlesung hier veröffentlicht. Bei den Tutoraten können Sie zwischen Onlne- und Präsenzgruppen wählen.
- Die Einteilung der Übungsgruppen erfolgt über HISinOne in der ersten Vorlesungswoche und läuft von Montag, 25.4. um 16:00 Uhr bis Freitag, 29.4. um 24: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
- In der ersten Woche ist die Teilnahme an der Übungsgruppe freiwillig, wird aber insbesondere empfohlen, wenn Sie keine Vorerfahrung im Programmieren haben. Sie können an einer beliebigen Gruppe teilnehmen.
- Die Tutorate finden Sie in HISinOne unter der Veranstaltungsnummer 00LE55T-BOK-5105T
- Wenn Sie in Ausnahmefällen nicht an der Übungsgruppe, für die Sie angemeldet sind, teilnehmen können, können Sie ausnahmsweise ersatzweise an einer der online-Gruppen teilnehmen. Bitte teilen Sie
dies Ihrem/r Tutor/in vorher mit.
- Die Präsentationen der Abschlussprojekte finden am 1. und 2. August statt. Weitere Informationen folgen an dieser Stelle im Lauf der Woche.
- Informationen zu Abschlussprojekten und Themen finden Sie hier (Version vom 22. Juni 2022)
- Ein (vorläufiger) Zeitplan ist hier zu finden. Bitte melden Sie sich, falls Sie zu der angegebenen Zeit nicht teilnehmen können oder nicht auf der Liste auftauchen per e-Mail.
- Es werden noch freiwillige gesucht, die aus der Gruppe am Dienstag Nachmittag in die Gruppe am Dienstag Vormittag wechseln können. Bei Interesse bitte ebenfalls per e-Mail melden.
- Der Zeitplan wurde aktualisiert.
- Die präsenz-Präsentationen finden in SR 226 im Rechenzentrum, Hermann-Herder-Straße 10 statt. Die Online-Präsentationen via BBB hier
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, Vorlesung und Aufzeichnungen
- 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 alleine oder in zweier-Gruppen per e-Mail an Ihre/n Tutor/in. Die E-Mail-Adressen der Tutoren finden Sie hier (gleiche Login-Daten wie oben)
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
| Ausgabe | Abgabe |
Blatt 00 |
25.04.2022 |
|
Blatt 01 |
02.05.2022 |
Bis 09.05.2022, 16:00 |
Blatt 02 |
09.05.2022 |
Bis 16.05.2022, 16:00 |
Blatt 03 |
16.05.2022 |
Bis 23.05.2022, 16:00 |
Blatt 04 |
23.05.2022 |
Bis 30.05.2022, 16:00 |
Blatt 05 |
23.05.2022 |
Bis 13.06.2022, 16:00 |
Blatt 06 |
13.06.2022 |
Bis 20.06.2022, 16:00 |
Blatt 07 |
20.06.2022 |
Bis 27.06.2022, 16:00 |
Blatt 08 |
27.06.2022 |
Bis 04.07.2022, 16:00 |
Blatt 09 |
04.07.2022 |
Bis 11.07.2022, 16:00 |
Blatt 10 (Bonus) |
11.07.2022 |
Bis 18.07.2022, 16:00 |
Blatt 11 |
19.07.2022 |
Bis 25.07.2022, 16:00 |
Blatt 12 (Bonus) |
25.07.2022 |
Bis 01.08.2022, 16:00 |
Ergänzendes Material:
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
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 | Zeit | Ort |
1 |
Daniel Burkhardt |
Dienstag 10-12 Uhr |
CIP-Pool, Uni-Rechenzentrum, 2. OG |
2 |
Daniel Burkhardt |
Dienstag 12-14 Uhr |
CIP-Pool, Uni-Rechenzentrum, 2. OG |
3 |
Markus Krysiak |
Dienstag 14-16 Uhr |
Online via Ilias |
4 |
Mario Fritsch |
Dienstag 14-16 Uhr |
CIP-Pool, Uni-Rechenzentrum, 2. OG |
5 |
Mario Fritsch |
Dienstag 16-18 Uhr |
CIP-Pool, Uni-Rechenzentrum, 2. OG |
6 |
Theresa Kleinert |
Mittwoch 10-12 Uhr |
CIP-Pool, Uni-Rechenzentrum, 2. OG |
7 |
Patrick Nasdala |
Mittwoch 12-14 Uhr |
CIP-Pool, Uni-Rechenzentrum, 2. OG |
8 |
Markus Krysiak |
Mittwoch 14-16 Uhr |
Online via Ilias |
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
- R. Drechsler, A. Fink, J. Stopper: Computer, Springer 2017
- T. Häberlein: Technische Informatik, Springer 2011
- R. Klima, S. Selberherr: Programmieren in C, Springer 2010
- G. Küveler, D. Schwoch: C/C++ für Studium und Beruf, Springer 2017
- D. Logofatu: Einführung in C, Springer 2016
- H. Müller, F. Weichert: Vorkurs Informatik, Springer 2017
- M. von Rimscha, Algorithmen kompakt und verständlich, Springer 2014
- R. Schneeweiß: Moderne C++ Programmierung, Springer 2012
- G. Vossen, K.-U. Witt: Grundkurs Theoretische Informatik, Springer 2016
Online Tutorials