Winter
2007/08

PI-1 (Praktische Informatik 1)
(Grundstudium, 4VL + 2UE)

Professor: Jens-Peter Redlich
Übungsleiter: Anatolij Zubow, Mathias Kurth


Computer Science Department
Systems Architecture Group

>>> KLAUSURERGEBNISSE vom 26.01.2008 <<<

 
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 Hardware, Netzwerke und Softwaresysteme funktionieren und wie sie zusammenarbeiten. Dabei werden Sie auch die prinzipiellen Grenzen von Computern kennen lernen.

 
Überblick
  • Einführung in die Praktische Informatik
  • 2 Vorlesungen je Woche (jeweils 90 Minuten)
  • Zusätzlich: Übungen / Praktikum

Prüfungen

  • Am Ende des Semesters gibt es eine schriftliche Klausur.
  • Um für die Klausur zugelassen zu werden, müssen Sie regelmäßig an den Übungen teilnehmen und 70% der für die Übungsaufgaben vergebenen Punkte erhalten.
  • Regelmäßige Teilnahme an der Vorlesung 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 für den 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   (Mo,Mi, 11:00-12:30, Rud 26, Raum 0.110, Prof. Redlich)
  1. Einführung
    AufzählungIntroduction
    AufzählungWhat computers can do
     
  2. Java Basics
    AufzählungJava - Basics I    - Hello World, Basic Data Types, Flow Control, Debugging
    AufzählungJava - Basics II   - Arrays, Input/Output, Functions, Recursion, Percolation
     
  3. Technische Grundlagen
    AufzählungToy  - Zahlensysteme, Toy Maschine, Einfache Algorithmen in Maschinensprache       
     
  4. Objektorientierte Programmierung
    AufzählungUsing existing Data Types - Color, Picture, In (streams)
    AufzählungCreating new Data Types
    AufzählungDesigning Data Types
    Further readings:  STEIN: Encapsulation.
     
    AufzählungConcurrent Execution / Threads
    Further readings: STEIN: Synchronization.
     
  5. Laufzeiten von Algorithmen - am Beispiel von Sortieralgorithmen
    AufzählungSorting and Performance  -  insert-sort, merge-sort (quicksort)
    AufzählungIntractability - NP, P, NP-Complete, dealing with intractability
     
  6. Algorithmen und Datenstrukturen (Überblick)
    AufzählungLinked Structures - Lists, Queues, Stacks, Trees, (Generics)
    AufzählungSymbol Tables - Binary Search Trees, Hashing
    AufzählungGraphs - Small World Phenomenon
     
  7. Wissenschaftliches Rechnen
    AufzählungScientific Computing  - IEEE floating point representation, roundoff error, stable algorithms, well-conditioned problems

    Further readings: What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Further readings: How Java's Floating-Point Hurts Everyone Everywhere
    Useful Tools: Mathematica, Matlab, Maple
     
  8. Einführung in die Programmiersprache C  (ANSI-C)     [schaffen wir nicht mehr]
    AufzählungC - Intro to Basics
    Further readings: KERNIGHAN, RITCHIE: Programmieren in C. (Taschenbuch)
     
  9. Course Review
    AufzählungYou have learned a lot! - Broader context and outlook.
     

Übungen

 Mo,Mi09:15-10:45Rud 26Raum 1.306Dipl-Inf. A.Zubow
     Die11:00-12:30Rud 26Raum 1.306Dipl-Inf. M.Kurth
 Do13:00-14:30Rud 25Raum 3.011Dipl-Inf. M.Kurth

Praktikum

Beispielprogramme aus der Vorlesung

AufzählungPI1_WiSe2007.zip     (Sammlung der Quelltexte als Eclipse-Projekt)
AufzählungXToy.zip         (Quelltext des grafischen TOY Simulators als Eclipse-Projekt)
 

Empfohlene Literatur

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

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

Eclipse

Eclipse ist eine integrierte Software-Entwicklungsumgebung (SDE = Software Development Environment), die mehrere Programmiersprachen unterstützt, darunter auch Java. Hier können Sie die aktuelle Version herunterladen: http://www.eclipse.org/downloads/ (wir empfehlen das vorkonfigurierte Paket "Eclipse IDE for Java Developers").
Optional empfehlen wir anschließend die Installation des Eclipse-Plugins Subclipse
für die Verwaltung ihres Quellcodes mit SVN/CVS (z.B. erhalten Sie so die Beispiele aus der Vorlesung). Folgen Sie einfach den Beschreibungen auf http://subclipse.tigris.org/install.html.

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 Java - Basics II, ca. Seite 66)

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

Zusatzmaterial (englisch)

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:
 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. .  © 2023 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group.Contact: sar@informatik.hu-berlin.de .