Winter
2008/09

 
[322500]   
PI-1 (Praktische Informatik 1)

VL: Mo: 11:00-12:30, Rud 26, Room 0.110, Prof. Jens-Peter Redlich
VL: Mi: 11:00-12:30, Rud 26, Room 0.307, Prof. Jens-Peter Redlich

UE: Di: 13:15-14:45, Rud 26, Room 1.308, Dr. Wolf Müller
UE: Di: 15:15-16:45, Rud 25, Room 3.101, Dr. Wolf Müller
UE: Do: 13:15-14:45, Rud 26, Room 0.307, Dr. Wolf Müller
Praktikumsleiter: Dr. Michael Ritzschke

 


Computer Science Department
Systems Architecture Group

 
Die Ergebnisse der Klausur vom 29.Januar 2009 finden Sie >>> hier <<< .
 
 
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 (Nebenfach).
  • 2 Vorlesungen je Woche (jeweils 90 Minuten).
  • Zusätzlich: Übungen / Praktikum (jeweils 1x je Woche).

Prüfungen

  • Schriftliche Klausur am Ende des Semesters (für diejenigen, die nur PI1, ohne PI2, benötigen), bzw. am Ende des nachfolgenden (Sommer-)Semesters (für alle anderen, als PI1+PI2 Kombi-Klausur). Ob Sie nur die PI1 oder PI1+PI2 besuchen müssen, legt Ihre Prüfungsordnung fest und kann bei Ihrem Prüfungsamt erfragt werden. Für die Variante PI1+PI2 gibt es nur die Möglichkeit der Kombi-Klausur; es ist also nicht möglich, sich nach dem ersten Semester für die PI1 als Einzelleistung prüfen zu lassen.
  • 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. Ebenso müssen Sie das Praktikum erfolgreich absolvieren. Für beide Teilleistungen erhalten Sie jeweils einen Übungsschein bzw. einen Praktikumsschein, den Sie bei der Anmeldung zur Prüfung vorlegen müssen. Scheine aus früheren Jahren behalten ihre Gültigkeit.
  • 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.
     
  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.
     
  6. Java Threads
    Threads - Concurrent Execution, Synchronization.
    Further readings: STEIN: Synchronization.
     
  7. Performance (Execution Times) of Algorithms
    Sorting - insert-sort, merge-sort (quicksort).
    Intractability - NP, P, NP-Completeness, dealing with intractability.
     
  8. Algorithms and Data Structures (a quick tour - in Java)
    Linked Structures - Lists, Queues, Stacks, Trees, (Generics).
    Symbol Tables - Binary Search Trees, Hashing.
    Graphs - Small World Phenomenon.
     
  9. Regular Expressions
    Regular expressions - Pattern Matching.
     
  10. Internet (optional, only if time permits)
    Internet - Communication Networks (TCP/IP), Client/Server applications, peer-to-peer systems.
     
  11. Scientific Computing
    Numeric computations - IEEE floating point representation, roundoff error, stable algorithms, well-conditioned problems.
    Mathematica - Doing Math with Computers.

    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
     

Übungen & Praktikum

Jede Woche gibt es ein neues Aufgabenblatt. Alle Aufgaben werden in der nächsten Übung vom Übungsleiter erläutert. Mit (UE) gekennzeichnete Aufgaben sind in der Regel bis zum Übungstermin der nachfolgenden Woche zu bearbeiten; die Lösungen werden in der Übung von einer vom Übungsleiter zufällig ausgewählten Übungsgruppe vorgetragen. Mit (PR) gekennzeichnete Aufgaben sind im Praktikum zu lösen. In der Regel müssen Sie dem Praktikumsleiter 2 Wochen nach Aufgabenstellung ein lauffähiges Programm vorlegen. Bei mit (PR,UE) gekennzeichneten Aufgaben wird der Lösungsansatz nach der ersten Woche in der Übung vorgestellt (wie bei UE) und anschließend im Praktikum bearbeitet (wie bei PR).

In den Übungen sind 50% erfolgreiche Vorträge durch einen Repräsentanten der jeweiligen Gruppe nötig, um einen Übungsschein zu erhalten. Die Voraussetzungen für den Praktikumsschein sind separat geregelt.

BlattVorbesprechung UELösung UEAbgabe PRSonstiges
01a

20.10.08

27.10.08

27.10.08[pdf]
02a27.10.0803.11.0810.11.08[pdf]
03a,03b*03.11.0817.11.0824.11.08 [pdf]
04a, 04b17.11.0824.11.0801.12.08  
05a, 05b, 05c24.11.0801.12.08 08.12.08  
06d01.12.08 08.12.08 15.12.08[pdf]
06a08.12.08 15.12.08-- 
07a, 08a05.01.09 12.01.09 19.01.09  
08b, 09b12.01.0919.01.0926.01.09 
09a, 10a, 10b19.01.0926.01.0909.02.09 
11a, 12a02.02.0909.02.09-- 
     
13a,13b    
14a    
15a    


Java code from the lecture

  • All Java code fragments from the lecture are available for you as source code. To run "Hello World" or any other of these examples, follow these instructions: Getting started: Running the "Hello World" example program from the lecture.
     
  • After about 1/2 semester we'll learn to program the TOY machine in assembly / machine language. During lecture we use the graphical TOY simulator XToy, which comes pre-packaged with all code-sample as an Eclipse Project: XToy.zip.
     
  • Installing Eclipse with SVN-Plugin "Subclipse". We have already installed a properly configured Eclipse on all pool machines. If you want to run any sample program from the lecture on another machine, for instance at home, make sure that you have installed Eclipse with the SVN-plugin "Subclipse". For instructions how to do that, click here.
     

Empfohlene Literatur

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

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

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

 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 .