Lehrveranstaltungen

Hier finden Sie eine Übersicht aller Bachelorveranstaltungen in Informatik. Für aktuelle Angaben zu laufenden Vorlesungen verweisen wir auf das elektronische Vorlesungsverzeichnis und auf der von uns zusammengestellten Liste.

Masterveranstaltungen finden im Rahmen des Swiss Joint Master of Science in Computer Science statt, einem Studiengang der Universitäten Bern, Neuenburg und Freiburg.

1. Semester

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Das Ziel dieser Veranstaltung ist, eine Übersicht über die wichtigsten Themen und Grundbegriffe der Informatik zu vermitteln. Pro Doppelstunde wird jeweils ein in sich abgeschlossenes Thema vorgestellt und in der dazugehörenden Übungsstunde praktisch vertieft. Die Vorlesung behandelt Begriffe wie Algorithmus, Rekursion, Parallelität, Analyse von Algorithmen, formale Automaten, Grammatiken, Berechenbarkeit, Diskretisierung, Simulation und Datenbanken. Die Vorlesung beinhaltet theoretische und praktische Übungen. Vorkenntnisse in Informatik werden keine verlangt.

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Diese Vorlesung legt die Grundlagen zum Verstehen des Aufbaus moderner Mikroprozessoren, wobei das Hauptaugenmerk mehr auf der logischen Sichtweise liegt und weniger auf der konkreten technischen Realisierung. Zunächst betrachten wir, wie ein Computer mit nur zwei Werten, 0 und 1, rechnen kann und wie daraus für Menschen lesbare Buchstaben und Zahlen werden. Es zeigt sich, dass nur sehr wenige einfache Bausteine notwendig sind, um "alles" berechnen zu können, theoretisch sogar nur einer! Sukzessive werden aus diesen Elementarbausteinen immer komplexere Schaltungen entwickelt, wie ein Addierwerk zum Addieren von Zahlen und Flip-Flops zum Speichern von Informationen. Ferner werden Methoden vorgestellt, wie man Schaltungen vereinfachen und Fehler in denselben erkennen kann. Viele dieser komplexeren Bausteine werden in der Praxis beim Design von Prozessoren in vielfältiger Weise verwendet.
Lernziele
Die Studierenden kennen die mathematischen Grundlagen der Booleschen Algebra und können diese anwenden, um logische Schaltung zu entwickeln, zu vereinfachen und zu testen. Sie kennen die Funktionsweise der verschiedenen Arten von Flip-Flops und können diese einsetzen um Schaltwerke zu realisieren.

Vorlesung mit Übungen, 5 ECTS

Beschreibung
In dieser Vorlesung wird eine Einführung in die Programmierung anhand der Sprache Java gegeben. Die Grundprinzipien der objektorientierten Programmierung (Objekte, Klassen, Nutzung, Vererbung) werden vorgestellt und eingeübt. Für die praktische Arbeit stehen LINUX-Rechner zu Verfügung.
Lernziele
Die Studierenden sind vertraut mit den Grundelementen der Programmierung in Java und den wichtigsten Prinzipien der objektorientierten Programmierung (Objekte, Klassen, Vererbung, Polymorphismus etc.).

2. Semester

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Diese Vorlesung bietet eine umfassende Einführung in die Theorie und Praxis relationaler Datenbanken. Sie beginnt mit einer mathematisch präzisen Darstellung des relationalen Modells und der relationalen Algebra. Darauf basierend wird die Datenbanksprache SQL vorgestellt und anhand zahlreicher praktischer Beispiele besprochen. Weiter werden die grundlegenden Prinzipien des Schemaentwurfs sowie Normalformen vermittelt. Wir behandeln auch weiterführende Themen wie logische und physische Query-Optimierung oder Transaktionsverarbeitung.
Lernziele
Die Studierenden kennen das relationale Modell und die Prinzipien des Schemaentwurfs (inkl. 3 Normalform und BCNF). Sie können diese in der Praxis anwenden. Sie kennen die Techniken der Transaktionsverarbeitung und der Query-Optimierung. Sie sind in der Lage auch komplexe Datenbankanwendungen zu entwickeln.

Vorlesung mit Übungen, 5 ECTS

Beschreibung

Datenstrukturen und Algorithmen bilden die Grundbausteine aus denen Computerprogramme aufgebaut sind. In dieser Vorlesung stellen wir einige der wichtigsten Algorithmen vor, die als universelle Bausteine zahllose Anwendungen in grösseren Systemen haben. Dazu gehören Algorithmen zum Sortieren und Suchen von Daten sowie Algorithmen, um Optimierungs- und Graphenprobleme zu lösen. Wir behandeln weiter grundlegende Strategien zum Entwurf und zur Analyse von Algorithmen. Bei der Analyse interessiert uns vor allem die Frage der Effizienz von Algorithmen, welche für die praktische Anwendung oft entscheidend ist. Viele Vorlesungen innerhalb des Informatikstudiums greifen auf das in dieser Veranstaltung vermittelte Basiswissen zurück, und Kenntnisse des Stoffs können bei der Lösung vieler praktischer Programmierprobleme von grossem Nutzen sein.

Theoretische und praktische Übungen vertiefen das vermittelte Wissen mit dem Ziel, Datenstrukturen und Algorithmen selber entwerfen, analysieren und implementieren zu können, bzw. diese in eigenen Programmen sinnvoll einsetzen zu können. Programmiersprache ist Java. Voraussetzungen sind grundlegende Kenntnisse in Informatik (z. B. Vorlesung "Einführung in die Informatik") und Kenntnisse in Java-Programmierung auf der Stufe der Vorlesung "Programmierung 1".

Lernziele
Die Studierenden lernen einige der wichtigsten Algorithmen in der Informatik zu verstehen und zu analysieren. Sie sind vertraut mit den Grundbegriffen der Analyse von Algorithmen bezüglich Effizienz und Korrektheit, haben verschiedene Entwurfsstrategien von Algorithmen verstanden und können diese auf neue Probleme anwenden. Zudem entwickeln sie ein Bewusstsein der Relevanz von effizienten Algorithmen für die Entwicklung von Softwaresystemen in der Praxis.

Vorlesung mit Übungen, 5 ECTS (Webseite)

Description

This course provides an introduction to object-oriented design, with emphasis on the following themes: How does Responsibility-Driven Design help you to decompose a complex system into objects? How does Design by Contract help you to develop robust software? How do you make use of inheritance to design flexible and generic software systems? How do iterative and incremental development and continuous refactoring help you to arrive at a clean and understandable design? How do you effectively test software? How do you avoid developing complex and unmaintainable code by consistently applying simple design principles? What kinds of known design patterns help you to simplify your software? How do you develop software that communicates its own design? How do you effectively use tools like debuggers, version control systems, and integrated development environments?

Vorlesung mit Übungen, 5 ECTS

Description
In computer science there are many applications, such as computer simulations, financial transactions and medical telesurgery, where performance is of paramount importance. To write successful programs for such applications, a programmer needs to understand what factors affect performance. This course shows a deep analysis of these factors from the perspective of computer architecture, including both hardware and software. The course provides a brief introduction to the C programming language and then proceeds with the MIPS assembly language, the analysis of computer performance, the description of computer architecture and advanced techniques to gain performance such as pipelining, dealing with hazards, memory architectures, and I/O systems.
Learning Outcomes
Students will learn
  • how the major components of a computer including CPU, memory, I/O and storage operate and are interconnected,
  • the uses for cache memory,
  • a wide variety of memory technologies both internal and external,
  • the basic components of the CPU including the ALU and control unit,
  • the MIPS assembly programming language,
  • design principles in instruction set design including RISC architectures.

3. Semester

Vorlesung mit Übungen, 5 ECTS

Beschreibung
In der Vorlesung "Computernetze" werden die Grundlagen zum umfassenden Verständnis von modernen Kommunikationssystemen gelegt, und zwar von den physikalischen Aspekten bis zu den Anwendungsszenarien. Die Vorlesung ist gemäss dem ISO/OSI Schichtenmodell gegliedert. Dieses Modell teilt die Komplexität moderner Computernetzwerke in funktionale Einheiten ein. Die Schichten sind u.a. die physikalische Schicht, Sicherungs-, Netzwerk- und Applikationsschicht. Die behandelten Themen decken also das ganze Spektrum ab, beginnend bei physikalischen Übertragungstechnologien. Danach werden erste Protokolle studiert, welche die korrekte Übermittlung zwischen zwei Computern sicherstellen. Es folgen Themen wie Routing Protokolle, welche für die Wegewahl im Netzwerk zuständig sind, oder Transportprotokolle, welche die Ende zu Ende Übertragung sicherstellen. Der eigentliche Zweck all dieser Technologien ist natürlich, dass der Benutzer Applikationen laufen lassen kann, die gegen Ende der Vorlesung im Zentrum stehen. Ferner werden auch noch Möglichkeiten zur Sicherung und zum Management von Computernetzen behandelt werden. Schlagworte: Internet, IP, TCP, WLAN, Ethernet, HTTP, FTP, IPsec, SNMP, SMTP, etc.
Lernziele
Nach dem erfolgreichen Besuch der Veranstaltung sollten Studierende in der Lage sein,
  • die grundlegenden Übertragungs- und Kodierungstechniken auf der physikalischen Ebene zu beschreiben und zu vergleichen
  • Mechanismen zum Zugriff auf die Übertragungsmedien sowie die darauf aufsetzenden Sicherungsmechanismen zu beschreiben und zu bewerten
  • die verschiedenen Konzepte zur Vermittlung in Netzen zu beschreiben und zu vergleichen
  • die wichtigsten Protokolle im Internet (Internet Protocol, Transportprotokolle wie TCP und UDP, Routing) zu beschreiben
  • das Prinzip der Socket-Programmierung zu verstehen und anzuwenden
  • Dienste und Anwendungen, welche auf Transportprotokollen aufsetzen, zu verstehen und zu beschreiben
  • die Zusammenhänge und Wechselwirkungen zwischen den einzelnen Protokollen zu verstehen

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Diese Veranstaltung führt Sie in diskrete Mathematik und Logik ein und stellt eine Reihe von zentralen Methoden und Konzepten vor. Sie sollen unter anderem auch Erfahrung sammeln, mit diesen Begriffen und Techniken in einem informatischen Kontext (mathematisch) präzise umzugehen. Diskrete Mathematik ist ein Teilgebiet der Mathematik, das sich hauptsächlich mit endlichen und abzählbaren Strukturen beschäftigt. Wir beginnen mit einer kurzen Einführung in die (halb-) formale Sprechweise und einigen kombinatorischen Prinzipien. Im Anschluss daran werden zahlentheoretische Eigenschaften betrachtet, die es uns erlauben, den Euklidische Algorithmus sowie das berühmte Kryptosystem von Ronald L. Rivest, Adi Shamir und Leonard Adleman zu diskutieren. Im Anschluss daran folgt eine kurze Einführung in Graphentheorie mit dem Ziel, exemplarisch eine Reihe wichtiger Eigenschaften von Graphen und graphentheoretischer Algorithmen präzise zu entwickeln. Im Logik-Teil stehen algorithmische Aspekte der Aussagenlogik im Vordergrund. Nach einer Einführung in die Syntax und Semantik der klassischen Aussagenlogik studieren wir vor allem das für die Informatik zentrale Problem der Beweissuche. Den Abschluss bildet ein kurzer Überblick über das Resolutionsverfahren für die klassische Aussagenlogik, das zum Beispiel im Kontext des automatischen Beweises, der Logik-Programmierung und von Expertensystemen von einiger Bedeutung ist.
Lernziele
Nach einem erfolgreichen Besuch dieser Vorlesung sind die Studierenden mit einigen wichtigen Grundbegriffen der diskreten Mathematik und klassischen Aussagenlogik, die für die Informatik zentral sind, gut vertraut und in der Lage, damit selbständig zu arbeiten. Fragen der Korrektheit und Effizienz algorithmischer Verfahren können anhand einiger Beispiele detailliert erläutert werden.

Vorlesung mit Übungen, 5 ECTS (Webseite)

Description

The goal of this course is to provide an introduction to the key concepts of Software Engineering. The course will focus on the use of agile software processes, object-oriented methods, UML and other industrial best practices to successful completion of software projects. The follow themes will be explored: How can you effectively determine and agree on what a customers really needs? How can you ensure that the software product being developed will satisfy non-functional requirements, such as user-friendliness, robustness, reliability and extensibility? How do you plan a software project and manage a project developed in a team? What tools are available to help support you in a software project? The exercises for the course will consist of a small software project to be developed by the students in teams over the course of the semester.

4. Semester

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Der Themenbereich Automaten und formale Sprachen deckt ein klassisches Gebiet der Informatik ab, das eine Vielzahl von Konzepten bereitstellt, mit denen sich wichtige Fragestellungen und Probleme der Informatik systematisch und mathematisch fundiert behandeln lassen. Automaten und formale Sprachen unterstützen z. B. die Programm- und Systemkonstruktion sowie die Entwicklung der zugehörigen Bausteine (Programme, Protokolle, Datenbanken, ...). Sie helfen bei der Klassifizierung von Systemtypen und stellen adäquate Beschreibungsmethoden für den Aufbau komplexer Systeme zur Verfügung. Typische Anwendungsbereiche: Programmiersprachen, Compilerbau, Berechenbarkeits- und Komplexitätstheorie, Mustererkennung, Computerlinguistik. Im Mittelpunkt der Veranstaltung stehen folgende Themen: Endliche Automaten, Kellerautomaten, Turing-Maschinen; Reguläre Sprachen, Chomsky-Hierarchie formaler Sprachen; Prädikatenlogik erster Stufe.
Lernziele
Chomsky-Hierarchie und Grammatiken. Automatentheorie (endliche Automaten, Kellerautomaten, Turingmaschinen). Reguläre Ausdrücke.

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Im Zentrum des ersten Teils der Vorlesung stehen verschiedene Formalisierungen des intuitiven Algorithmusbegriffs und die These von Church. Die Konzepte der algorithmischen Entscheidbarkeit und Semi-Entscheidbarkeit sowie die Grenzen der theoretischen Berechenbarkeit werden eingehend untersucht. Im zweiten Teil der Vorlesung wird eine kurze Einführung in die Komplexitätstheorie gegeben, dabei werden die Grenzen der praktischen Berechenbarkeit besprochen. Im Vordergrund stehen die Klassen P und NP, die Theorie der NP-Vollständigkeit und die P ≠ NP Vermutung.
Lernziele
Die Studierenden sind mit verschiedenen Formalisierungen des intuitiven Algorithmusbegriffs (Turingmaschinen, WHILE-Programme, mu-rekursive Funktionen etc.) vertraut. Sie sind in der Lage, diese Modelle zum Studium der Grenzen der Berechenbarkeit einzusetzen und können algorithmisch unlösbare Probleme identifizieren und klassifizieren. Die Studierenden kennen die Grundzüge der Komplexitätstheorie, insbesondere die Komplexitätsklassen P und NP, die Theorie der NP-Vollständigkeit und das Theorem von Cook und Levin. Sie sind mit der P!=NP Vermutung vertraut. Zahlreiche Beispiele von NP-vollständigen Problemen sind den Studierenden bekannt.

Vorlesung mit Übungen, 5 ECTS

Beschreibung
Diese Vorlesung behandelt den Aufbau und die Funktionsweise moderner Betriebssysteme. Behandelte Themen sind die Prozessverwaltung, Dateisysteme, Ein-/Ausgabe sowie Sicherheit. Kenntnisse von Rechnerarchitektur, Datenstrukturen und Programmierung werden vorausgesetzt.
Lernziele
Studierende sollten nach erfolgreichem Besuch der Veranstaltung in der Lage sein die grundlegenden Funktionen und Dienste von Betriebssystemen zu beschreiben und zu erklären. Dies betrifft insbesondere Teilaspekte, welche mit den Ressourcen eines Rechners zu tun haben, wie CPU, Speicher und Ein-/Ausgabegeräte. Studierende sollten auch in der Lage sein
  • Verfahren zur Verwaltung und zum Scheduling von Threads zu beschreiben, zu erklären und zu bewerten,
  • Mechanismen zur Synchronisation und Behandlung von Verklemmungen von Prozessen zu beschreiben,
  • die grundlegenden Verfahren zur Hauptspeicherverwaltung und zur Realisierung von virtuellem Speicher zu erklären und zu bewerten,
  • die Möglichkeiten zur Implementierung von (verteilten) Dateisystemen und Ein-/Ausgabe zu beschreiben.

Praktikum, 5 ECTS

Beschreibung
Im Praktikum Software Engineering entwickeln unsere Studentinnen und Studenten Softwareprojekte von A bis Z. Dabei arbeiten sie selbständig in Gruppen. Zusätzlich gibt es ein wöchentliches Treffen, wo sie verschiedene Aspekte der Projekte (organisatorisch, technisch, etc.) vorstellen müssen. Die Projekte erfolgen jeweils im Auftrag von externen Kunden. In der Vergangenheit waren dies unter anderem: Cassarius AG, Swisscom, Web-ID GmbH, SBB, Lumrix GmbH, Informatikdienste Universität Bern, etc.
Lernziele
Insbesondere können sie diese einsetzen, um
  • mit offenen Anforderungen umzugehen,
  • sich rasch in neue Technologien einzuarbeiten,
  • ein komplettes Produkt zu entwickeln, zu testen und einzuführen.
  • Die Studierenden können die Methoden des Software Engineering erfolgreich anwenden.

5. Semester

Vorlesung mit Übungen (Webseite)

Beschreibung
Diese Vorlesung bietet eine Einführung in die 3D Computergrafik. Der Stoff umfasst die Grundlagen der 3D Bildgenerierung und Modellierung, wobei der Schwerpunkt auf interaktiven Anwendungen liegt. Wir behandeln unter anderem die Repräsentation von 3D Geometrie, 3D Transformationen, Projektionen, Rasterisierung, Grundlagen zu Farben und Beleuchtungsmodellen sowie die Programmierung moderner Graphics Processing Units (GPUs). Die Übungen zur Vorlesung vertiefen den Stoff mit Programmierprojekten basierend auf Java und OpenGL. Die Vorlesung setzt den Stoff der ersten zwei Studienjahre voraus. Als Programmiersprache kommt Java zum Einsatz. Kenntnisse von OpenGL sind keine Voraussetzung.
Lernziele
In dieser Vorlesung erwerben Studierende folgende Kenntnisse und Fähigkeiten:
  • die mathematischen Grundlagen der 3D Grafik beschreiben und anwenden (Koordinatensysteme, Koordinatenwechsel, homogene Koordinaten, Matrixoperationen, Transformationsmatrizen für Rotation, Translation und Projektion),
  • Grundlagen der Verarbeitung und Darstellung von Farbinformation und deren Zusammenhänge mit dem menschlichen Sehsystem beschreiben (Tristimulustheorie, Farbräume, Farbtransformationen, Gammakorrektur und Tone Mapping),
  • Grundbegriffe der Radiometrie und des Lichttransports beschreiben und anwenden (Radianz, Irradianz, Bidirectional Reflectance Distribution Function (BRDF) und verschiedene Beleuchtungsmodelle),
  • Hardware Architektur von 3D Grafikprozessoren beschreiben (Grafikpipeline, Framebuffer, Graphics Processing Unit (GPU), Data Parallelism, Single Instruction Multiple Threads (SIMT) Programmiermodell),
  • die Software Architektur von 3D Grafikprogrammen beschreiben,
  • Datenstrukturen für 3D Grafikanwendungen beschreiben und anwenden (Mesh Datenstrukturen und hierarchische Szenengraphen),
  • spezielle Techniken der Grafikprogrammierung beschreiben und anwenden (Shaderprogrammierung, Texture Mapping, Bump Mapping, Shadow Mapping),
  • 3D Grafik Programmierschnittstellen wie OpenGL und GLSL zusammen mit einer objektorientierten Programmiersprache wie Java anwenden, um eigene 3D Applikationen zu entwickeln.

Vorlesung mit Übungen, 5 ECTS

Description
This course covers fundamental topics in machine learning and pattern recognition. The course will provide an introduction to supervised learning, unsupervised learning, classical learning theory, and reinforcement learning. The approach used throughout the course is mostly based on convex optimization theory. However, it is not necessary to have a background in optimization as the methods presented will be self-contained. The course requires students to be familiar with the basics of linear algebra and probability theory. A brief review of these subjects will be carried out during the exercise sessions.
Learning Outcomes
On satisfying the requirements of this course, students will have the knowledge and skills to:
  • Understand a number of models for supervised, unsupervised, and reinforcement machine learning
  • Describe the strength and weakness of each of these models
  • Understand the mathematical background from Linear Algebra, Statistics, and Probability Theory used in these machine learning models
  • Implement efficient machine learning algorithms on a computer
  • Design test procedures in order to evaluate a model
  • Combine several models in order to gain better results.
  • Make choices for a model for new machine learning tasks based on reasoned argument.

Vorlesung mit Übungen, 5 ECTS

Beschreibung
In dieser Vorlesung wird eine allgemeine Einführung in das Gebiet der Human-Computer-Interaction gegeben. Im Vordergrund stehen Modelle und Methoden zur benutzergerechten Gestaltung von interaktiven Systemen, wobei auch einfache psychologische und kognitionswissenschaftliche Aspekte besprochen werden sollen. Diese Vorlesung benötigt keine besonderen Vorkenntnisse und setzt keine anderen Vorlesungen voraus; sie kann deshalb zu einem beliebigen Zeitpunkt im Bachelorstudium (Haupt- oder Nebenfach Informatik) besucht werden.
Lernziele
Die Studierenden sind vertraut mit den wichtigsten Methoden und Modellen zur benutzergerechten Gestaltung von interaktiven Systemen (z. B. Interaktionsmodelle, Design-Regeln, Evaluationstechniken, universelles Design, kognitive Modelle, Dialog-Notationen). Sie können diese an konkreten Beispielen anwenden.

6. Semester

Abschlussarbeit, 10 + 5 ECTS

Beschreibung
Individuelle Arbeit zu einem aktuellen Forschungsgebiet bei einer unserer Forschungsgruppen.
Informieren Sie sich bei den Forschungsgruppen, welche Themen für eine Bachelor Arbeit angeboten werden.

Seminar, 5 ECTS

Description
The seminar is composed of presentations about current research topics that are investigated in the context of bachelor, master or PhD works. Bachelor students may take the seminar as "Proseminar". In this case, the students and the seminar supervisor must agree upon the topic beforehand.

Seminar, 5 ECTS

Description
The goal of the computer graphics seminar is to introduce students to current research in computer graphics. Topics vary each semester, and range from 3D rendering, modeling, and animation, to image processing and computational photography. The seminar includes lectures by the instructor and external guests to introduce selected topics. In addition, we will read and discuss recent research papers. The seminar also provides the opportunity for students pursuing Bachelors and Masters projects to present their work.
Lernziele
Upon successful completion of this class, you will be able to:
  • Independently read and understand research papers in computer graphics
  • Deepen your understanding of current research in computer graphics by discussing it with your peers
  • Critically analyze current research in computer graphics and develop your own research questions and research ideas
  • Develop, prepare, and deliver presentations of your own scientific research projects, or presentations of research papers by other authors.

Seminar, 5 ECTS

Description
This course will cover the basics on soft skills such as: critical analysis, scientific writing, presenting, peer reviewing, team work and program management. The course will use publications in computer vision and machine learning as examples to illustrate and practice each soft skill. Most of the work will be done and evaluated in class. Some sessions may be substituted by seminars.
Learning Outcomes
Upon successful completion of the course the student
  • will be able to read and critically analyze scientific publications in computer vision
  • will have developed presentation skills and the ability to discuss and answer questions
  • will have developed scientific writing skills
  • will be able to work in teams or independently and manage his/her time
  • will be able to review work of his/her peers
  • will have analysed and discussed work in computer vision/machine learning

Seminar, 5 ECTS

Description
Students as well as members of the Logic and Theory Research Group (LTG) present their current work. The main topics are: explicit mathematics and operational set theory, subsystems of second order arithmetic and set theory, systems of bounded arithmetic and bounded set theory, modal logics.
A general platform for students interested in theoretical computer science, logic, and the foundations of mathematics.
Learning Outcomes
Students are able to give a coherent talk about their ongoing research activities and to present their work to an interested audience.

Seminar, 5 ECTS

Description
This is a seminar for Masters students in the Swiss Joint Master of Science in Computer Science as well as Bachelors, Masters and PhD students completing their project work or thesis in the Software Composition Group. Scheduled talks generally cover recent progress in project work or research.
Learning Outcomes

The seminar consists of a project and a presentation. You will have as a mentor one of the members of the SCG group and will work on a practical and focused problem in the domain of programming languages and programer productivity tools.

Seminar students will work on a small, supervised project during the semester. Due to the high cost of supervision, participation is strictly limited (selection will be based on the results of a short quiz).

After the successful completion of this course, you will be able to:

  • Build an Eclipse plugin for static analysis, or
  • Write a crawler that analyzes open source software repositories, or
  • Create a new method of visualizing software systems, or
  • Work on the design and implementation of programming language tools