KursbeschreibungDieser Kurs führt in die Grundlagen der Wahrscheinlichkeitstheorie und der mathematischen Statistik ein. Er ist ein Pflichtmodul für Studierende mit dem Studienabschluss "Bachelor" und sollte in der Regel im zweiten Semester bearbeitet werden. Vorausgesetzt werden Grundkenntnisse aus Analysis und linearer Algebra etwa im Umfang des Kurses 01141 "Mathematische Grundlagen".
KursbeschreibungIn diesem Modul lernen die Studierenden die Grundzüge des wissenschaftlichen Arbeitens
in der Informatik kennen. Es wird auf die geschichtliche Entwicklung der Informatik
eingegangen und diskutiert, welche Teilgebiete es in der Informatik gibt, und wie diese
inhaltlich abgegrenzt sind. Den Studierenden wird ein Einblick in allgemeines
wissenschaftliches Arbeiten gegeben. Dies beinhaltet unter anderem Themen wie richtiges
Zitieren, Empfehlungen zur Literaturrecherche und Kernpunkte der Wissenschaftsethik. Im
Kurs werden außerdem Grundkenntnisse im Textsatzsystem LaTeX vermittelt.
KursbeschreibungDie Elementare Zahlentheorie beschäftigt sich mit Phänomenen der ganzen Zahlen, etwa Fragen der Teilbarkeit. Üblicherweise wird ein Kurs zur Elementaren Zahlentheorie für Studierende gegen Ende des Bachelor-Studiengangs angeboten. Das ist allerdings nicht zwangsläufig, und dieser Kurs verfolgt einen anderen Ansatz: Er richtet sich an Studierende des ersten oder zweiten Semesters. Zu Bearbeitung werden keine Vorkenntnisse außer denen, die im ersten Kapitel (nicht erste Lektion, sondern erstes Kapitel) der Mathematischen Grundlagen vermittelt werden, benötigt.
Neben der Vermittlung mathematischer Inhalte (Teilbarkeit, Primzahlen, Kongruenzen, Lösungen von Gleichungen der Form X^n+Y^n=Z^n, Summe von Quadraten und Gauß'schen Zahlen) verfolgt der Kurs noch ein weiteres Ziel, nämlich eine Heranführung an den Gebrauch eines Computeralgebrasystems (hier Maple) zum Experimentieren und zur Bearbeitung mathematischer Fragen.
Ein Zahlentheoretiker hat folgende schöne Metapher verwendet: "Elementare Zahlenthoerie ohne Computer ist etwa so, wie Astronomie ohne Fernrohr. Natürlich kann man das machen, aber warum sollte man das tun?"
Der Kurs umfasst 7 Lektionen, zu denen jeweils vier Einsendeaufgaben bearbeitet werden sollen.
KursbeschreibungDieses Modul behandelt ausgewählte Entscheidungsmodelle und -methoden, die in unternehmensweiten Softwaresystemen Anwendung finden. Im Vordergrund stehen dabei die diskrete ereignisorientierte Simulation und Entscheidungsmodelle und -methoden in APS- und SCM-Systemen. Typische Betrachtungsgegenstände der Modellierung und Simulation mit dem Fokus auf diskreter ereignisorientierter Simulation für Produktionssysteme werden behandelt. Die einzelnen Schritte einer Simulationsstudie werden beschrieben. Das Modul behandelt die Funktionsweise moderner diskreter ereignisorientierter Simulationssoftware. Typische Betrachtungsgegenstände der Modellierung und Simulation von Produktionssystemen werden eingeführt. Weiterer Gegenstand des Moduls sind Planungs- und Steuerungsprobleme für die Produktionsdomäne.
Voraussetzungen:
Absolvierung des 1., 2. und 3. Semesters (Algorithmische Mathematik und Betriebliche Informationssysteme).
Für folgende Studiengänge vorgesehen:
Bachelor Wirtschaftsinformatik
Master Wirtschaftsinformatik
Informatikstudiengänge entsprechend der Prüfungsordnung
Nebenfach Informatik entsprechend der Prüfungsordnung
KursbeschreibungDiese Lehrveranstaltung bietet eine tiefe Auseinandersetzung mit dem Forschungsgebiet der formalen Argumentation. In diesem Teilbereich der Künstlichen Intelligenz geht es um die Modellierung und das automatische Schlussfolgern in argumentativen Szenarien, wie beispielsweise zur Entscheidungsunterstützung im Rechtswesen oder medizinischen Anwendungen. Nach einer allgemeinen Einführung und Auffrischung wichtiger Grundlagen wie Logik, Graphentheorie und Komplexitätstheorie, werden zunächst die sogenannten abstrakten Argumentationsgraphen und verschiedene Methoden der semantischen Evaluation solchen Graphen vorgestellt, insbesondere komplexitätstheoretische Fragestellungen. Anschließend werden mit semi-abstrakten Argumentationsgraphen Erweiterungen der abstrakten Argumentationsgraphen diskutiert, die zusätzliche Aspekte argumentativer Szenarien einbeziehen. Weiterhin werden strukturierte Ansätze der formalen Argumentation vorgestellt und analysiert. Abschließend werden noch einige Aspekte der dynamischen Betrachtung von argumentativen Szenarien diskutiert.
KursbeschreibungDie Überschriften der Paragraphen, die sich auf sieben Lektionen verteilen, lauten:
Der Körper C der komplexen Zahlen; konvergente Folgen und Reihen im Komplexen; stetige Funktionen und zusammenhängende Räume; kompakte Konvergenz; komplex differenzierbare Funktionen; komplexe Integralrechnung; Wegunabhängigkeit von Integralen, Stammfunktionen; Integralsatz und Integralformel; holomorphe Funktionen; Fundamentalsätze über holomorphe Funktionen; Cauchysche Integralformeln für Ableitungen; Werteverhalten holomorpher Funktionen; isolierte Singularitäten, Laurentreihen; allgemeiner Cauchyscher Integralsatz, Residuensatz.
KursbeschreibungDie Veranstaltung ist in drei Teile geteilt. Im ersten Teil wird, basierend auf der Einführung in die imperative Programmierung mit C# in der Veranstaltung Grundlagen der Informatik 1, in die objektorientierte Programmierung eingeführt. Grundlegende Strukturbegriffe wie Objekt, Klasse oder Schnittstelle werden eingeführt, eingeordnet und in C# praktisch eingesetzt. Wichtige Aspekte der Objektorientierung wie Vererbung, Überschreiben, Verdecken und Überladen von Methoden, dynamische Bindung und das Geheimnisprinzip werden theoretisch und praktisch erarbeitet.
Im zweiten Teil werden Algorithmen und Datenstrukturen mit einem besonderen Schwerpunkt auf Rekursion und dynamische Programmierung besprochen, um grundlegende Techniken für den Entwurf effizienter Algorithmen zu erwerben. Ergänzend zu den Darstellungen zu Rechnernetzen aus Grundlagen der Informatik 1 wird ein kurzer Überblick über Grundprinzipien der Kryptographie gegeben. Alle algorithmischen Überlegungen werden praktisch mit C# erprobt.
Aus der Perspektive der Grenzen der Algorithmik wird im dritten Teil der Lehrveranstaltung die Berechenbarkeits- und Komplexitätstheorie motiviert. In diesem Teil werden zunächst Beweistechniken besprochen, um nachzuweisen, dass ein Problem unentscheidbar oder NP-hart ist, bevor mithilfe der Chomsky-Hierarchie die Möglichkeiten eingeschränkter Rechenmodelle erläutert werden. Ein besonderer Schwerpunkt wird hierbei auf endliche Automaten für reguläre Sprachen gelegt. Die theoretischen Überlegungen werden in enger Anlehnung an die Programmiersprache C# dargelegt.
KursbeschreibungDieser Kurs beschäftigt sich mit den Grundlagen für das Arbeiten mit formalen Berechnungsmodellen. Es werden hierzu formale Sprachen auf Grundlage der Chomsky Hierarchie untersucht. Zu jeder Klasse in der Chomsky Hierarchie wird ein abgeleitetes Berechnungsmodell vorgestellt und diskutiert (Endlicher Automat, Kellerautomat, Turingmaschine). In diesem Zusammenhang werden unter anderem folgende Themen behandelt: Minimierung Endlicher Automaten, Überführung von Regulären Ausdrücken, Äquivalenz von kontextfreien Grammatiken und Kellerautomaten, Beweis und Anwendung des Pumpinglemmas (regulär und kontextfrei), und anderes. Es wird ausführlich auf das Konzept der Nichtberechenbarkeit eingegangen. Außerdem wird eine Einführung in die Komplexitätstheorie gegeben. In diesem Zusammenhang werden die Komplexitätsmaße Zeit und Speicherplatz eingeführt. Abschließend wird das P-vs-NP-Problem und die NP-Vollständigkeitstheorie eingehend behandelt.
KursbeschreibungGruppen sind fundamentale algebraische Objekte, die in der Gestalt von Symmetriegruppen nicht nur in der Algebra, sondern auch in anderen Teilen der Mathematik und in Anwendungen (z.B. Kristallographie, Quantentheorie) eine wichtige Rolle spielen. In diesem Modul wird die Theorie der Gruppen von Grund auf entwickelt.
Es handelt sich um eine fortgeschrittene Lehrveranstaltung, die allerdings nur Vorkenntnisse aus der "Linearen Algebra" voraussetzt.
Behandelt werden:
- Grundlagen der Gruppentheorie
- Gruppenwirkungen
- die Theorie der freien Gruppen
- Präsentationen von Gruppen
- abelsche und auflösbare Gruppen
- Bass-Serre Theorie
- geometrische Gruppentheorie
- hyperbolische Gruppen
KursbeschreibungInformationsvisualisierung kann Menschen wesentlich darin unterstützen, den Umfang von Informationskollektionen zu erfassen, deren Beschaffenheit zu verstehen und darin enthaltene relevante Informationen zu erkennen. Angemessene Visualisierungsmethoden für den Einsatz in Benutzungsschnittstellen von Informationssystemen zu finden, gewinnt daher zunehmend an Bedeutung.
Der Kurs führt zunächst in grundlegende Begrifflichkeiten der Informationsvisualisierung ein und kategorisiert deren Techniken. Danach werden die wichtigsten Informationsvisualisierungstechniken und deren grundlegende Methoden und Eigenschaften vorgestellt.
Daran schließt sich eine Vorstellung von Basistechnologien an, die bei der Realisierung von Informationsvisualisierungs¬komponenten für Webanwendungen eine bedeutende Rolle spielen. Dazu wird insbesondere die Virtual Reality Modeling Language" (VRML), eine Beschreibungssprache für dreidimensionale Objekte und Szenen vorgestellt.
Daran schließt sich eine Einführung in Informations¬visuali¬sierungs¬architekturen auf Basis von VRML an. Ergänzend kommt anschließend insbesondere das External Autoring Interface (EAI) von VRML zur Realisierung von integrierten Informations¬visuali¬sierungs¬architekturen im Zusammenwirken mit anderen Anwendungen und Diensten zur Sprache. Die Vorstellung von Evaluationsmethoden für Informationsvisualisierungstechniken schließt den Kurs sinnvoll ab.
Die Übung bearbeitet und vertieft gezielt den Entwurf, die Implementierung und die Evaluation von Informationsvisualisierungsanwendungen und den Umgang mit VRML.
Ziel dieses Kurses ist es, in den Entwurf und die Entwicklung von Informationsvisualisierungsanwendungen unter Nutzung von Internet-fähigen Technologien einzuführen und gleichzeitig auch Methoden zur Evaluation des Einsatzes von Informationsvisualisierungstechniken in web-basierten Benutzungsschnittstellen zu vermitteln.
Voraussetzungen: Programmierkenntnisse
Für folgende Studiengänge vorgesehen: B (über Katalog M), D, M, MC
KursbeschreibungDer Kurs beginnt mit einer ganz allgemeinen Betrachtung darüber, wodurch Kommunikation eigentlich motiviert ist. Wir fragen uns also in Kapitel 1, warum wir überhaupt kommunizieren. Im nachfolgenden Kapitel 2 untersuchen wir Strukturen und fragen auch hier, welche Motivation hinter der Bildung von Strukturen steckt. Im weiteren Verlauf zeigen wir Ihnen einige spannende Algorithmen, die der Analyse von Strukturen dienen.
In Kapitel 3 betrachten wir die Grundlage jedweder technischen Kommunikation ? Signale. Sie erfahren, wie sich Signale klassifizieren und beschreiben lassen. Außerdem betrachten wir in diesem Kapitel die Übertragungswege für Signale und analysieren Kodierungsverfahren, mit deren Hilfe sich ein Übertragungsmedium optimal nutzen lässt. Das Kapitel 4 beleuchtet im Anschluss Verfahren zur Erkennung und Korrektur von Fehlern, die bei der Übertragung entstehen können.
Das Kapitel 5 diskutiert das OSI-Referenzmodell, in dem sämtliche Komponenten und Protokolle, die zur Kommunikation über Rechnernetze benötigt werden, in eine überschaubare Ordnung gebracht werden.
Die Kapitel 6 und 7 widmen sich aktuellen Technologien und Systemen, die auf oder in Rechnernetzen umgesetzt werden. Dazu gehören drahtlose Kommunikationsverfahren wie Mobiltelefonie, Wireless LAN und Satellitensystemen aber auch elektronische Bezahlsysteme wie bspw. eCash. Ebenso werden Peer-to-Peer (P2P) Systeme und ubiquitäres Computing betrachtet. Wir schließen den Kurs mit 10 Visionen, die die Entwicklung der technischen und sozialen Potentiale von Rechnernetzen bis heute und in der Zukunft beleuchten.
KursbeschreibungDas Modul Lineare Algebra ist eine Fortsetzung der Grundlagen, die in den ersten drei Lektionen des Moduls 61111 gelegt wurden.
Zentrale Themen sind Bilinearformen, Determinanten, das Normalformenproblem von Endomorphismen (Jordan'sche Normalform) sowie Euklidiche und unitaere Vektorraeume.
KursbeschreibungDie Theorie der linearen Operatoren im Hilbertraum hat wichtige Anwendungen in der Analysis - insbesondere bei Differential- und Integralgleichungen - und in der mathematischen Physik. Ziel des Kurses ist sowohl eine Einführung in diese Theorie als auch das Heranführen an das Studium von Spezialliteratur. Es werden Kenntnisse aus der Analysis und der Linearen Algebra vorausgesetzt, der Kurs ist aber für das Hauptstudium gedacht. Zunächst wird auf breiter Basis - über normierte Räume und Banachräume - in die Theorie der Hilberträume eingeführt. Entsprechend wird danach zuerst die Theorie der linearen Operatoren in normierten Räumen und darauf aufbauend in Hilberträumen behandelt. Das wird bis zum Spektralsatz für unbeschränkte selbstadjungierte Operatoren, einem der wichtigsten Sätze des Kurses, und einigen seiner Anwendungen geführt.
Inhalt in Stichworten: Hilfsmittel aus der Maß- und Integrationstheorie, normierte Räume, Prähilberträume, Orthogonalität; abgeschlossene, beschränkte, kompakte, symmetrische, selbstadjungierte, normale, isometrische und unitäre Operatoren, orthogonale Projektionen, Hilbert-Schmidt Operatoren; Stabilitätssätze für abgeschlossene und selbstadjungierte Operatoren, Spektraltheorie kompakter Operatoren, Spektralscharen, Spektralsatz für unbeschränkte selbstadjungierte Operatoren, Spektrum eines selbstadjungierten Operators, Verfahren zur numerischen Bestimmung von Eigenwerten selbstadjungierter Operatoren, Störung des Spektrums.
KursbeschreibungDie Lineare Optimierung bildet einen zentralen Grundpfeiler des modernen Operations Research und liefert z.B. ebenso einfache wie leistungsfähige Modelle zur Beschreibung betriebswirtschaftlicher Produktionsprozesse. In dem vorliegenden Kurs werden die geometrischen und algorithmischen Prinzipien der Linearen Optimierung ausführlich dargestellt. Gleichzeitig werden sie an Hand zahlreicher Beispiele erläutert und vertieft. Die folgenden Stichworte umreißen den Inhalt des 7 Einheiten umfassenden Kurses.
Die Sprache der Linearen Optimierung. Lineare Ungleichungssysteme: Polyeder, Kegel, Polytope. Das Farkassche Lemma und Dualität. Die Seiten eines Polyeders: Ecken, Kanten, Extremalstrahlen. Der Simplex-Algorithmus: Eckenwanderungen, Simplex-Tableaux, Pivot-Regeln. Polynomzeit-Algorithmen und Standard-Aufgaben der Linearen Optimierung. Worst-Case und erwartete Laufzeit der Simplexalgorithmus. Prinzipielle Beschreibung der Ellipsoimethode und eines innere-Punkt Verfahrens.
Vorausgesetzt werden gründliche Kenntnisse aus der Linearen Algebra I sowie, in geringerem Maße, aus der Linearen Algebra II und der Analysis I, II.
KursbeschreibungDieses Modul bietet einen breiten Einstieg in klassische und moderne Methoden des Maschinellen Lernens. Nach einer allgemeinen Einführung und Auffrischung wichtiger Grundlagen wie Wahrscheinlichkeitstheorie und Lineare Algebra, werden klassische Ansätze des unüberwachten Lernens (wie K-Means Clustering und Hierarchical Clustering), des überwachten Lernens (wie Bayes Klassifikation, Entscheidungsbäume, Assoziationsregeln und Support Vector Machines), und des Reinforcement-Learnings (wie Markov-Entscheidungsprozesse und Q-Learning) vorgestellt. Anschliessend werden moderne Deep Learning Methoden diskutiert. Dies beinhaltet eine allgemeine Einführung in Künstliche Neuronale Netze, sowie eine tiefere Auseinandersetzung mit Convolutional Neural Networks, Recurrent Neural Networks und Transformern. Abschliessend werden dem Maschinellen Lernen nahe Techniken wie Principal Component Analysis und Data Mining diskutiert.
KursbeschreibungIm Kurs werden die mathematischen Grundlagen für das Mathematik- und Informatikstudium gelegt. Die ersten drei Kurseinheiten widmen sich der Linearen Algebra, als Inhalte sind zu nennen: Matrizen, Lineare Gleichungssysteme, Vektorräume und lineare Abbildungen. Die Kurseinheiten vier bis sechs behandeln Themen der Analysis, etwa die reellen Zahlen, Folgen und Reihen, Stetigkeit und Differenzierbarkeit sowie Integralrechnung. Die siebte Kurseinheit gibt eine Einführung in die Aussagenlogik und Prädikatenlogik.
KursbeschreibungIn diesem Modul sollen grundlegende mathematische Modelle im Bereich Big Data
Analytics dargestellt sowie ein anwendungsorientierter Bezug zu relevanten
Fragestellungen hergestellt werden.
Inhalte dieses Modul sind:
⦁ Grundlegende mathematische Modelle im Bereich Big Data Analytics
⦁ Notwendige Grundlagen aus der Angewandten Mathematik (insbesondere
hochdimensionale Räume, Singulärwertzerlegung und Approximation durch
Unterräume, Irrfahrten und Markov-Ketten, Algorithmen für große Daten,
Zufallsgraphen)
⦁ Grundbegriffe der Mathematischen Statistik
KursbeschreibungDas Modul "Mobile Security" führt in die Sicherheitskonzepte und -mechanismen mobiler Endgeräte wie Smartphones und Tablets sowie der auf ihnen laufenden Betriebssysteme und Applikationen ein. Der Fokus dieser Betrachtungen liegt dabei auf den gängigen Betriebssystemen iOS und insbesondere Android. Konkret befasst sich die Lehrveranstaltung zunächst mit den allgemeinen Bedrohungen und Angriffsszenarien in diesem Kontext sowie den Sicherheitsarchitekturen obiger Plattformen und ihren Prinzipien als Gegenmaßnahmen. Der zweite Schwerpunkt ist den Sicherheitsproblemen und der Einführung in das Penetration Testing mobiler Applikationen gewidmet. Die dazu nötigen Techniken der statischen und dynamischen Analyse werden vorgestellt und voneinander abgegrenzt. In diesem Rahmen wird die Vorgehensweise beim Reversing von Android-Applikationen erklärt, wobei zu diesem Zweck auf ihre Beschaffung, ihre Analyse und die dafür nötigen technischen Umgebungen und Werkzeuge eingegangen wird. Weiterhin werden die wichtigsten Schwachstellen im Code mobiler Applikationen und deren Erkennung sowie die Detektion von Schadcode und gängige Schutzmaßnahmen behandelt. Ebenfalls werden verschiedene Ansätze forensischer Untersuchungen mobiler Endgeräte besprochen. Abschließend gibt die Lehrveranstaltung einen Überblick über eine Reihe von Angriffen auf die Datenübertragung und das dafür nötige Vorgehen.
KursbeschreibungTrotz eines zunehmenden Bewusstseins für die Notwendigkeit von vorbereitenden
Tätigkeiten ist die Programmierung immer noch die Kernaktivität der
Softwareentwicklung. Zwar hat die Einführung neuer Programmiersprachen wie
Java durchaus Produktivitätssteigerungen bewirkt, jedoch ist die
Fortentwicklung dieser Sprachen viel zu schwerfällig, um mit den ständig
wachsenden Ansprüchen an Funktionalität und Umfang schritthalten zu können.
Statt dessen haben sich im Kontext der objektorientierten Programmierung eine
ganze Reihe von Techniken und Methoden entwickelt, mit deren Hilfe sich - auf
der Basis existierender Programmiersprachen - die Softwareentwicklung
effizienter gestalten lässt. Einige dieser Programmiertechniken und -methoden
werden in diesem Kurs vorgestellt.
Die Themen des Kurses sind:
· Interfacebasierte Programmierung
· Design by contract
· Testen, insbesondere Unit-Testen
· Entwurfsmuster (Design patterns)
· Refactoring
· Metaprogrammierung inkl. aspektorientierter Programmierung
· Agile Methoden
Für das erfolgreiche Bearbeiten der Einsendeaufgaben ist Kenntnis von Java Voraussetzung.
KursbeschreibungIn diesem Kurs werden numerische Verfahren zur Lösung von Differentialgleichungen vorgestellt. Im einzelnen werden folgende Themen behandelt: 1. Einführung, theoretische Grundlagen 2. Einschrittverfahren 3. Lineare Mehrschrittverfahren 4. Extrapolationsverfahren 5. Steife Differentialgleichungen, Implizite Runge-Kutta-Verfahren Vorkenntnisse:
Numerische Mathematik I.
KursbeschreibungDer Streit um die richtige Programmiersprache ist so alt wie Programmiersprachen selbst. Dabei erhitzen sich die Gemüter leider viel zu oft an Oberflächlichem: Wie ist die Syntax der Sprache, sind geschweifte Klammern besser als begin/end, ist eine Zuweisung eine Anweisung oder ein Ausdruck, braucht es das Semikolon etc. Was Programmiersprachen aber wirklich unterscheidet sind die Konzepte, die sich in ihnen materialisieren.
In dieser Lehrveranstaltung werden die zentralen Konzepte der beiden Hauptströmungen der Programmierung der letzten 30 Jahre, der objektorientierten und der funktionalen Programmierung, vermittelt. Die Vermittlung erfolgt anhand einer Reihe von Programmiersprachen, die beide Strömungen in sich vereinen und die ich daher objekt-funktional nenne. Der Fokus liegt dabei nicht auf den Sprachen selbst, sondern den Konzepten, die sich mit ihnen am praktischen Beispiel vermitteln lassen; ihre Kombination in einem Lehrtext soll Ihnen ein möglichst umfassendes Bild vom Wesen der objekt-funktionalen Programmierung vermitteln. Dabei werden auch Grundlagen wie die Abbildung von Daten in den Speicher, der Lambda-Kalkül und der Ursprung von Typsystemen sowie grundsätzliche Fragestellungen wie die nach dem allgemeinen Unterschied zwischen Werten und Objekten nicht ausgespart.
Dieser Kurs richtet sich an Studierende, die Programmierung nicht als Mittel zum Zweck verstehen wollen (denen ist bereits mit ChatGPT ausreichend geholfen), sondern die sich für die Ideen hinter der Programmierung interessieren und die eine möglichst umfassende Übersicht über das Thema erlangen wollen. Er verlangt viel Nachdenken und Ausprobieren, was sich jedoch in dem vorgesehenen Workload von 300 Stunden (entsprechend siebeneinhalb 40-Stunden-Wochen Arbeitszeit) gut unterbringen lassen sollte.
Achtung: Es handelt sich bei dieser Lehrveranstaltung nicht um einen Programmierkurs. Wenn Sie auf Master-Niveau studieren, sollten Sie bereits in mindestens einer Sprache programmieren können; um auf dieser Basis weitere Sprachen zu erlernen bedarf es keiner universitären Lehre. Sie erhalten hier vielmehr Einblicke in die objekt-funktionalen Sprachen zugrundeliegenden Konzepte am Beispiel von JavaScript, TypeScript, Ruby, Scala und F#, mit dem Potential (und der Absicht), Ihren Blick auf diese Sprachen (so Sie diese bereits kennen) zu verändern. Ihre dadurch erlangten Einsichten sollen es Ihnen später erlauben, einzelne Programmiersprachen hinsichtlich ihrer Eignung für gegebene Problemstellungen zu bewerten und auszuwählen.
KursbeschreibungDie meisten der heute verwendeten Programmiersprachen sind in der einen oder anderen Form objektorientiert. Doch was heißt ?objektorientiert? eigentlich?
Dieser Kurs vermittelt die Grundlagen objektorientierter Programmierung, so wie wir sie heute kennen. Er greift dazu auf Programmiersprachen zurück, die diese Grundlagen in besondere Weise verdeutlichen. Dabei geht es um objektorientierte Konzepte und nicht um die Sprachen selbst: Da in der Praxis die verwendete Sprache das Denken in erheblichem Maße beeinflusst, soll wenigstens im Studium das objektorientierte Denken zuerst kommen. Nur so kann sich das Vermögen entwickeln, Programmiersprachen auf ihre Eignung hin zu beurteilen und für einen bestimmten Zweck auszuwählen. Dafür ist es allerdings insbesondere für diejenigen, die schon die eine oder andere objektorientierte Programmiersprache kennen, zunächst notwendig, Abstand vom Bekannten zu gewinnen.
Der Kurs führt die objektorientierte Programmierung anhand der Programmiersprache Smalltalk ein, die nicht nur diejenige war, die die objektorientierte Programmierung populär gemacht hat, sondern die auch durch eine besonders direkte und klare Umsetzung objektorientierter Konzepte besticht. Smalltalk ist schnell und leicht erlernbar, dies nicht zuletzt auch deswegen, weil es kein Typsystem verwendet. Da Typsysteme aber frühzeitig logische Fehler in Programmen aufzudecken erlauben und daher für die kommerzielle Softwareentwicklung als unverzichtbar angesehen werden müssen, führt der Kurs anschließend ausführlich in die Thematik objektorientierter Typsysteme ein. Auf Basis der nunmehr vollständig vorgestellten Grundbausteine objektorientierter Programmierung werden dann verbreitete objektorientierte Programmiersprachen mit ihren jeweiligen besonderen Eigenschaften vorgestellt. Der Kurs widmet sich sodann den häufig ignorierten, aber dennoch nicht zu vernachlässigenden Problemen der objektorientierten Programmierung und schließt mit einer Abhandlung über objektorientierten Programmierstil ab.
Der Kurs richtet sich an Interessierte in fortgeschrittenen Studienabschnitten. Belegung des Moduls 63811 (imperative Programmierung) ist günstige Voraussetzung. Die Belegung des Kurses 63611 (Einführung in die objektorientierte Programmierung) ist hilfreich, aber keine Bedingung.
Achtung: Dieser Kurs ist kein Java-Kurs. Java wird im Modul 63611 umfänglich abgehandelt. Auch befasst sich dieser Kurs nicht mit Skriptsprachen. Einsende- und Selbsttestaufgaben verlangen die Bereitschaft, in Smalltalk zu programmieren. Ihre Bearbeitung wird dringend empfohlen.
Seite erstellt in 1s | 7.12.2025,12:11 im Wintersemester 2025/2026 | realisiert durch das LVU-System