Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2. Proseminar - 1 -

Ähnliche Dokumente
III.1 Prinzipien der funktionalen Programmierung - 1 -

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

10. Programmierungs-Phase: Objektorientierung Software Engineering

Software-Entwicklung

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Objektorientiertes Programmieren

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

1.3 Geschichte der Programmiersprachen

Programmiersprachen Proseminar

Funktionale Programmiersprachen

I.1. Organisatorisches - 1 -

Programmierung Paradigmen und Konzepte

Vorlesung Programmieren

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Paradigmen zur Algorithmenbeschreibung

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

Programmieren in Haskell Einführung

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Ausblick: Entwurfsmuster (Design Pattern) 12.1 Entwurfsmuster (Design Pattern) 12.2 Programmierparadigmen und -sprachen und Veranstaltungen

Gliederung der Folien

Einführung in die Programmierung

Inhaltsverzeichnis. 4.9 Aufgaben... 63

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber

Vorlesung Programmierung

Einführung in die Programmierung

Inhalte des Moduls Programmieren 1

Einführung in die Programmierung Wintersemester 2016/17

1 Programmiersprachen 1.1 1

Wie halte ich einen guten Vortrag? Proseminar des DBIS am IPD im Sommersemester Jutta Mülle -

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Sprachen und Programmiersprachen

Javakurs für Anfänger

Teil III. Objektorientierung und SW-Entwicklung

Programmiersprachenkonzepte

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Vorlesung Programmierung

Paradigmen zur Algorithmenbeschreibung

Übung Informatik I - Programmierung - Blatt 8

Höhere Programmiersprachen

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Intensivübung zu Algorithmen und Datenstrukturen

Programmieren I. Methoden-Special Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Hinweise zum Seminarvortrag und Korreferat

Telepräsenz und virtuelle Realität

6. Funktionen, Parameterübergabe

Neueste Trends im Hochleistungsrechnen

Vorkurs Informatik WiSe 15/16

9. Ausnahmebehandlung 10. Softwareentwicklung: Anforderungsanalyse und Problemdefinition - ein Beispiel Abstrakte Datentypen,

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe

Vorlesung Programmierung

Grundlagen der Modellierung und Programmierung, Übung

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Proseminar Programming Languages from Hell

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Einführung in die Informatik

Objektorientierte Programmierung in Java

Wie halte ich einen guten Vortrag? Seminar am IPD im Sommersemester Jutta Mülle -

Vorlesung Programmierung

Objektorientierte Programmierung

Erste Java-Programme (Scopes und Rekursion)

Vorlesung Programmierung

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Seminar Visualisierung von Graphen

Seminar-Informationsveranstaltung

Kapitel

Praktische Informatik 1

Konzepte der Programmiersprachen

Vorkurs Informatik WiSe 17/18

Einführung in die Programmierung mit Java

Formatvorgaben für die Ausarbeitung

2. Programmierung in C

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs funktionale Programmierung mit Scala ISBN:

Tipps zum Halten von Vorträgen

Konzepte der Programmiersprachen

Elementare Konzepte von

System.out.println("TEXT");

Vorkurs Informatik WiSe 17/18

Transkript:

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2 Proseminar - 1 -

Lernziele des Proseminars Wie komme ich zu gesicherten Ergebnissen? Stimmen Angaben? Andere Quellen? Neuere Entwicklungen? Was ist der wesentliche Inhalt? Inhalt verstehen danach: Abstraktion von den (technischen) Details Strukturierung der wesentlichen Punkte Wie vermittle ich meine Ergebnisse? wesentlichen Inhalt (ohne Details) in eigenen Worten erklären muss für andere Studierende ohne Vorkenntnisse verständlich sein alles erklären, was erwähnt wird innerhalb vorgegebener Dauer bzw. Seitenzahl Proseminar - 2 -

Organisation 27.04.2015 Kurzvortrag halten 5 Wochen vor dem Vortrag Besprechung der Gliederung mit Betreuer 3 Wochen vor dem Vortrag Abgabe der Ausarbeitung beim Betreuer nach Wunsch Besprechung der Vortragsfolien mit Betreuer 1 Woche vor dem Vortrag Ausarbeitung wird online verfügbar gemacht Proseminar - 3 -

Ausarbeitung Proseminar - 4 -

Ausarbeitung 12 Seiten (inklusive Titelblatt) auf Verständlichkeit achten mehrmals durchlesen Rechtschreibung und Grammatik Abbruch der Bearbeitung bei mehr als 5 Rechtschreibfehlern pro Seite LaTeX vorteilhaft bei Formeln Gliederung: Einleitung Hauptteil (mehrere Kapitel). Ggf. Unterkapitel (dann mindestens 2). Zusammenfassung Literaturverzeichnis Kein Inhalts- oder Abbildungsverzeichnis Proseminar - 5 -

Einleitung und Zusammenfassung Einleitung kurze Beschreibung des Themas Motivation und Zielsetzung Warum interessant? Was soll gezeigt werden? Übersicht über den Aufbau der Arbeit Welchen Inhalt haben die folgenden Kapitel? Zusammenfassung Was wurde gezeigt? Ausblick Proseminar - 6 -

keine 1. Person Singular Stil nicht:... wie ich gezeigt habe sondern:... wie gezeigt wurde oder... wie wir gezeigt haben Schlüsselbegriffe kursiv nicht zu viele Fußnoten Beispiele jedes Konzept muss mit einem Beispiel erklärt werden möglichst immer dasselbe Beispiel möglichst kleines einfaches Beispiel Proseminar - 7 -

Literaturverzeichnis Alphabetisch sortieren (Nachname des 1. Autors) Vollständig zitieren Zeitschriftenartikel: Autoren, Titel, Name der Zeitschrift, Band- und Heftnummer, Seitenzahl, Jahr [AW97] M. Arlitt, C. Williamson. Internet web servers: workload characterization and performance implications. IEEE/ACM Transactions on Networking, 5(5):631-645, 1997. Konferenzbeitrag: Autoren, Titel, Name der Konferenz, Seiten, Jahr [TM02] Tan, H.K.; Moreau, L.: Certificates for Mobile Code Security. Proceedings of the ACM Symposium on Applied Computing (SAC 2002), pages 76-81, 2002. Fachbuch: Autoren, Titel, Verlag, Jahr [Ha98] Haverkort, B.R.: Performance of Computer Communication Systems A Model-Based Approach. John Wiley & Sons, New York, 1998. Proseminar - 8 -

Vortrag Proseminar - 9 -

Vortrag 30 Minuten beide Studierenden sollten etwa gleich lang sprechen im Prinzip gleicher Inhalt wie Ausarbeitung Rechtschreibung und Grammatik LaTeX vorteilhaft bei Formeln (beamer style), Powerpoint vorteilhaft bei Multimedia Gliederung Einleitung Hauptteil (mehrere Kapitel) Zusammenfassung ggf. praktische Demo Proseminar - 10 -

Hauptziel: Verständlichkeit!! Stil wesentlichen Inhalt (ohne Details) in eigenen Worten erklären muss für andere Studierende ohne Vorkenntnisse verständlich sein alles erklären, was erwähnt wird oder auf Folien steht nur Stichworte auf Folien, keine ganzen Sätze keine technischen Details Folien nicht zu voll große Schrift, ggf. Farben sinnvoll einsetzen Beispiele jedes Konzept muss mit einem Beispiel erklärt werden möglichst immer dasselbe Beispiel möglichst kleines einfaches Beispiel Proseminar - 11 -

Vortrag mehrfach üben!! Stil vorher überlegen, was man zu jeder Folie sagen will üben, wie der Vortrag in 30 Minuten gehalten werden kann Notfallplan, wenn man zu langsam oder zu schnell ist frei reden ins Publikum schauen alle benötigten Informationen müssen auf der Folie sein Ggf. 2. Beamer benutzen, um parallel Konzept und Bsp zu zeigen keine Nachfragen Hat das jeder verstanden? keine Schlussfolie Noch Fragen?, Vielen Dank für die Aufmerksamkeit Proseminar - 12 -

Kurzvortrag 27. 04. 2015 Proseminar - 13 -

Kurzvortrag 6 Minuten beide Studierenden sollten etwa gleich lang sprechen Inhalt: Überblick über das Thema ähnliche Hinweise wie beim Vortrag Verständlichkeit muss für andere Studierende ohne Vorkenntnisse verständlich sein Test, um erstes Feedback zum Vortragsstil zu bekommen Motivation, sich schon jetzt um das Thema zu kümmern Donnerstag, 23.04.: Folien an Betreuer schicken pdf, Powerpoint, Open Office Proseminar - 14 -

Beispielvortrag Programmierkonzepte in Java, Haskell und Prolog (30 Minuten) Proseminar - 15 -

Prof. Dr. Jürgen Giesl Lehr- und Forschungsgebiet Informatik 2 Proseminar - 16 -

Kenntnis verschiedener Sprachen Eigene Ideen bei der Software-Entwicklung können besser ausgedrückt werden Nötig, um in konkreten Projekten geeignete Sprache auszuwählen Erleichtert das Erlernen weiterer Programmiersprachen Nötig für den Entwurf neuer Programmiersprachen Proseminar - 17 -

Übersicht Imperative Sprachen Deklarative Sprachen Folge von nacheinander ausgeführten Anweisungen Spezifikation dessen, was berechnet werden soll Festlegung, wie Berechnung verläuft, durch Compiler Prozedurale Sprachen Variablen, Zuweisungen, Kontrollstrukturen Funktionale Sprachen keine Seiteneffekte Rekursion Objektorientierte Sprachen Objekte und Klassen ADT und Vererbung Logische Sprachen Regeln zur Definition von Relationen Proseminar - 18 -

Wichtige Programmiersprachen 1950 1960 Fortran Cobol Algol 60 Lisp 1970 1980 1990 PL/1 Pascal Ada Algol 68 C Modula-3 Simula Smalltalk C++ Ada-95 Java Eiffel Python Scheme ML Miranda Haskell Prolog 2000 Scala prozedural objektorientiert funktional logisch Proseminar - 19 -

1. Imperative prozedurale Programmierung Eingabe: Eine Liste z Ausgabe: Länge der Liste Algorithmus: 1. Setze x = z. 2. Setze n = 0. 3. Falls x nicht leer: 3a. Lösche das erste Element von x. 3b. Erhöhe n um 1. 3c. Zurück zu Schritt 3. 4. Gib Wert von n zurück. Proseminar - 20 -

Java) Imperatives Programm ( (Java Eingabe: Eine Liste z Ausgabe: Länge der Liste Algorithmus: static int len (List x) { int n = 0; 1. Setze x = z. 2. Setze n = 0. 3. Falls x nicht leer: 3a. Lösche das erste Element von x. 3b. Erhöhe n um 1. 3c. Zurück zu Schritt 3. 4. Gib Wert von n zurück. } while (x!= null) { x = x.rest; n = n + 1; } return n; Proseminar - 21 -

Kennzeichen imperativer Programmierung Programm besteht aus einzelnen Anweisungen, die nacheinander abgearbeitet werden. Verschiedene Kontrollstrukturen, um Programmablauf zu steuern. Abarbeitung einer Anweisung ändert Werte der Variablen. Seiteneffekte Proseminar - 22 -

Java) 2. Objektorientierte Programmierung(Java class List { int kopf; List rest;... int len () { List x = this; int n = 0; while (x!= null) { x = x.rest; n = n + 1; } return n; } } static int len (List x) { int n = 0; while (x!= null) { x = x.rest; n = n + 1; } return n; } Proseminar - 23 -

Vererbung class PersonenListe extends List { String name;... } PersonenListe ist Unterklasse von List Objekte von PersonenListe erben Attribute und Methoden von List y = [(Müller,15), (Meier,70), (Schmidt,36)] Dann: y.len() = 3 Proseminar - 24 -

Kennzeichen objektorientierter Programme Teilmenge der imperativen Sprachen Klassen und Objekte Unterschiedliche Zugriffsrechte für verschiedene Attribute und Methoden (Geheimnisprinzip, Datenkapselung, abstrakte Datentypen) Modularität, Änderungsfreundlichkeit Vererbung Proseminar - 25 -

3. Funktionale Programmierung A. Falls die Liste z leer ist, so ist len(z) = 0. B. Falls die Liste z nicht leer ist und "rest" die Liste z ohne ihr erstes Element ist, so ist len(z) = 1 + len(rest). Programm in Haskell: len [] = 0 len (kopf : rest) = 1 + len rest Proseminar - 26 -

Ausführung funktionaler Programme len [] = 0 len (kopf : rest) = 1 + len rest len [15, 70, 36] = 1 + len [70, 36] = 1 + 1 + len [36] = 1 + 1 + 1 + len [] = 1 + 1 + 1 + 0 = 3 Proseminar - 27 -

Kennzeichen funktionaler Programme Rekursion statt Schleifen Keine Seiteneffekte (referentielle Transparenz) Funktionen als gleichberechtigte Datenobjekte (Funktionen höherer Ordnung) Verwendung von Funktionen für verschiedene Typen (Polymorphismus) Programme sind kürzer, klarer, besser zu warten, zuverlässiger, schneller zu erstellen Proseminar - 28 -

4. Logische Programmierung A. Die Länge der leeren Liste ist 0. B. Die Länge der Liste [Kopf Rest] ist N, falls M die Länge der Liste "Rest" ist und falls N den Wert M + 1 hat. Programm in Prolog: len([], 0). len([kopf Rest], N) :- len(rest, M), N is M + 1. Proseminar - 29 -

Ausführung logischer Programme len([], 0). len([kopf Rest], N) :- len(rest, M), N is M + 1.?- len([15, 70, 36], 3). true Proseminar - 30 -

Ausführung logischer Programme len([], 0). len([kopf Rest], N) :- len(rest, M), N is M + 1.?- len([15, 70, 36], 2). false Proseminar - 31 -

Ausführung logischer Programme len([], 0). len([kopf Rest], N) :- len(rest, M), N is M + 1.?- len([15, 70, 36], Q). Q = 3?- len(l, 2). L = [X, Y]?- len(l, Q). L = [] Q = 0 ; L = [X] Q = 1 ; L = [X, Y] Q = 2 Proseminar - 32 -

Kennzeichen logischer Programme Programme = Fakten und Regeln Keine Kontrollstrukturen Ein- und Ausgabevariablen liegen nicht fest Besonders gut geeignet für Künstliche Intelligenz (z.b. Expertensysteme) Proseminar - 33 -

Zusammenfassung Grundlegende Paradigmen der imperativen prozeduralen Programmierung (Java) objektorientierten Programmierung (Java) funktionalen Programmierung (Haskell) logischen Programmierung (Prolog) Charakteristische Konzepte der Sprachfamilien Einfaches Programm in typischen Sprachen Proseminar - 34 -

Analyse Proseminar - 35 -

Analyse des Beispielvortrags LaTeX vorteilhaft bei Formeln (beamer style), Powerpoint vorteilhaft bei Multimedia Hauptziel: Verständlichkeit!! wesentlichen Inhalt (ohne Details) in eigenen Worten erklären muss für Studierende ohne Vorkenntnisse verständlich sein nur Stichworte auf Folien, keine ganzen Sätze keine technischen Details Folien nicht zu voll Proseminar - 36 -

Analyse des Beispielvortrags große Schrift, ggf. Farben sinnvoll einsetzen Beispiele jedes Konzept muss mit einem Beispiel erklärt werden möglichst immer dasselbe Beispiel möglichst kleines einfaches Beispiel Alle benötigten Informationen müssen auf der Folie sein Proseminar - 37 -