Modulinformationssystem Informatik

 

Einführung in die Informatik URL PDF XML

Modulcode: infEInf-01a
Englische Bezeichnung: Introduction to Computer Science
Modulverantwortliche(r): Prof. Dr. Andreas Mühling
Turnus: jedes Jahr im WS (WS21/22 WS22/23 WS23/24)
Präsenzzeiten: 4V 2Ü
ECTS: 8
Workload: 60 Std. Vorlesung, 30 Std. Präsenzübung, 150 Std. Selbststudium
Dauer: ein Semester
Modulkategorien: BSc-Inf-G (BSc Inf (21)) 2F-BSc-Inf (2F-BSc Inf (21)) BSc-WInf-G (BSc WInf (21))
Lehrsprache: Deutsch
Voraussetzungen: Info

Kurzfassung:

Das Modul gibt eine Einführung in die grundlegenden Prinzipien der Informatik. Ein wesentlicher Schwerpunkt bildet hierbei die imperative, prozedurale Programmierung, mit ersten Ansätzen zur Datenmodellierung. Weitere Aspekte sind insbesondere Datenbanken, Web-Anwendungen, formale Sprachbeschreibungen, einfache Algorithmen zum Sortieren und eine Analyse ihres Komplexitätsverhaltens, Ideen der Berechenbarkeitstheorie.

Lernziele:

Die Studierenden erwerben die Fähigkeit, Problemstellungen algorithmisch zu lösen und den resultierenden Algorithmus mit Hilfe einer imperativen Programmiersprache unter Verwendung einfacher Abstraktionskonzepte und Datenstrukturen zu implementieren. Sie kennen unterschiedliche Programmiertechniken und können Komplexitätsabschätzungen für die Laufzeit von Programmen machen. Sie verfügen über Kenntnisse in formaler Syntaxbeschreibung und können diese zum Erlernen neuer Programmiersprachen einsetzen. Weiter kennen Sie die grundlegenden Konzepte relationaler Datenbanken, können einfache Datenbanken modellieren und in existierenden Datenbanken einfache Anfragen mittels SQL formulieren.

Lehrinhalte:

Neben einer Einführung in die grundlegenden Prinzipien der Programmierung werden weiterführende Themen, welche im Studium in weiterführenden Modulen vertieft werden vorgestellt. Im einzelnen sind dies die folgenden Inhalte:

  • Ursprünge der Informatik
  • Algorithmenbegriff
  • Syntaxbeschreibung mit Hilfe der (erweiterten) Backus-Naur-Form
  • Operatorpräzedenzen, Termdarstellungen und -auswertungen
  • Programmierkonzepte am Beispiel von Python
  • Ausdrücke, Anweisungen, einfache Datentypen, Kontrollstrukturen, prozedurale Abstraktion, Rekursion
  • Spezifikation von Programmeigenschaften, Assertions und einfache Unittests
  • Korrektheitsbeweise für Programme, z.B. mittels Invarianten und Hoare-Logik
  • relationale Datenbanken, Modellierung und SQL
  • Binäre Suche und Sortierverfahren, incl. einfacher Laufzeitanalysen
  • Divide-and-Conquer
  • Algorithmische Komplexität und Unentscheidbarkeit von Problemen
  • Netzwerkkommunikation oder Lighthouse

Weitere Voraussetzungen:

Prüfungsleistung:

Prüfungsvorleistung: Bearbeitung der Übungsaufgaben Prüfungsleistung: Klausur

Lehr- und Lernmethoden:

Tafelvorlesung und Programmentwicklung am Rechner. Ein Vorlesungsskript wird zur Verfügung gestellt. Im Rahmen der Themen, die im weiteren Studium noch vertieft werden, halten die jeweiligen Modulverantwortlichen kurze Impulsvorträge, welche einen Ausblick in die weitere Behandlung dieser Themen in den entsprechenden Modulen geben.

In den Übungsstunden wird der Vorlesungsstoff wiederholt, durch die wöchentlich zu bearbeitenden Übungsaufgaben verfestigt und vertieft. Das Erlernen des Programmierens ist nur durch aktives Erstellen eigener Programme möglich. Als Hilfestellung werden hierzu zusätzlich betreute Rechnerzeiten angeboten.

Verwendbarkeit:

Literatur:

Wird in der Vorlesung bekannt gegeben.

Verweise:

Kommentar:

Neben der Programmierung gibt das Modul Einblicke in andere Informatikmodule und führt diese im Kontext der Programmierung ein:

  • Mathematik A: Mengen, Funktionen und Relationen in der Modellierung, Mengen als Anwendungsbeispiel in der Programmierung, Korrektheitsbeweis für einfache Programme mittels Induktion/Hoare-Kalkül
  • Computersysteme: Zahlendarstellung, Programmierung mit Fließkommazahlen, boolesche Schaltkreise und boolesche Ausdrücke in Programmiersprachen
  • Objektorientierte Programmierung: Klassen und Objekte zur Realisierung einfacher Datenstrukturen, Objektidentität und Mutation von Datenstrukturen.
  • Datenbanken: Modellierung von Datenbankschemata (Primär- und Fremdschlüssel, 1:n- und n:m-Relationen), SQL, insbesondere Anfragen
  • Algorithmen und Datenstrukturen: einfache Laufzeitanalysen (binäre Suche, Sortierverfahren), O-Notation, Best-case, Worst-Case und Average-Case,
  • Theoretische Grundlagen der Informatik: (E)BNF zur Syntaxbeschreibung, Ausdrucksstärke von EBNF und BNF, Reguläre Ausdrücke, Erfüllbarkeit boolescher Formeln als Beispiel für Komplexitätsfragen, Unentscheidbarkeit des Halteproblems für Programmiersprachen
  • Logik: Verwendung von logischen Formeln zur Beschreibung von Assertions und im Kontext der Hoare-Logik
  • Kommunikationssysteme: das Internet, Dienste und clientseitige Web-Anwendnungen