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ählung Introduction
    Aufzählung What computers can do
     
  2. Java Basics
    Aufzählung Java - Basics I    - Hello World, Basic Data Types, Flow Control, Debugging
    Aufzählung Java - Basics II   - Arrays, Input/Output, Functions, Recursion, Percolation
     
  3. Technische Grundlagen
    Aufzählung Toy  - Zahlensysteme, Toy Maschine, Einfache Algorithmen in Maschinensprache       
     
  4. Objektorientierte Programmierung
    Aufzählung Using existing Data Types - Color, Picture, In (streams)
    Aufzählung Creating new Data Types
    Aufzählung Designing Data Types
    Further readings:  STEIN: Encapsulation.
     
    Aufzählung Concurrent Execution / Threads
    Further readings: STEIN: Synchronization.
     
  5. Laufzeiten von Algorithmen - am Beispiel von Sortieralgorithmen
    Aufzählung Sorting and Performance  -  insert-sort, merge-sort (quicksort)
    Aufzählung Intractability - NP, P, NP-Complete, dealing with intractability
     
  6. Algorithmen und Datenstrukturen (Überblick)
    Aufzählung Linked Structures - Lists, Queues, Stacks, Trees, (Generics)
    Aufzählung Symbol Tables - Binary Search Trees, Hashing
    Aufzählung Graphs - Small World Phenomenon
     
  7. Wissenschaftliches Rechnen
    Aufzählung Scientific 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ählung C - Intro to Basics
    Further readings: KERNIGHAN, RITCHIE: Programmieren in C. (Taschenbuch)
     
  9. Course Review
    Aufzählung You have learned a lot! - Broader context and outlook.
     

Übungen

  Mo,Mi 09:15-10:45 Rud 26 Raum 1.306 Dipl-Inf. A.Zubow
     Die 11:00-12:30 Rud 26 Raum 1.306 Dipl-Inf. M.Kurth
  Do 13:00-14:30 Rud 25 Raum 3.011 Dipl-Inf. M.Kurth

Praktikum

Beispielprogramme aus der Vorlesung

Aufzählung PI1_WiSe2007.zip     (Sammlung der Quelltexte als Eclipse-Projekt)
Aufzählung XToy.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. .  © 2024 Humboldt-Universität zu Berlin, Computer Science Department, Systems Architecture Group. Contact: sar@informatik.hu-berlin.de .