Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Benutzer:Martin Häcker/Java Kurs: Unterschied zwischen den Versionen

(Durchführung: Ankündigungsmaßnahmen)
(Was wir nächstes mal Besser machen können)
 
(62 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Javakurs=
+
= Javakurs - Organisation=
[[Javakurs2006]]
 
* Räume -> nicht so das problem
 
* Beamer / VNC-Multicast?
 
* Zedat (FU) hat spezielle Räume für sowas?
 
* Anzahl der Leute: eher viel zu viele, ca. 100 Geht
 
  
= Beteiligte =
+
* Webseite zum Kurs: [[Javakurs2006]]
 +
** [[Javakurs2006/Anmeldung | Ehemalige Anmeldeseite]]
 +
* Webseiten zu den einzelnen Tagen:
 +
** [[Javakurs2006/Tag 1]]
 +
** [[Javakurs2006/Tag 2]]
 +
** [[Javakurs2006/Tag 3]]
 +
** [[Javakurs2006/Tag 4]]
 +
* Webseiten für die Tutoren:
 +
** [[Javakurs2006/Einstimmungstreffen]]
 +
* Dokumente für Tutoren und Teilnehmer liegen auf [http://docs.freitagsrunde.org/javakurs/ dem Freitagsrunde Server]
 +
 
 +
== Beteiligte ==
 
Wer kennt noch jemanden der Mitmachen würde? '''Bitte ansprechen - immer Persönlich.'''
 
Wer kennt noch jemanden der Mitmachen würde? '''Bitte ansprechen - immer Persönlich.'''
  
Zeile 17: Zeile 23:
 
Teilnehmer bitte mit e-mail-Adresse eintragen
 
Teilnehmer bitte mit e-mail-Adresse eintragen
  
==Tutoren ==
+
Die Veranstalter sind auf [[Javakurs2006/Veranstalter]] verlinkt.
* Marcel
+
 
* Martin
+
= Inhalt und Ablauf =
* Arthur
+
== Termin ==
* Florian
+
* Mo, 03.04.2006 - Do, 06.04.2006
* Thomas
+
== Tagesablauf ==
* Felix
+
* Für Tag 1 bis 3:
* Kristian Bergmann
+
{| border="0" cellpadding="4" cellspacing="2"
 +
|- bgcolor="#E0E0E0"
 +
!von
 +
!bis
 +
!was?
 +
|- bgcolor="#F0F0F0"
 +
|9:00
 +
|9:45
 +
|Vorlesung
 +
|- bgcolor="#F8F8F8"
 +
|10:00
 +
|12:00
 +
|Übung
 +
|- bgcolor="#F0F0F0"
 +
|12:00
 +
|12:45
 +
|Mittagspause
 +
|- bgcolor="#F8F8F8"
 +
|13:00
 +
|13:45
 +
|Vorlesung
 +
|- bgcolor="#F0F0F0"
 +
|14:00
 +
|16:00
 +
|Übung
 +
|}
 +
 
 +
== Themen ==
 +
{| border="0" cellpadding="4" cellspacing="2"
 +
|- bgcolor="#E0E0E0"
 +
!Tag Nr.
 +
!Vormittag
 +
!Nachmittag
 +
|- bgcolor="#F0F0F0"
 +
|[[{{PAGENAME}}/Tag 1|Tag 1]]
 +
|Hello, World!
 +
|Methoden und Schleifen
 +
|- bgcolor="#F8F8F8"
 +
|[[{{PAGENAME}}/Tag 2|Tag 2]]
 +
|Modularisierung mit Klassen und Objekten
 +
|OO-Vertiefung und Klassenbibliothek
 +
|- bgcolor="#F0F0F0"
 +
|[[{{PAGENAME}}/Tag 3|Tag 3]]
 +
|Aufgabe Bäckerei
 +
|Effizient Fehler finden und Testen
 +
|- bgcolor="#F8F8F8"
 +
|[[{{PAGENAME}}/Tag 4|Tag 4]]
 +
|Strukturiertes Programmieren / Projektaufgabe
 +
|Projektaufgabe
 +
|}
 +
 
 +
== Allgemeine Ziele, Überlegungen und Ideen ==
 +
* [[{{PAGENAME}}/Allgemeine Lernziele|Allgemeine Lernziele]]
 +
 
 +
== Literatur ==
 +
'''Sun-JAVA-API'''
 +
* [http://java.sun.com/j2se/1.4.2/docs/api/ Java-API zu 1.4.2] sollte jeder jederzeit beim Programmieren offenhaben
 +
* [http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html The Java Language Specification, Third Edition]
  
== Rechnerbetreuer ==
+
'''Java ist auch eine Insel'''
* Jacob
+
* ziemlich einfach geschrieben und viel erklärt am Anfang, gute Einführung, die aber auch in die Tiefe geht (v.a. gedruckt auch in die BREITE :-)
* Karl
+
* Über ein Dutzend der vierten Auflage in der UB-Lehrbuchsammlung erhältlich (OPAC derzeit down, daher kein Link)
* Andreas Janson (vielleicht)
+
* Als kostenloses eBook [http://www.galileocomputing.de/openbook/javainsel5/ ansehen] und [http://download.galileo-press.de/openbook/javainsel5/galileocomputing_javainsel5.zip downloaden]
 +
* Zu erwerben bei [http://www.amazon.de/exec/obidos/ASIN/3898427471/thetruth0e Amazon in deutsch]
  
== Teilnehmer ==
+
'''Structure and Interpretation of Computer Programs'''
* Max
+
* "Read the book. Do the exercises. It will teach you more about the essence of programming than any other book I know. -- ChristianLemburg". Dem kann ich mich nur anschließen. --[[Benutzer:Martin Häcker|Martin Häcker]]
 +
* [http://mitpress.mit.edu/sicp/ SICP Webseite]
 +
* [http://mitpress.mit.edu/sicp/full-text/book/book.html Ebook]
 +
* [http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures Video-Lectures zu dem Buch]
 +
* [http://www.amazon.de/exec/obidos/ASIN/0262011530/thetruth0e englisch bei Amazon]
 +
* [http://www.amazon.de/exec/obidos/ASIN/3540423427/thetruth0e deutsch bei Amazon]
  
= Durchführung =
+
= Was wir nächstes mal Besser machen können =
== Ankündigung =
+
* von den Teilnehmern zwei email-Adressen anfordern, weil viele ihre cs-mail nicht weiterleiten und daher selten lesen
* In den Tutorien von Info 1
+
* Nächstes mal die Veranstaltung beim IRB mindestens 1-2 Monate vorher anmelden - oder über das ZRZ abwickeln, da der IRB stark überlastet ist
* In den Newsgroups Informatik 1 + 2
+
* Fakultätsrat Beschluss holen, das wir alle Rechnerräume belegen dürfen
* In den Mailinglisten der Freitagsrunde
+
* Den leuten früher bescheid geben
* An alle Teilnehmer von Informatik 1 per mail
+
* tool bauen das die Anmeldung automatisiert
* Während der Info 1 Klausureinsicht mit einem Plakat
 
  
= Stoffplan =
+
= TODOs =
* JAVA Grundlagen!
 
* "Objekt" ist nicht bäh...
 
  
== Arthurs Zeitplan ==
+
== Zeitplan ==
erstmal der allgemeine Tagesablauf:
 
  
* 1 h "Großgruppe"
+
  8      20.02.-26.02.      Räume, Web, Mail, Tutoren werben, allg. Werbung
* 2-3 h Kleingruppe
+
  9      27.02.-05.03.      Stoffaufteilung/Zeitplan
* Pause (Essen)
+
10      06.03.-12.03.      Aufgabenentwurf fertig
* 1 h "Großgruppe"
+
11      13.03.-19.03.
* 2-3 h Kleingruppe
+
12      20.03.-26.03.      Aufgaben fertig und besprochen
* Hausaufgaben?
+
13      27.03.-02.04.      Beamer, Technik, Getränke, Kopien, Tutoren anleiten & einteilen
 +
14      03.04.-07.04.      Veranstaltung
  
daraus ergibt sich bei 4-5 Tagen 8-10 Lerneinheiten (LE).
+
== Unassigned ==
 +
* Eintrag in den [[Termine]]n aktuell halten
  
;LE1
+
== Arthur ==
:Ziel eigenes "Hello World" in Java
+
* Räume
;LE2
 
:Ziel Bedingung benutzen
 
;LE3
 
:Ziel Schleifen benutzen
 
;LE4
 
:Ziel Methoden Aufruf (einfach)
 
;LE5
 
:Ziel Parameter und Rückgabewerte bei Methoden
 
;LE6
 
:Ziel Objekt als Sammlung von Daten (Struct)
 
:Konstruktor?
 
;LE7
 
:Ziel Objekt mit Methode(n) / Konstruktor
 
;LE8
 
:Ziel Standardmethoden (toString?)
 
;LE9
 
:Ziel Standardbibliothek (z.B. file IO)
 
;LE10
 
:Ziel Standardbibliothek
 
  
 +
== Martin ==
  
* Java
+
== Florian ==
** datentypen
 
** variablen
 
** zuweisung
 
** vergleich
 
** bedingungen if
 
** schleifen
 
** ein/ausgabe
 
** datei ein/ausgabe
 
* Programmieren im allgemeinen / "prozedural" programmieren
 
** Zustandsmaschine
 
* Problemlösungsstrategien
 
** Java
 
*** Debugging
 
*** kleine probleme
 
*** testen
 
** idee
 
*** kleine probleme
 
  
== Felixs Zeitplan ==
+
Bäckerei (3.Tag)
== Martins Zeitplan ==
 
Vorgehen nach Ausdrucksmodell? Also Sprachfeatures so einführen wie man sie braucht um Probleme ausdrücken zu können? -- Schwierig, behalte ich aber mal im Hinterkopf.
 
  
=== Tag 1 ===
+
== Felix ==
Einführung nach [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-9.html#%25_chap_1 SICP Kapitel 1] (bis "Programming in Lisp")
+
== RobertL und Felix ==
 +
== RobertB ==
  
Drei Dinge die Wichtig sind für Programmierer:
+
= Treffen 6.2.06 =
* Primitive Ausdrücke
+
Bekanntmachung:
* Kombinationsmöglichkeiten
+
Termin 3.4.-7.4.
* Abstraktionsmöglichkeiten
 
  
Java Stoff:
+
== Webseite ==
Ein Beispiel bringen und daran erklären was primitive Ausdrücke, Kombinationen und Abstraktionsmöglichkeiten sind (evtl. langsam entwickeln):
+
* Absolute anfänger
class Test {
+
* wenn weniger als hundert bis bestimmtes datum
static void print(double aNumber) {
+
* dann auch mit anderen imperativen sprachen
System.out.println("> " + aNumber);
+
* CS-ACCOUNT
}
+
* Anmeldung
 +
* Überweisung / Persönlich vorbeibringen
 +
 
 +
= Treffen 10.3.06 =
 +
# Allgemeines:
 +
## ToDo:  
 +
##* Artur: Raum mieten im MA043 mit Technik (2 Mikrofone tragbar, Funk)
 +
##* Artur: Rechnerbetrieb für Rechnerräume ansprechen
 +
##* Artur: Kamera für Bildaufnahmen
 +
# Rechnerübungen:
 +
## ToDo:
 +
##* Handout mit wichtigen Tipps:
 +
##* Ausführen, Compiler, URLs, Bibliotheksfunktionen, "HelloWorld", usw.
 +
##* nächste Woche:
 +
##** Aufgaben müssen ausformuliert sein,
 +
##** Miniaufgaben ferig sein, alles selbst implementiert haben
 +
##** Zeit f. Implementierung messen (nicht von den Aufgabenstellern)
 +
##** Kleingruppen machen Vorschlag, Vortragender schaut drüberund nickt ab
 
   
 
   
public static void main(String [] arguments) {
+
Fazit:
print(3 * 4);
+
* Aufgaben ausarbeiten und ausformulieren (die Leute die sich das ausgedacht haben), ein anderer programmiert Aufgabe Probe
print(7 + 23 * 8 - 3);
+
 
// ....
+
Ausarbeitungen:
}
+
# LE: Robert B., Dorian, Ellen
}
+
# LE: Sven, Daniel
* Variablendeklaration - Namen vergeben für dinge die man berechnet hat!
+
# LE: Artur, Robert L., Felix
** Lokale Namen und wieso: (vielleicht?) [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%25_toc_%25_sec_Temp_41]
+
# LE: Florian, Martin
An dieser Stelle primitive Datentypen und String einführen, mit dem Hinweis das bei den Primitiven alles normal sei, während bei String "alles anders" ist. Dann später diesen Unterschied aufgreifen. (String ist ja nun "immutable", trotzdem?).  
+
 
* Zuweisung
+
Aufgaben so designen, so dass sie anständig auf Papier ausdruckbar sind (im Wiki hinterlegen)
* if, else
+
 
* methoden -> Wichtigkeit das man Programme in verständliche und Sinnvolle Teile unterteilt: [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%25_sec_1.1.8 Procedures as Black-Box Abstractions]
+
Zusatzaufgaben auf seperaten Zettel, Ausgabe des Zettels erst bei Nachfrage in der Übung (nicht ankündigen)
* Return
+
 
* System.out.println()
+
 
* wie testet man ob und wie etwas geht? (Java Ausprobieren)
+
Freitagsergebnisse der Ausarbeitung für LEs: siehe Anhang
 +
 
 +
Offenes:
 +
* Eclipse schon am 2. Tag einsetzen?
 +
* Thema Gute Namen?
 +
* Studenten mit "Migrationshintergrund"
 +
* zeiteinteilung für Aufgaben 1/10? 1/5? -> Verhältnis Aufgabe - Zeit
 +
** Tagabhängig (1. Tag: Faktor 10, 3.Tag: Faktor 2 z.Bsp. ...)
 +
 
 +
 
 +
 
 +
== Anhang zu 2.2.: ==
  
Abstrakter Gedanke: Für den Computer ists wurscht wie man das was man meint aufschreibt, wir Menschen dagegen sind von sowaas verwirrt:
+
=== 1.LE  ===
class _{static long _
+
Handout:
(long __,long  ___) {
+
# Melde Dich an einer Sun an und wähle einen Editor Deiner Wahl. Wenn Du keinen kennst dann nimm Editor xy.
return __==0 ?___+ 1:
+
# Richtig/Falsch-Tabellen:
___==0?_(__-1,1):_(__
+
#* kopieren von einer Datei aus Verzeichnis
-1,_(__, ___-1)) ;  }
+
#* Umbenennen von Dateien
static  {int _=2 ,___
+
#* 2 Varianten für Aufruf von Dateien (mit class / richiger Aufruf), Am Ende wird bei richtigem Ausführen der Datei in der Ausgabe stehen, was als nächstes zu tun ist (nächste Aufgabe).
= 2;System.out.print(
+
# Kassenbon - Programm schreiben
"a("+_+','+___+ ")="+
+
#* Kassenbon mit print-Befehlen ausgeben
_ (_, ___) ) ;System
+
#* Vorgabe: nichts in Java
  .exit(1);}}//(C) Ulli
+
#* Aufgabenstellung:
 +
#** links: Ware, Mitte: Anzahl, rechts: Preis Stornos, Gesamtpreis am Ende des Bon ausgeben lassen, MwSt
 +
#*** keine arrays - lauter print-Ausgaben mit Variablen z.Bsp.: int anzahlApfel = 4;
 +
#*** Methode vorgeben, was an Produkten exitsiert, Variable mit Geldmaximum - wovon Produkte abgezogen werden
 +
#*** viele if/then - Beziehungen mit Geldausgaben (zu teuer, nicht genug Geld usw.)
 +
#*** mit globalen Variablen arbeiten
  
Wir können uns aber helfen indem wir das so schreiben:
+
=== 2.LE ===
/** @see: http://de.wikipedia.org/wiki/Ackermann-Funktion */
 
class AckermannFunctionDemo {
 
static long ackermann(long n, long  m) {
 
if (n == 0) {
 
return m + 1;
 
}
 
else if (m == 0) {
 
return ackermann(n - 1, 1)
 
}
 
else {
 
return ackermann(n - 1, ackermann(n, m - 1));
 
}
 
}
 
static {
 
int n = 2, m = 2;
 
System.out.print("ackermann(" + n + ',' + m + ") = "
 
+ ackermann(n, m));
 
System.exit(1);
 
}
 
}//(C) Ulli
 
  
Beispiele + Übungen
+
* Inhalte siehe Wikisite (Methoden,Arryas, Schleifen)
* Einige Expressions angeben und die Teilnehmer sollen feststellen was die ausgeben/berechnen würden
 
* Das gleiche dann nochmal mit if/else
 
* Einen mathematischen Ausdruck in Java übersetzen
 
* methoden definieren die bestimmte eigenschaften haben
 
Beispiele dann Abtippen und ausprobieren -> Sie sollen Nachfragen wenn sie was anderes hatten (oder sowas)
 
// TODO: Reicht das, oder brauchts noch mehr?
 
  
=== Tag 2 ===
+
Deltas:
* Methoden als abstraktionsmöglichkeiten -> verstecken von methoden [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%25_toc_%25_sec_Temp_43] Bringts das an der stelle?
+
* if - Bedingungen in Methoden auslagern
* while, for
+
* String - Vergleiche
** Anwendung davon
+
* 1. Programm mit syntaxfehlern
* Konzept Klassenbibliothek
+
* 2. Programm mit Vorgaben
** Javadocs finden, lesen, verwenden, schreiben -> http://www.javadocs.org
+
* Nulltes Elemten als erstes Element im Array (Länge 10, Index 9)
** List, ArrayList, InputReader, BufferedReader, Scanner
+
* "Nullpointer Exception"
* Wie entwickelt man Programme stück für stück? (Vorgehen + Testen)
+
* Tabelle richtig/falsch (siehe 1. LE)
** kleine stücke
 
** seperat testen (von main aus)
 
** ausblick automatisieren
 
  
=== Tag 3 ===
+
Viele kleine Aufgaben (5-6 Zeilen)
* Objekte als daten mit methoden ausssenherum
+
* Bon mit vielen print-Ausgaben aus LE1 umwandeln in Array
** um innendrinn auswechseln zu können
+
** sollen Studies besser machen ...
* Objekte, Static nicht static
+
** Fibonacci
** [http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%25_toc_%25_sec_3.1.2 Benefits of Local State]
 
  
=== Tag 4 ===
+
Einteilung in Aufgaben und Zusatzaufgaben
* vorgehen
+
Parsen von Kassenzettel an Stelle der Parser-Aufgabe
* debugging
 
* testen?
 
* Aufgaben
 
** Selber ein schlechtes Programm "fehlerbeseitigen lassen"
 
** schlechte Bezeichnungen durch bessere ersetzen lassen
 
  
= Vorgehen =
 
* Kochrezept....
 
* Legen immer main -> instanz -> run an, ohne zu verstehen
 
* Von Opal ausgehen -> bringt nichts weil Opal nicht verstanden?
 
* Von woanders ausgehen? Von null -> normale Welt
 
* Von vornherein Objektorientiert -> Langfristig besser? Auch kurzfristig besser?
 
** Test: Wird das zum Problem wenn wir das mit run() einführen?
 
* '''Wir wollen das die Teilnehmer danach im Semester das den anderen Erklären, die nicht da waren.'''
 
  
== Was können sie wenn wir fertig sind? ==
+
=== 3.LE ===
* Utility Objekt: readFile(aFilename), getUserInput(aPrompt)
+
* Inhalte auf Notebook von Robert L.(nachreichen)/oder im Wiki(?)  
** JavaAPI lesen
+
Aufgaben stehen im Wiki. Was noch auf meinem Notebook sein soll weiß ich nicht. Robert L.
** Streams verschachteln
 
** UtilityObjekt -> Reuse
 
* Objekt / null / Initialisieren
 
* main -> instanz -> run() (erklären wir später)?
 
* Programm mit mehreren Dateien
 
* sehen das das scheiße ist:
 
class _{static long _
 
(long __,long  ___) {
 
return __==0 ?___+ 1:
 
___==0?_(__-1,1):_(__
 
-1,_(__, ___-1)) ;  }
 
static  {int _=2 ,___
 
= 2;System.out.print(
 
"a("+_+','+___+ ")="+
 
_ (_,  ___) ) ;System
 
.exit(1);}}//(C) Ulli
 
* Lösungsstrategien Top->Down, Bottom->Up
 
** Aufgaben angehen
 
** Fehlerlösungsstrategien: NullPointerException, etc.
 
*** Was sagt denn der Fehler genau? Wie finde ich das raus?
 
*** Kaputter Code -> Der muss Korrigiert werden
 
**** n-mal das gleiche -> schleife / methode
 
** Zu langer code -> kurz machen
 
* Testen?: von main aufrufen, unittests, debuggen, printf-style
 
* Was wissen die Leute am Schluss von Objekten?
 
** Collections, Exceptions, Streams kennen
 
** Konstruktoren, Instanzvariablen (vielleicht weglassen?)
 
** Daten mit Methoden aussen herum (vielleicht)
 
  
== Sprachkonstrukte die wir Behandeln und deren Reihenfolge ==
+
Deltas:
* if
+
* "Löschen" auf 4.LE verschieben
* while, for ( <- Bis hier tag eins)
+
* mehr Aufgaben (aus LE4?)
* methode
 
* try - catch / throws??
 
* ++ oder +=, was noch? Oder gar nichts?
 
* NICHT MACHEN: try {} cach (Throwable e) {}
 
  
=== Was wir nicht machen ABSICHTLICH ===
+
=== 4.LE ===
* :?, do{}while, ++i, switch,
+
* Inhalte werden nachgereicht von Florian
  
== Vielleicht haben wir noch Zeit hierfür? ==
+
Deltas:
* SVN?
+
* Thema Java-IO in LE 5 reinnehmen
* static / instanz -> Ebenen modell
 
  
== Erklärungsansätze ==
+
= Treffen 17.3.06 =
=== Objektorientierung ===
+
Robert, Sven, wo wart ihr?
* Objekt, Klasse erklären als: "Klasse" Mensch
 
** davon dann klonen mit bestimmten Modifikationen (augenfarbe, größe, name....)
 
** das wäre dann klasse, objekte und konstruktoraufruf
 
* Objekte / Klassen erklären als
 
** Platonische Ideen (Pferd)
 
** Tatsächliches Ding (Bruno auf dem ich jeden Dienstag in Hellersdorf reite)
 
* Objekte als Daten mit ''Schutzschicht'' Methoden aussen herum
 
** Klassen als solches erst später (quasi erst prototyp und dann klassen erklären)
 
  
* Ganz anderer Ansatz: Erklären über Einheiten die sich über Nachrichten gegenseitig verständigen
+
Was machen wir wenn manche Leute mit dem Tempo nicht mitkommen?
 +
* Wir können die Übung wiederholen
 +
* Wir können die Vorlesung um einen halben Tag verschieben
 +
* Wir haben noch Aufgaben in der Hinterhand, damit Leute, die wiederholen müssen, das tun können
 +
* Vielleicht verzögern wir die Vorlesung auch gar nicht, sondern versetzen nur die Übungen
 +
* Wenn zu viele ein Problem haben, dann laden wir die in spezielle Gruppen ein.
 +
* Ob wir "Ghetto"-Gruppen machen, oder ob wir die Langsameren doch lieber in den durchmischten Gruppen lassen müssen wir nochmal Diskutieren - in der Gruppe kann sich auch einiges Ausgleichen.
  
=== main ===
+
Für nächste Woche
* Sich selbst am Schopf aus dem Sumpf herausziehen -> Münchhausen
+
* Aufgaben Ausarbeiten und Programmieren
** Am anfang gibts keine Objekte, also brauchts mechanismus um das erste erstellen zu können
+
* Vorträge Aufbauen
 +
* Dann ins Wiki!
  
== Mehrere Möglichkeiten ein Programm anzufangen ==
+
Wir wollen versuchen auf standardisierte Begriffe zurückzugreifen - wenn wir sie überhaupt verwenden. Arthur macht das. :)
* Eclipse Scrapbook Page (File>New>Other>Java>Java Run/Debug>Scrapbook Page)
 
** geeignet für: Primitive, Zusammengesetzte ausdrücke, variablen, methoden aufrufen
 
** evtl, sogar main motivieren, indem man erst keinen startpunkt hat und ihn dann von scrapbook nach main migriert
 
* Static block in der Klassse ''System.exit(0)'' nicht vergessen!
 
** geeignet für gar nichts?
 
* Code direkt in main
 
** startpunkt des programms
 
* von main aus run() aufrufen
 
** so wie es in ernsthaften programmen gemacht wird.
 
  
= Aufgaben die wir Stellen =
 
* UtilityObjekt mit readFile(aFilename) und getUserInput(aPrompt) [http://www.cs.princeton.edu/introcs/22inout/In.java.html sowas sollte rauskommen!]
 
* Menü Objekt, das sich leicht adaptieren lässt?
 
* Apfelbaum
 
while (hatApfelbaumNochÄpfel) {
 
pflückEinenApfelUndEssIhn();
 
}
 
*  Collections, Polymorphie (Apfel mit Wurm....)
 
* [http://www.cs.princeton.edu/introcs/11hello/ Beispiele für Anfängeraufgaben]
 
  
= Treffen 6.2.06 =
+
* gute namen regeln besprechen und vereinheitlichen
Bekanntmachung:
+
 
Termin 3.4.-7.4.
+
= Treffen 23.3.06 =
 +
Verschieben Objekte / Api mehr Übung:
 +
* Wir nehmen das Warenhaus als Aufgabe dafür
 +
@Florian macht das: Sonntag, bzw. Dienstag abend
 +
 
 +
Projektaufgabe:
 +
* Es soll geübt werden methodisch Vorzugehen
 +
* Es soll Milestones geben die abgearbeitet werden soll
 +
 
 +
* Schiffe Versenken / Vier Gewinnt
 +
** Vormittags im Anschluss an Strukturierte Programmierung
 +
** Wird als Teil von "Strukturiertes Programmieren" entwickelt
 +
* Verschlüsselung
 +
** Nachmittags, wer nicht am Spiel weiter programmieren will
  
== Anmeldung ==
+
@Martin Aufgabe LE 4
* Wie kriegen wir das verbindlich hin
+
@Arthur Crypto
** Details auf webseite
+
@Florian Warenhaus
** mail an javakurs06@freitagsrunde.org
+
@Martin Tutoren nachhaken
** dann gibts autoreply / manuelreply mit anmeldungsdetails
 
*** 5 € überweisen
 
*** Davon besorgen wir Getränke
 
  
== Webseite ==
+
@Martin & Arthur
* Absolute anfänger
+
* Genauer Zeitplan für montagsbeginn
* wenn weniger als hundert bis bestimmtes datum
+
* Handout für Tutoreneinstimmung
* dann auch mit anderen imperativen sprachen
 
* CS-ACCOUNT
 
* Anmeldung
 
* Überweisung / Persönlich vorbeibringen
 
  
== Nächstes Treffen ==
+
@Martin Kneipe bestellen für Mittwoch Abend
* Freitag 15:00 Uhr
+
@Arthur + @Robert Handouts produzieren
* Vermutlich nächste Woche nicht, weil da Neuhjahrsempfang ist
 
  
== Todos ==
+
Für Mittwoch:
@Arthur: Mittwoch 14:00 - Info A Leute
+
Aufgabe
* Bei Moses (bzw. Veranstalter) -> Arthur macht das
+
Idee der Aufgabe
* In Tutorien ankündigen -> Arthur macht das
+
Hinweise für die Lösung
  
@Martin:
+
Es kann passieren das wir die Räume nur bis Punkt 16 Uhr haben
* Webseite bauen, dann rumschicken
 
  
@Florian:
+
Zeitplan
* Anmeldescript bauen
+
* Morgens
** erste 100 adressen von csaccount anmelden
+
** 9:00 - 9:45 Vortrag 45 min
** nur anmelden wenn anfänger (ausser opal noch nix)
+
** 10:00 - 12:00 Übung
** andere sollen sich mit cs nochmal anmelden
+
* Mittag 12:00 - 12:45
** danach Warteschlange
+
** 13:00 - 13:45 Vortrag
 +
** 14:00 - 16:00 Übung
  
@Felix:
+
'''TODO:''' Räume begehen
* Welche Kontonummer können wir nutzen für die Überweisung
 

Aktuelle Version vom 3. April 2006, 12:05 Uhr

Javakurs - Organisation

Beteiligte

Wer kennt noch jemanden der Mitmachen würde? Bitte ansprechen - immer Persönlich.

Wir suchen Helfer die:

  • den Teilnehmern bei den Java-Programmen zu helfen (wie geht das mit dem "if-then-else", der "for"-Schleife, wie schreibt man das "try-catch", ...)
  • die 10 Leuten erklären wie man mit mit Java im Detail umgeht und Fragen beantworten
  • die vor 100 Leuten einen Vortrag halten und Java erklären
  • die helfen diese Vorträge inhaltlich Vorzubereiten

Teilnehmer bitte mit e-mail-Adresse eintragen

Die Veranstalter sind auf Javakurs2006/Veranstalter verlinkt.

Inhalt und Ablauf

Termin

  • Mo, 03.04.2006 - Do, 06.04.2006

Tagesablauf

  • Für Tag 1 bis 3:
von bis was?
9:00 9:45 Vorlesung
10:00 12:00 Übung
12:00 12:45 Mittagspause
13:00 13:45 Vorlesung
14:00 16:00 Übung

Themen

Tag Nr. Vormittag Nachmittag
Tag 1 Hello, World! Methoden und Schleifen
Tag 2 Modularisierung mit Klassen und Objekten OO-Vertiefung und Klassenbibliothek
Tag 3 Aufgabe Bäckerei Effizient Fehler finden und Testen
Tag 4 Strukturiertes Programmieren / Projektaufgabe Projektaufgabe

Allgemeine Ziele, Überlegungen und Ideen

Literatur

Sun-JAVA-API

Java ist auch eine Insel

  • ziemlich einfach geschrieben und viel erklärt am Anfang, gute Einführung, die aber auch in die Tiefe geht (v.a. gedruckt auch in die BREITE :-)
  • Über ein Dutzend der vierten Auflage in der UB-Lehrbuchsammlung erhältlich (OPAC derzeit down, daher kein Link)
  • Als kostenloses eBook ansehen und downloaden
  • Zu erwerben bei Amazon in deutsch

Structure and Interpretation of Computer Programs

Was wir nächstes mal Besser machen können

  • von den Teilnehmern zwei email-Adressen anfordern, weil viele ihre cs-mail nicht weiterleiten und daher selten lesen
  • Nächstes mal die Veranstaltung beim IRB mindestens 1-2 Monate vorher anmelden - oder über das ZRZ abwickeln, da der IRB stark überlastet ist
  • Fakultätsrat Beschluss holen, das wir alle Rechnerräume belegen dürfen
  • Den leuten früher bescheid geben
  • tool bauen das die Anmeldung automatisiert

TODOs

Zeitplan

 8      20.02.-26.02.       Räume, Web, Mail, Tutoren werben, allg. Werbung
 9      27.02.-05.03.       Stoffaufteilung/Zeitplan
10      06.03.-12.03.       Aufgabenentwurf fertig
11      13.03.-19.03.
12      20.03.-26.03.       Aufgaben fertig und besprochen
13      27.03.-02.04.       Beamer, Technik, Getränke, Kopien, Tutoren anleiten & einteilen
14      03.04.-07.04.       Veranstaltung

Unassigned

Arthur

  • Räume

Martin

Florian

Bäckerei (3.Tag)

Felix

RobertL und Felix

RobertB

Treffen 6.2.06

Bekanntmachung: Termin 3.4.-7.4.

Webseite

  • Absolute anfänger
  • wenn weniger als hundert bis bestimmtes datum
  • dann auch mit anderen imperativen sprachen
  • CS-ACCOUNT
  • Anmeldung
  • Überweisung / Persönlich vorbeibringen

Treffen 10.3.06

  1. Allgemeines:
    1. ToDo:
      • Artur: Raum mieten im MA043 mit Technik (2 Mikrofone tragbar, Funk)
      • Artur: Rechnerbetrieb für Rechnerräume ansprechen
      • Artur: Kamera für Bildaufnahmen
  2. Rechnerübungen:
    1. ToDo:
      • Handout mit wichtigen Tipps:
      • Ausführen, Compiler, URLs, Bibliotheksfunktionen, "HelloWorld", usw.
      • nächste Woche:
        • Aufgaben müssen ausformuliert sein,
        • Miniaufgaben ferig sein, alles selbst implementiert haben
        • Zeit f. Implementierung messen (nicht von den Aufgabenstellern)
        • Kleingruppen machen Vorschlag, Vortragender schaut drüberund nickt ab

Fazit:

  • Aufgaben ausarbeiten und ausformulieren (die Leute die sich das ausgedacht haben), ein anderer programmiert Aufgabe Probe

Ausarbeitungen:

  1. LE: Robert B., Dorian, Ellen
  2. LE: Sven, Daniel
  3. LE: Artur, Robert L., Felix
  4. LE: Florian, Martin

Aufgaben so designen, so dass sie anständig auf Papier ausdruckbar sind (im Wiki hinterlegen)

Zusatzaufgaben auf seperaten Zettel, Ausgabe des Zettels erst bei Nachfrage in der Übung (nicht ankündigen)


Freitagsergebnisse der Ausarbeitung für LEs: siehe Anhang

Offenes:

  • Eclipse schon am 2. Tag einsetzen?
  • Thema Gute Namen?
  • Studenten mit "Migrationshintergrund"
  • zeiteinteilung für Aufgaben 1/10? 1/5? -> Verhältnis Aufgabe - Zeit
    • Tagabhängig (1. Tag: Faktor 10, 3.Tag: Faktor 2 z.Bsp. ...)


Anhang zu 2.2.:

1.LE

Handout:

  1. Melde Dich an einer Sun an und wähle einen Editor Deiner Wahl. Wenn Du keinen kennst dann nimm Editor xy.
  2. Richtig/Falsch-Tabellen:
    • kopieren von einer Datei aus Verzeichnis
    • Umbenennen von Dateien
    • 2 Varianten für Aufruf von Dateien (mit class / richiger Aufruf), Am Ende wird bei richtigem Ausführen der Datei in der Ausgabe stehen, was als nächstes zu tun ist (nächste Aufgabe).
  3. Kassenbon - Programm schreiben
    • Kassenbon mit print-Befehlen ausgeben
    • Vorgabe: nichts in Java
    • Aufgabenstellung:
      • links: Ware, Mitte: Anzahl, rechts: Preis Stornos, Gesamtpreis am Ende des Bon ausgeben lassen, MwSt
        • keine arrays - lauter print-Ausgaben mit Variablen z.Bsp.: int anzahlApfel = 4;
        • Methode vorgeben, was an Produkten exitsiert, Variable mit Geldmaximum - wovon Produkte abgezogen werden
        • viele if/then - Beziehungen mit Geldausgaben (zu teuer, nicht genug Geld usw.)
        • mit globalen Variablen arbeiten

2.LE

  • Inhalte siehe Wikisite (Methoden,Arryas, Schleifen)

Deltas:

  • if - Bedingungen in Methoden auslagern
  • String - Vergleiche
  • 1. Programm mit syntaxfehlern
  • 2. Programm mit Vorgaben
  • Nulltes Elemten als erstes Element im Array (Länge 10, Index 9)
  • "Nullpointer Exception"
  • Tabelle richtig/falsch (siehe 1. LE)

Viele kleine Aufgaben (5-6 Zeilen)

  • Bon mit vielen print-Ausgaben aus LE1 umwandeln in Array
    • sollen Studies besser machen ...
    • Fibonacci

Einteilung in Aufgaben und Zusatzaufgaben Parsen von Kassenzettel an Stelle der Parser-Aufgabe


3.LE

  • Inhalte auf Notebook von Robert L.(nachreichen)/oder im Wiki(?)

Aufgaben stehen im Wiki. Was noch auf meinem Notebook sein soll weiß ich nicht. Robert L.

Deltas:

  • "Löschen" auf 4.LE verschieben
  • mehr Aufgaben (aus LE4?)

4.LE

  • Inhalte werden nachgereicht von Florian

Deltas:

  • Thema Java-IO in LE 5 reinnehmen

Treffen 17.3.06

Robert, Sven, wo wart ihr?

Was machen wir wenn manche Leute mit dem Tempo nicht mitkommen?

  • Wir können die Übung wiederholen
  • Wir können die Vorlesung um einen halben Tag verschieben
  • Wir haben noch Aufgaben in der Hinterhand, damit Leute, die wiederholen müssen, das tun können
  • Vielleicht verzögern wir die Vorlesung auch gar nicht, sondern versetzen nur die Übungen
  • Wenn zu viele ein Problem haben, dann laden wir die in spezielle Gruppen ein.
  • Ob wir "Ghetto"-Gruppen machen, oder ob wir die Langsameren doch lieber in den durchmischten Gruppen lassen müssen wir nochmal Diskutieren - in der Gruppe kann sich auch einiges Ausgleichen.

Für nächste Woche

  • Aufgaben Ausarbeiten und Programmieren
  • Vorträge Aufbauen
  • Dann ins Wiki!

Wir wollen versuchen auf standardisierte Begriffe zurückzugreifen - wenn wir sie überhaupt verwenden. Arthur macht das. :)


  • gute namen regeln besprechen und vereinheitlichen

Treffen 23.3.06

Verschieben Objekte / Api mehr Übung:

  • Wir nehmen das Warenhaus als Aufgabe dafür

@Florian macht das: Sonntag, bzw. Dienstag abend

Projektaufgabe:

  • Es soll geübt werden methodisch Vorzugehen
  • Es soll Milestones geben die abgearbeitet werden soll
  • Schiffe Versenken / Vier Gewinnt
    • Vormittags im Anschluss an Strukturierte Programmierung
    • Wird als Teil von "Strukturiertes Programmieren" entwickelt
  • Verschlüsselung
    • Nachmittags, wer nicht am Spiel weiter programmieren will

@Martin Aufgabe LE 4 @Arthur Crypto @Florian Warenhaus @Martin Tutoren nachhaken

@Martin & Arthur

  • Genauer Zeitplan für montagsbeginn
  • Handout für Tutoreneinstimmung

@Martin Kneipe bestellen für Mittwoch Abend @Arthur + @Robert Handouts produzieren

Für Mittwoch: Aufgabe Idee der Aufgabe Hinweise für die Lösung

Es kann passieren das wir die Räume nur bis Punkt 16 Uhr haben

Zeitplan

  • Morgens
    • 9:00 - 9:45 Vortrag 45 min
    • 10:00 - 12:00 Übung
  • Mittag 12:00 - 12:45
    • 13:00 - 13:45 Vortrag
    • 14:00 - 16:00 Übung

TODO: Räume begehen