Bachelor's Courses in the WiSe 23/24


To sign-up for this course, please send a mail with your student mail address and transcript of records to thomas.lemberger@sosy.ifi.lmu.de. We will check that you fulfill the prerequisites and sign you up.

In this course, students write their Bachelor's thesis on the topic "Analysis of Real-World Software".

The course is organized in weekly meetings. In the first meeting, we present the potential BSc thesis topics and the requirements on the theses. In the second meeting, we do training in practical software verification and scientific work. With the third meeting, the theses are registered and we start to meet in smaller groups.
In these, the students present their progress each week, communicate about issues and are mentored in their thesis topics.

Students will have to submit drafts of their work for early review.

Die Vorlesung "Betriebssysteme" ist als Fortführung der im Sommersemester stattfindenden Vorlesung Rechnerarchitektur anzusehen. Der Schwerpunkt der Vorlesung liegt auf der Darstellung der Konzepte der Systemprogrammierung. Typische Aufgaben der Systemprogrammierung sind die Programmierung des Betriebssystems sowie von Dienstleistungsprogrammen, wie beispielsweise Editoren, Compiler, Interpreter. Die Vorlesung gibt einen Überblick über die wesentlichen Aufgaben und Problembereiche eines Betriebssystems, wobei insbesondere auf die Bereiche Synchronisation, Prozess-Kommunikation, Verwaltung des Rechnerkerns sowie auf den Bereich der Speicherverwaltung eingegangen wird. Zur praktischen Umsetzung der in der Vorlesung eingeführten Konzepte wird als Programmiersprache in den Übungen Java (insbesondere die Thread-API) eingesetzt. Zum Abschluss der Vorlesung wird noch auf die Architektur von verteilten Systemen sowie auf Rechner-übergreifende Kommunikation und auf entfernte Prozeduraufrufe eingegangen.

Einschreibeschlüssel: Peterson23

Einschreibeschlüssel: LMU


Diese Lehrveranstaltung gibt eine Einführung in die Algorithmen- und Programmentwicklung. Diese Vorlesung richtet sich an Studierende verschiedener Fachbereiche mit Nebenfach Informatik.

Die Vorlesung richtet sich nicht an Studierende mit Hauptfach Informatik, Medieninformatik oder Bioinformatik. Auch nicht an Lehramt Realschule und Gymnasium, auch nicht an Master Industrial Design.

Die Vorlesung gibt es in zwei Varianten (6 ECTS und 9 ECTS):

6-ECTS Variante:

  1. Bachelorstudiengänge verschiedener Fachbereiche mit Nebenfach Informatik zu 30 ECTS-Punkten.
  2. Bachelorstudiengänge verschiedener Fachbereiche mit Nebenfach Medieninformatik zu 60 ECTS-Punkten. (Alternative zu Einführung in die Programmierung für Nebenfach Medieninformatik.)
  3. Bachelorstudiengänge verschiedener Fachbereiche mit Nebenfach Künstliche Intelligenz
  4. Bachelor Physik Wahlpflichtlehrveranstaltung des Moduls V
  5. Bachelor Statistik Wahlpflichtlehrveranstaltung (falls Informatik nicht als Nebenfach entsprechend (1) gewählt)
  6. Bachelor Chemie und Biochemie Wahlpflichtlehrveranstaltung
  7. Diplom- und Magisterstudiengänge mit Nebenfach Informatik (außer Diplom-Mathematik), z.B. VWL-Diplom 4 Leistungspunkte
  8. Bachelor Biologie, Wissenschaftliches Wahlmodul
  9. Bachelor BWL und Wirtschaftspädagogik Wahlpflichtlehrveranstaltung (nach PSTO 2015)

9-ECTS Variante:

  1. Bachelorstudiengänge verschiedener Fachbereiche mit Nebenfach Informatik zu 60 ECTS-Punkten.
  2. Bachelor BWL Wahlpflichtlehrveranstaltung (alte PSTO)
  3. Bachelor VWL Wahlpflichtlehrveranstaltung
  4. Master Chemie
  5. Master Biochemie

Im Fall (9) muss zusätzlich ein Programmierkurs für Anfänger für 3 ECTS belegt werden (dies ist eine zusätzliche, unabhängige Veranstaltung mit separater Anmeldung und Termin Mittwochs nach Zentralübung: 18-20 Uhr).

Achtung: Keine Garantie für korrekte Angaben.
In Zweifelsfällen wenden Sie sich bitte an das Prüfungsamt Ihres Studiengangs oder Hauptfachs.

Einschreibeschlüssel für diese Veranstaltung: InfoEinf


Einschreibeschlüssel: Java

Thema der Vorlesung ist die Einführung in die imperative und objektorientierte Programmierung sowie die Behandlung grundlegender Datenstrukturen und Algorithmen. Vermittelt werden begriffliche Grundlagen, Konzepte, Methoden und Techniken zur Darstellung und Strukturierung von Daten und zur Entwicklung von Algorithmen. Programmiersprache ist Java.

Dieser Kurs richtet sich vornehmen an Studierende mit Hauptfach Informatik.

Weitere Informationen folgen...

Die Veranstaltung führt in grundlegende Methoden und Konzepte ein, die bei der Spezifikation und Verifikation von Systemen von Bedeutung sind. Es werden Spezifikationsformalismen, Konzepte der System-Modellierung und Grundtechniken für die Automatisierung der Verifikation behandelt. Neben der Vorlesung werden die besprochenen Inhalte im Übungsteil anhand von praktischen Anwendungen eingeübt.

Einschreibeschlüssel: FSV

Das maschinelle Lernen hat in der jüngeren Vergangenheit stark an Bedeutung gewonnen, nicht nur als einer der Hauptpfeiler der modernen KI, sondern auch als Methodenlieferant und Innovationstreiber in vielen Anwendungsgebieten. Diese Bachelorvorlesung gibt eine Einführung in grundlegende Ideen und Konzepte des maschinellen Lernens als wissenschaftliche Disziplin im Schnittbereich von Informatik, Statistik und angewandter Mathematik. Der Schwerpunkt wird dabei auf der Problemklasse des überwachten Lernens liegen. Die Veranstaltung spannt einen Bogen von den theoretischen Grundlagen der Generalisierung bis hin zu wichtigen methodischen und algorithmischen Konzepten.

Zeitplan

Vorlesung  Dienstag 14-16 Uhr  Prof. Eyke Hüllermeier
Präsenzübung  Mittwoch 16-18 Uhr  Clemens Damke
Online-Übung  Freitag 10-12 Uhr  Clemens Damke

Den Einschreibeschlüssel finden Sie auf uni2work.

Komplexe IT-Projekte scheitern häufig an unklaren Vereinbarungen zwischen den Vertragspartnern. Selbst ein guter Projektvertrag mit klaren Regelungen hilft aber wenig, wenn bei der Durchführung des Projekts wesentliche vertragliche Vereinbarungen nicht entsprechend umgesetzt werden. Die Vorlesung „Juristisches IT-Projektmanagement” wendet sich an Informatiker im Hauptstudium (sowie an Studenten mit ähnlichen Studienrichtungen) und möchte nicht nur Software Engineering Techniken und Projektmanagementmethoden vertiefen, sondern hat auch das Ziel, das notwendige „juristische Handwerkszeug” zu vermitteln, damit Projektschieflagen in der Praxis vermieden werden – oder, wenn sie auftreten – korrigiert werden können. Dabei besteht der besondere Anspruch, den Bezug zwischen bekannten Informatikkonzepten und praktischen Erfahrungen aus komplexen IT-Projekten so darzustellen, dass sich konkrete Hinweise für die erfolgreiche Umsetzung von zukünftigen IT-Projekten ergeben.

Hörerkreis: Master- und Bachelor-Studenten/innen der Studienrichtungen Informatik und Medieninformatik. Andere Studierende sind nach Anmeldung auch herzlich willkommen.

Einschreibeschlüssel: Jur-ITPM

Einschreibeschlüssel: PfA_23_24

Der Kurs vermittelt kompakt und praktisch die Grundlagen der objektorientierten Programmierung mit Python und ist als Ergänzung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung (Nebenfach) gedacht.

Umfang: 2-stündige, wöchentliche Veranstaltung. Studierende mit Nebenfach Informatik zu 60 ECTS erhalten 3 ECTS Punkte bei erfolgreicher Teilnahme. Der Kurs steht auch anderen Studierenden offen.

Termin: Mittwoch 18-20 Uhr c.t. (ab 2. Vorlesungswoche, 1. Termin am 25. Oktober) im Raum B001 in der Oettingenstr. 67.

Für den Kurs gilt Anwesenheitspflicht. Sollten Sie diese nicht erfüllen können, können Sie alternativ am Ende des Semesters eine Hausaufgabe online abgeben.
Beides gilt natürlich nur, wenn Sie die Credits benötigen. Wir klären Näheres am ersten Termin.


Anmeldung

Die Anmeldung zu diesem Seminar erfolgt über die Zentralanmeldung für Bachelorseminare.

Voraussetzung für das Seminar ist die erfolgreiche Teilnahme an der Veranstaltung Algorithmen und Datenstrukturen!

Inhalt

Entwurf und Analyse von Algorithmen ist ein Kerngebiet der Informatik. In den ersten Semestern wurden bereits eine Reihe von Algorithmen, z.B. Graphalgorithmen und Sortieralgorithmen, und Paradigmen für Algorithmenentwurf vorgestellt und analysiert.

In diesem Seminar werden darauf aufbauend Algorithmen behandelt, die typischer Weise nicht in den Curricula behandelt werden, aber interessante Ideen aufweisen und von Interesse für die Anwendung sind. Wir behandeln Themen wie Mustererkennung in Texten, Boyer-Moore- und Knuth-Morris-Pratt-Algorithmen, Präfix-Bäume, Goldberg/Tarjans Netzwerkflussalgorithmus mit Anwendungen, Stable Marriage Problem, Weighted Popular Matchings, Student/Projekt-Zuweisungsproblem, Boston School Choice Problem, Top Trading Cycle Verfahren, Nierenvergabe für Transplantation mit TTCC, Cake Cutting and Lone Chooser Protokoll, Divide and conquer cake cutting Protokoll.

Seminar-Leitung

Prof. Dr. Mila Majster-Cederbaum

Technische Fragen: Dr. Philipp Wendler

Termine

Das Seminar findet als Blockveranstaltung an 5 Terminen statt:

  1. Freitag, 20.10.2023 14-16 Uhr: Vorbesprechung
  2. Freitag, 10.11.2023 14-18 Uhr: Kurzvorträge und Sprechstunde
  3. Freitag, 12.01.2023 14-18 Uhr: Seminarvorträge
  4. Samstag, 13.01.2024 9-18 Uhr: Seminarvorträge
  5. Freitag, 19.01.2024 14-17 Uhr: Gemeinsames Reviewing
Teilnahme an allen Terminen ist Voraussetzung für das Bestehen des Seminars! Überprüfen Sie daher vor der Anmeldung, ob Sie zu diesen Terminen Zeit haben.

Ablauf

  1. Zu Beginn des Semesters gibt es eine Einführungsveranstaltung (20.10.2023), bei der die Themen verteilt werden.

  2. Nach der Zuteilung der Themen haben Sie Zeit sich Ihr Thema näher anzusehen und eine Literaturrecherche zum Beispiel zu historischen Hintergründen und insbesondere zu Anwendungen Ihrer Algorithmen in der Praxis oder Erweiterungen/Varianten der Problemstellung durchzuführen.

  3. Beim ersten Seminartermin (10.11.2023) hält jeder Studierende einen kurzen Vortrag, ca. 5-10 Minuten, in dem das Thema und eine provisorische Gliederung des geplanten Vortrags vorgestellt wird.

  4. Sie haben danach einige Wochen Zeit die Folien Ihres Vortrags zu erstellen, der 45 Minuten (+ ca. 5 Minuten Diskussion) dauern soll. Diese senden Sie mir 1 Woche vor Ihrem Vortrag zur Korrektur per Email zu.

  5. Die Vorträge finden am 12.01.2024 und 13.01.2024. statt.

  6. Es soll eine Ausarbeitung von 10 (±10%) Seiten (Deckblatt und Inhaltsverzeichnis zählen nicht) an mich gesandt werden (Termin wird noch bekannt gegeben). Im Gegensatz zu den Folien, die eher stichpunktartig organisiert sind, ist die Ausarbeitung eine ausführliche Behandlung Ihres Themas.

  7. Am 19.01.2024 findet eine Abschlussbesprechung statt.

Sprache

Vortrag und Ausarbeitung können auf deutsch oder englisch sein. Vortrag und Ausarbeitung sollen in der gleichen Sprache erfolgen und selbstständig formuliert werden.

Bewertungskriterien

Hier werden Hinweise zur Bearbeitung der Themen gegeben. Die Nichteinhaltung wird in der Note berücksichtigt.

  1. Für alle Themen gilt: alle vorkommenden Begriffe sollen gut erklärt werden, z.B. an einem eigenen Beispiel / Gegenbeispiel. Ebenso sollen die Algorithmen/Protokolle dargestellt werden und an einem eigenen Beispiel erläutert werden. Die Aussagen zu den Algorithmen/Protokollen sollen präsentiert und erläutert werden. Beweise erfolgen in der Regel in der Ausarbeitung.

  2. Beweise dürfen nicht einfach nur abgeschrieben oder übersetzt werden.

  3. Quellen müssen klar und umfassend genannt werden.

  4. Copy und Paste aus Texten oder Darstellungen im Internet oder deren wortwörtliche Übersetzung sind nicht zulässig (Ausnahme: Zitate).
    Beachten Sie auch die Hinweise zum Umgang mit Plagiaten und Täuschungsversuchen.

  5. Es ist Vorsicht geboten, Veranschaulichungen aus dem Internet zu übernehmen. Diese sind nicht notwendig konform mit der von uns gewählten Literatur und auch nicht immer an Informatiker gerichtet und manchmal ziemlich salopp, insbesondere ohne Begründung der Korrektheit dessen, was da getan wird. In unseren Seminaren geht es aber um wissenschaftliches Arbeiten, z.B. auch um das Verstehen komplexerer formaler Konstrukte und Zusammenhänge. Veranschaulichen ist gut, ersetzt aber nicht das exakte Formale. Eine bloße Veranschaulichung, wie sie häufig im Internet zu finden ist, entspricht nicht dem, was in einem Seminarvortrag erwartet wird.

  6. Auch bei der Verwendung zusätzlicher Literatur muss man darauf achten, das die verwendeten Begriffe übereinstimmen, selbst kleine Veränderungen in einer Definition/ einem Algorithmus können weitreichende Konsequenzen haben.

Vortrag

  • Inhalt: Motivation und Einführung, Gliederung, Argumentationskette, Abstraktionsniveau, Vollständigkeit
  • Form: Form der Folien (Schriftgröße, Diagramme, Folien nicht überladen), freie Rede, sprachliche Verständlichkeit (deutliche Sprechweise, Wortwahl), Einhalten der Zeit

Der Vortrag soll ca. 45 Minuten dauern (+ ca. 5 Minuten Diskussion).

Ausarbeitung

  • Darstellung: Klarheit des Textes, sprachliche Gewandtheit, äußere Form, Rechtschreibung, Quellenangaben, sinnvolle Darstellung von Abbildungen
  • Hinführung: Abstract, Einleitung und Motivation
  • Hauptteil: Argumentationskette, Darstellung der Hauptresultate
  • Abschluss: Schlussbewertung und Zusammenfassung, Ausblick

Die Ausarbeitung soll ca. 10 (±10%) Seiten lang sein (Deckblatt und Inhaltsverzeichnis zählen nicht).

Hörerkreis

Bachelor Informatik oder Medieninformatik

Machine Learning (ML) and Artificial Intelligence (AI) are transformational technologies that will have a significant impact on science and business. The aim of this seminar is to give the student an overview of the topics of data & compute infrastructures, machine learning and AI. The aim is to develop a technical understanding of large-scale systems and infrastructures for data infrastructures and advanced analytics. The students deepen their computer science knowledge in a practice-oriented way and with methods, techniques, procedures, tools and infrastructures for the processing and analysis of large data:

  • Machine Learning (Methods & Tools: Tensorflow and Pytorch)
  • Deep Learning: Convolutional Neural Networks (ResNet, Yolo, SSD)
  • Natural Language Processing: Large Language Models, Knowledge Graphs
  • Scalable Machine Learning: Distributed Training, AI Hardware
  • Quantum Machine Learning: Variational Algorithms, Optimization
  • Emerging Machine Learning Applications in Computer Systems, Cybersecurity and Fault Tolerance
  • Responsible AI: AI Ethics, Robust AI

Geoinformationssysteme umfassen Systeme zur Speicherung, Darstellung und Analyse räumlicher Informationen wie zum Beispiel Satellitenaufnahmen, Kartendaten, oder Umweltmessungen.Typische Anwendungsgebiete sind dabei Mobilitätsplanung, Analyse von Umweltbeeinträchtigungen, Planung von Infrastruktur, räumliche Simulationen zur Klimaveränderungen und Fernerkennung räumlicher Veränderungen. Ein Schwerpunkt wird dabei auf die Analyse von Ursachen und Folgen des Klimawandels und Methoden zur Unterstützung nachhaltiger Lösungen gelegt, wie zum Beispiel der Erkennung von Buschbränden, der Fernerkennung von extremen Methanemissionen oder der Verkehrsoptimierung mittels künstlicher Intelligenz.

Voraussetzung zum Bestehen des Seminars ist die regelmäßige, aktive Teilnahme an den Vortragsterminen, das Präsentieren eines vorbereiteten Themas sowie die Abgabe einer Seminararbeit, die das Thema nochmal in schriftlicher Form darstellt.

Platzvergabe erfolgt über die Zentralanmeldung.

Malware (d.h. Viren, Trojaner und Würmer) entwickelt sich stetig weiter. Waren die ersten Viren in den 1970er Jahren noch eher vereinzelte Experimente, schafften es in den 90er Jahren einige Schadprogramme in die Medien, bevor sich in den 2000ern vor allem E-Mail-Würmer explosionsartig ausbreiten konnten. Mittlerweile dominieren kriminelle Organisationen und Geheimdienste das Geschehen und entwickeln hochspezialisierte Malware, von Verschlüsselungs-Trojanern zur Erpressung von Lösegeldern bis zu unauffälligen Hintertüren für Spionage und Sabotage.

In diesem Seminar betrachten wir sowohl die historische Entwicklung von Malware als auch aktuelle Trends. Verfügbare Themen werden akademische Arbeiten zur Malware-Analyse und Erkennung sein, aber auch detaillierte Berichte zu einzelnen prominenten Malware Exemplaren.

Voraussetzung für das Seminar ist ein Interesse für Maschinencode und Details von Betriebssystemen.

Neben den eigentlichem Inhalt sollen auch Grundlagen des wissenschaftlichen Arbeitens vermittelt werden.


Organization

Registration via  central registration process for Bachelor seminars

The seminar will be held in presence on Tuesdays, 14-16 in Oettingenstraße 67.

This seminar will be in English.

It is recommended to have attended the lecture “Formale Spezifikation und Verifikation” before.

Content

This seminar studies topics about validation of verification results. The goal of validation is to increase the trust in the validity of the result. Validation allows one to check that the verification was actually done and that the verification tool worked properly. In this seminar, we look into (1) protocols for validation, (2) validation techniques for several analyses like dataflow analysis, abstract interpretation, or model checking.

Under the guidance of your supervisor you will

  • use the given literature and may search for additional literature to become acquainted with your topic,
  • prepare and give a presentation about your topic and afterwards discuss the topic with the other participants,
  • write a scientific report, which provides a summary of your topic.

At the end of the seminar, students are able to autonomously familiarize themselves with a scientific topic and are able to present this topic to a heterogeneous audience orally and in written form.

The planned topics are:

Protocols for Validation
  • Proof-Carrying Code
  • Programs from Proofs
  • Certifying Algorithms
  • Amanat Protocol
  • Violation Witnesses
  • Correctness Witnesses
Approaches for Validation
  • Configurable Program Certification
  • Temporal Safety Proofs
  • Lightweight Bytecode Verification
  • Validating Dataflow Annotations
  • Abstraction-Carrying Code
  • Hoare Proofs from Abstract Interpretation
  • ...

In diesem Bachelorseminar sollen Themen vorgestellt werden, die sich mit dem Testen und der formalen Verifikation von Programmen beschäftigen. Ein Hauptschwerpunkt liegt dabei auf Programmen die Schleifen über Arrays beinhalten. Die Verifikation von solchen Programmen ist aus Sicht der Forschung immer noch eine große Herausforderung, insbesondere, weil die notwendigen Invarianten oft Quantoren benötigen. Ziel des Seminars ist also ein Überblick über aktuelle Techniken, Ansätze, und Tools.

Personen: Prof. Gidon Ernst, Marvin Brieger

Literatur und Themen werden noch bekanntgegeben.

Termin: Mi 10-12 065 (IFI) ab zweiter Woche des Semesters.


Anforderungen

  • selbstständige Einarbeitung in das jeilige Thema
  • Präsentation (ca 20min)
  • Schriftliche Ausarbeitung (ca 8-10 Seiten Springer LNCS)
  • regelmäßige Anwesenheit und Teilnahme im Seminar

In diesem Praktikum entwerfen, spezifizieren und implementieren die Studierenden unter Anleitung ein größeres Softwareprojekt.
Dabei werden die in den Vorlesungen "Einführung in die Programmierung" und "Programmierung und Modellierung" erlernten grundlegenden Konzepte und Techniken praktisch eingesetzt und erweitert. Des Weiteren werden Kenntnisse über Softwareentwicklungs-Tools wie Versionsverwaltungsprogramme (Git) oder Integrated Development Environments (IDE) vermittelt.

In der ersten Phase des Praktikums (Vorprojekt) werden nochmals grundlegende Fähigkeiten in der Programmentwicklung in Einzelarbeit geübt.

Nach Bestehen der ersten Phase, werden die Studierenden in Teams von 5-6 Personen aufgeteilt. In der Hauptphase des Praktikums wird dann eine größere Java-Applikation im Team entwickelt. Hierbei  können die Studierenden dann auch wertvolle Erfahrungen über Team- und Projektarbeit sammeln.


Time : Thursdays, 10 -12 a.m.
Place: Akademiestr. 7, 1st floor, room 105
11 SWS

Machine learning is changing the world. It can be found in almost all segments including healthcare services, education, transport, food, entertainment and many more. Specifically, in the field of computer vision, machine learning techniques have enabled programs to interpret and understand the world, sometimes even better than humans.
In this course, we will work on several projects to solve several computer vision tasks using python. The students will have a chance to get their hands on the classical (or potentially deep) machine learning algorithms in teams, and apply those techniques to some of the most interesting topics in computer vision such as image classification, segmentation, inpainting and image synthesis.

Überblick

Das Softwareentwicklungspraktikum in Python bietet Studierenden die Möglichkeit, praktische Erfahrungen in der Entwicklung von Softwareanwendungen zu sammeln. Das Praktikum wird in Gruppen von jeweils 6 Teilnehmern durchgeführt und besteht aus zwei Hauptkomponenten: einem Vorprojekt und einem Hauptprojekt. Während des Vorprojekts werden grundlegende Fähigkeiten und Konzepte in Python (optional auch in Java) vermittelt, um die Teilnehmer auf das Hauptprojekt vorzubereiten. Das Hauptprojekt ermöglicht es den Teilnehmern, ihre Kenntnisse anzuwenden und eine voll funktionsfähige Softwarelösung zu entwickeln.


Einschreibeschlüssel: sepnf2324


Anmeldeschlüssel: swtwise2324

In der Vorlesung werden Methoden und Techniken zur Entwicklung großer Software-Systeme besprochen.
Besonders wird auf objektorientierte Methoden und Techniken eingegangen. Zur System-Modellierung
wird die Sprache UML (Unified Modeling Language) verwendet. Schwerpunkte der Vorlesung sind:

  • Modellierung der statischen Systemeigenschaften durch Klassendiagramme
  • Modellierung des dynamischen Verhaltens durch Interaktions-, Zustands- und Aktivitätsdiagramme
  • Anwendungsfall-gesteuerte Systemanalyse
  • Objektorientierter Entwurf
  • Realisierung von Zustandsdiagrammen
  • Anbindung an Benutzerschnittstelle und Datenbank
  • Entwurfsmuster
  • Transformation von Modellen in Java-Code