Winter
2010/11

 
GdP - Grundlagen der Programmierung


Vorlesung

Montag, 15:00-16:30, RUD 26, 0'115, Prof. Jens-Peter Redlich
Mittwoch, 15:00-16:30, RUD 26, 0'115, Prof. Jens-Peter Redlich

Übungen

Montag,    11:00-12:30, RUD 26, 1'306, Dr.A.Zubow   
Montag,    13:15-14:45, RUD 26, 1'306, Dr.A.Zubow    

Dienstag,  11:00-12:30, RUD 25, 3.113, Dr.W.Müller    
Dienstag,  13:15-14:45, RUD 25, 3.113, Dr.W.Müller    

Mittwoch, 11:00-12:30, RUD 26, 1'306, Dr.G.Lindemann
Mittwoch, 13:15-14:45, RUD 26, 1'306, Dr.G.Lindemann 

Donnerstag, 09:15-10:45, RUD 26, 1'306, Ch.Gierds    

Freitag,     11:00-12:30, RUD 26, 1'306, Ch.Gierds      


Computer Science Department
Systems Architecture Group


Offizielles Endergebnisse der Klausur vom 8.4.2011:   >>> hier <<<

Offizielles Endergebnisse der Klausur vom 26.02.2011:    >>> hier <<<

Die nächste Widerholung findet am Ende des nächsten Wintersemesters statt, wenn die dann von Prof. Bothe neu gelesene GdP-Vorlesung von ihm geprüft wird.

 
 
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 (nächste Wiederholungsmöglichkeit: 1 Jahr später).
  • 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 sehr gute Mitarbeit in den Übungsstunden Zusatzpunkte vergeben (sowohl für Übungen, wie auch für das Praktikum). Falls Sie geringfügig weniger als die geforderten 50% der Punkte haben, ist dies ihre einzige Möglichkeit, um die 50%-Schwelle doch noch zu überspringen.
  • Regelmäßige Teilnahme an Vorlesungen und Übungen sind selbstverständlich. Längeres unentschuldigtes Fehlen kann (nach Ermessen des Professors) als Grund für das Versagen der Prüfungszulassung gewertet werden.

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?
     
  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.
     
  3. A Computing Machine (TOY)
    Number systems.
    Toy machine - Architecture, simple algorithms in machine language.
    Data Encryption - Short introduction how to encode and to encrypt data  (additional material - not covered in lecture)
     
  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.      (topic excluded from examination)
    Further readings: STEIN: Synchronization.
     
  7. Performance (Execution Times) of Algorithms
    Sorting - insert-sort, merge-sort (quicksort).
    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.
    Graphs - Small World Phenomenon.      (topic excluded from examination)
     
  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.      (topic excluded from examination)
    Mathematica - Doing Math with Computers.      (topic excluded from examination)

    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

Ü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 8:00 Uhr abgegeben sein.

Nr. Ausgabedatum Abgabedatum Blatt Sonstiges
1 25.10.2010 08.11.2010 [pdf]  
2 08.11.2010 22.11.2010 [pdf]  
3 22.11.2010 06.12.2010 [pdf]  
4 06.12.2010 20.12.2010 [pdf]  
5 03.01.2011 17.01.2011 [pdf]  
6 17.01.2011 31.01.2011 [pdf]  

Praktikum

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


Empfohlene Literatur

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

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

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 eine SDE - Integrated Development Environment - also ein Programm, das die vielen Arbeitsschritte bei der Softwarenetwicklung automatisiert und koordiniert. Es gibt viele SDEs 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 verschiedene Java-Programme entwickeln, für einige vielleicht auch noch mehrere 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 source 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   

Spielend Programmieren lernen mit Kara (für Ihre Kinder / Ihre künftigen Schüler, oder für Sie :-)

Kara basiert auf dem Konzept endlicher Automaten, ist alltagsnah und trotzdem ein theoretisch fundiertes und mächtiges Programmiermodell. Verschiedene Programmierumgebungen eröffnen spielerische Zugänge zu grundlegenden Programmierkonzepten mit unterschiedlichem Schwierigkeitsgrad für allgemeinbildende Schulen bis hin zu Diplomstudiengängen in der Informatik.  [Kara Home Page]

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)

Legal disclaimer. .  © 2024 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group. Contact: sar@informatik.hu-berlin.de .