Winter
2012/13

 
GdP - Grundlagen der Programmierung

VLMo11:00-12:30Rud 26, 0'115Prof. Redlich
 Mi11:00-12:30Rud 26, 0'115Prof. Redlich
     
ÜMo13:15-14:45Rud 25, 3.101Dr. Müller
 Die09:15-10:45Rud 25, 3.101Dr. Müller
 Die11:05-12:35Rud 25, 3.101Dr. Müller
 Mi13-15Rud 25, 3.113Hr. Sombrutzki
 Mi13-15Rud 25, 3.101Hr. Gierds
 Do9-11Rud 25, 3.101Hr. Gierds
 Fr9-11Rud 25, 3.113Hr. Sombrutzki
     
PR   Dr. Ahrens


Computer Science Department
Systems Architecture Group


 

Endgültige Ergebnisse der  GdP - Klausur  vom 06.Augist 2013

------------------------------

Endgültige Ergebnisse der  GdP - Klausur  vom 27.Februar 2013

 


 
Kurzbeschreibung. Computer und Dinge die durch sie ermöglicht werden sind überall um uns herum zu finden. Einige davon sind gross und sichtbar, wie der PC am Arbeitsplatz. Andere sind eher versteckt, wie die Mikroprozessoren in Autos und Handys, Programme die Flugzeuge fliegen oder das Telefonnetz und Stromnetz am laufen halten; ebenso wie die vielen kleine Geräte, die ständig unsere persönlichen Daten erfassen und verwalten.
Auch wenn viele Studenten später nicht unmittelbar an der Entwicklung solcher Systeme beteiligt sind, werden Sie doch ständig mit ihnen zu tun haben. Diese breit angelegte Einführungsvorlesung soll Ihnen auf einer sehr allgemeinen Ebene erklären, wie Computer aufgebaut sind und wie sie programmiert werden können. Dabei werden Sie auch die prinzipiellen Grenzen von Computern kennen lernen.

  
Überblick
  • Einführung in die Praktische Informatik (für Mono-Bachelor, Kombi-Bachelor und Lehramt).
  • 2 Vorlesungen je Woche (jeweils 90 Minuten).
  • Zusätzlich: Übungen / Praktikum (jeweils 1x je Woche).

Prüfungen

  • Schriftliche Klausur am Ende des Semesters.
         Klausurtermin: 27.02.2013 (Mittwoch), 10:00 Uhr (Einlass ab 09:30 Uhr), Raum 0'110, 0'115, 0'307
         Nachklausur:   06.08.2013 (Dienstag), 10:00 Uhr (Einlass ab 09:30 Uhr), Raum 0'110
  • Um für die Klausur zugelassen zu werden, müssen Sie regelmäßig an den Übungen teilnehmen und 50% der für die Übungsaufgaben vergebenen Punkte erhalten. Ebenso müssen Sie das Praktikum erfolgreich absolvieren, wofür Sie 50% der für die Praktikumsaufgaben vergebenen Punkte erhalten müssen. Für beide Teilleistungen erhalten Sie jeweils einen Übungsschein bzw. einen Praktikumsschein, die Sie gemeinsam bei der Anmeldung zur Prüfung vorlegen müssen. Scheine aus früheren Jahren behalten ihre Gültigkeit.
    Hinweis 1: Praktikum und Übungen werden unabhängig voneinander bewertet und müssen beide unabhängig voneinander bestanden werden.
    Hinweis 2: Es können keine Punkte zwischen Praktikum und Übungen transferiert werden. Jede Kategorie zählt für sich.
    Hinweis 3: Übungsleiter können für gute Mitarbeit in den Übungsstunden Zusatzpunkte vergeben (sowohl für Übungen, wie auch für das Praktikum). Falls Sie eigentlich weniger als die geforderten 50% der Punkte haben, ist dies eine Möglichkeit, um die 50%-Schwelle doch noch zu überspringen.
  • Regelmäßige Teilnahme an Vorlesungen und Übungen sind selbstverständlich.

Voraussetzungen

  • Keine. Dieser Kurs ist für Anfänger geeignet.
  • Zum Erlernen elementarer Fähigkeiten im Umgang mit den Computern am Institut empfehlen wir (auf freiwilliger Basis) den Besuch des Unix-Crash -Kurses, der ca. 1 Monat vor Semesterstart als 2-wöchige Blockveranstaltung durchgeführt wird.
Vorlesung
  1. Welcome and Overview
    Introduction - What is a computer? What is computer science?
    www.8bit-museum.de
     
  2. Introduction to Programming (in Java)
    Java Basics I  - Hello World, Basic Data Types, Flow Control, Debugging.
    Java Basics II  - Arrays, Input/Output, Functions, Recursion.
    Case study - Percolation.  (additional material - not covered in lecture)
     
  3. A Computing Machine (TOY)
    Number systems.
    Toy machine - Architecture, simple algorithms in machine language  (parallel bit count demo)
    Data Encryption - Short introduction how to encode and to encrypt data
     
  4. Object Oriented Programming (in Java)
    Using existing Data Types - Color, Picture, In (streams).
    Creating new Data Types - Java Classes, Implementation Inheritance, JavaDoc.
    Designing Data Types - Abstract Data Type, Interface Inheritance, Design by Contract.
    Further readings:  STEIN: Encapsulation.
     
  5. Graphical User Interface (GUI) Programming (in Java)
    GUI Programming in Java - AWT, Swing.  (additional material - not covered in lecture)
     
  6. Java Threads
    Threads - Concurrent Execution, Synchronization.
    Further readings: STEIN: Synchronization.
     
  7. Performance (Execution Times) of Algorithms
    Sorting - insert-sort, merge-sort (quicksort). (additional material - not covered in lecture)
    Intractability - NP, P, NP-Completeness, dealing with intractability.  (additional material - not covered in lecture)
     
  8. Algorithms and Data Structures (a quick tour - in Java)
    Linked Structures - Lists, Queues, Stacks, Trees, (Generics).
    Further readings: Java Generics

     
    Symbol Tables - Binary Search Trees, Hashing.  (topic excluded from examination)
    Graphs - Small World Phenomenon.       (additional material - not covered in lecture)
     
  9. Regular Expressions
    Regular expressions - Pattern Matching.  (additional material - not covered in lecture)
     
  10. Internet (optional, only if time permits)
    Internet - Communication Networks (TCP/IP), Client/Server applications, peer-to-peer systems.  (additional material - not covered in lecture)
     
  11. Scientific Computing
    Numeric computations - IEEE floating point representation, roundoff error, stable algorithms, well-conditioned problems.     (additional material - not covered in lecture)
    Mathematica - Doing Math with Computers.     (additional material - not covered in lecture)

    Further readings: What Every Computer Scientist Should Know About Floating-Point Arithmetic  (cache)
    Further readings: How Java's Floating-Point Hurts Everyone Everywhere (cache)
    Useful Tools: Mathematica, Matlab, Maple

 

Empfohlene Literatur

Robert Sedgewick, Kevin Wayne. Introduction to Programming in Java. 2007

Webseite zum Buch: http://www.cs.princeton.edu/introcs
 

 

Übungen (Folien)
  1. Unix Tools
  2. Unix Tools 2
  3. Eclipse & Subversion (GdP-SVN: https://svn.informatik.hu-berlin.de/svn/gdp-12/lecture-samples)

     

Übungen

Alle zwei Wochen am Montag gibt es ein neues Aufgabenblatt. Alle Aufgaben werden in der nächsten Übung vom Übungsleiter erläutert, Sie können Fragen zum Verständnis der Aufgabenstellung stellen. Innerhalb von 14 Tagen nach Ausgabe müssen die Aufgaben elektronisch über Goya bis Montag 10:00 Uhr abgegeben sein.

Nr.AusgabedatumAbgabedatumBlattSonstiges
102.11.1219.11.121 (pdf) 
216.11.1203.12.122 (pdf)Selbsttest 2 Teilaufgabe 3
330.11.1214.01.133 (pdf) 
Z11.01.1328.01.13Z (pdf)TestGray.java

Praktikum

Webseite http://www2.informatik.hu-berlin.de/~pinf1/WS1213/

Abschluss-Praktikum         Abgeschlossen!

--- vom "Staff" vorgeschlagene Aufgaben ---

  1. Mini Schach (eventuell mit Turnier)

  2. Image Morphing

  3. Gitarre

    --- von Studenten vorgeschlagene Aufgaben  --- Vielen Dank für den Beitrag! ---
     

  4. Kisten-Schieben (Sokoban)

  5. Bio-Reaktor Simulation

  6. Online-Spiel Tic-Tac-Toe

  7. Optimaler Weg im Berliner S-Bahn Netz

  8. Racetrack

  9. Simulation und Visualisierung des Wachstums einer Ameisenkolonie

Hnweis. Die Aufgaben sind in Gruppen von 2-5 (optimal 3) Personen zu bearbeiten. Die Gruppenbildung erfolgt über Goya (beginnen Sie schon jetzt!) Ihr Gruppenname sollte mit der Nummer der Aufgabe beginnen - dadurch erkennen die Korrektoren sofort, für welche Aufgabe sich Ihre Gruppe entschieden hat, z.B. würde die Gruppe “1schachTeln“ an Aufgabe 1 arbeiten.


 

Java und Eclipse auf Ihrem Rechner

  1. JRE / JDK
    Sie benötigen auf Ihrem Computer ein Java Laufzeitsystem (engl. JRE - Java Runtime Environment; gelegentlich auch JVM - Java Virtual Machine - genannt), um dort Java-Programme ausführen zu können. Eine aktuelle JRE können Sie von der Java-Webseite herunterladen: http://www.java.com/de/download/ .
    Da wir aber Java Programme nicht nur ausführen, sondern auch selbst entwickeln wollen, empfehlen wir Ihnen stattdessen das JDK - Java Development Kit - herunterzuladen. Das JDK beinhaltet schon eine aktuelle JRE, enthält darüber hinaus aber auch noch Hilfsprogramme, die für die Programmentwicklung nützlich sein können.

    Anleitung zum Installieren des JDK

    Hinweis 1: Wenn Sie die Plattform auswählen müssen ... wählen Sie nicht "Windows x64", sondern die 32-bit Version "Windows".
    Hinweis 2. Auch wenn das Installationsprogramm es Ihnen mehrfach anbietet - Sie brauchen sich nirgendwo zu registrieren. Einfach "wegdrücken".
     
  2. Eclipse
    Wer regelmäßig Software entwickelt, verwendet meist ein IDE - Integrated Development Environment - also ein Programm, das die vielen Arbeitsschritte bei der Softwarenetwicklung automatisiert und koordiniert. Es gibt viele IDEs und jede hat ihre spezifischen Vor- und Nachteile. In der Vorlesung verwenden wir Eclipse. Wir empfehlen das vorkonfigurierte Paket "Eclipse IDE for Java Developers" herunterzuladen.

    Anleitung zum Installieren von Eclipse

    Hinweis: Wenn Sie die Plattform auswählen müssen ... wählen Sie nicht "Windows x64", sondern die 32-bit Version "Windows".
     
  3. SVN/CVS, Subclipse
    Mit der Zeit werden Sie sehr viele Java-Programme entwickeln, einige vielleicht auch noch in mehreren Versionen. Damit  man hier den Überblick behält (auch um später einfach mit anderen Entwicklern im Team zusammen arbeiten zu können), wird oft ein System zur Verwaltung von Programmcode verwendet (engl. "revision control", "version control" oder auch "source code control"). Auch für diese Aufgabe gibt es wieder verschiedene Produkte. In der Vorlesung verwenden wir
    SVN/CVS.
    Für unseren Anwendungsfall (Java-Software-Entwicklung mit Eclipse) hat es sich bewährt, das Programm Eclipse durch ein "Plugin" um die SVN/CVS-Funktionalität zu erweitern.

    Anleitung zum Installieren von Subclipse
     
  4. "Hello World" und andere Beispielprogramme
    Alle Java-Programme aus der Vorlesung sind als Quelltext verfügbar. Um (als Start) das Programm "Hello World" auszuführen, oder ein beliebiges anderes Beispielprogramm, folgen Sie am besten den folgenden Anweisungen:

    Getting started: Running the "Hello World" example program from the lecture.

 

Frequently Asked Questions (FAQ)

  1. Fehlende Kommandozeilen-Argumente - z.B. bei IntOps.java         [Antwort]
    Wenn ich in Eclipse das Programm IntOps.java ausführe, dann erscheint in der Konsole die Fehlerausschrift: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
     

  2. Programm kann Dateien nicht finden - z.B. DeluxeBoncingBall.java     [Antwort]
    Wenn ich in Eclipse das Programm DeluxeBouncingBall.java ausführe, dann erscheint in der Konsole die Fehlerausschrift: 
    Exception in thread "main" java.lang.RuntimeException: image earth.gif not found
     
  3. UTF-8 in Eclipse.     [Antwort]
    In den Übungen und im Praktikum sollen alle Java-Programme im UTF-8 -Format abgeben werden. Wie bekomme ich Eclipse dazu, die Java-Quelltexte in diesem Format zu spreichern?

     

Grafischer TOY-Simulator   

ImageMagick

Ist ein leistungsfähiges Werkzeug zum Bearbeiten von Grafiken. Insbesondere ermöglicht es die Erzeugung von animierten Bildern (siehe auch VL-Folien)

Download: http://www.imagemagick.org/
 

Zusatzmaterial

Kontakt

  • Warten Sie mit Fragen, Problemen oder Hinweisen nicht zu lange. Sprechen Sie uns zeitnah an, wenn wir noch helfen können.
  • Folgende Ansprechpartner sind für Sie da:
    • Vorlesender: Prof. Jens-Peter Redlich
    • Übungsleiter: Dr. Wolf Müller
    • Praktikumsleiter: Dr. Klaus Ahrens
 Links
Einstieg in die Informatik
HU-Berlin
Unix Crash Kurs
HU-Berlin
PI-1 Prof. Schlingloff
HU-Berlin
PI-1 Prof. Bothe
HU-Berlin
PI-1 Prof. Scheffer
Princeton Univ.
CS126 (K.Wayne)
Princeton Univ.
CS109 (B.Kernighan)