Ruprecht-Karls-Universität Heidelberg
Bilder vom Neuenheimer Feld, Heidelberg und der Universität Heidelberg

Programmieren II: Fortgeschrittene

Kursbeschreibung

Studiengang Modulkürzel Leistungs-
bewertung
BA-2010 PII 6 LP
NBA PII 6 LP
Magister - -
Dozenten/-innen Kathrin Spreyer
Veranstaltungsart Vorlesung/Übung
Erster Termin 24.04.2012
Zeit und Ort Di, 16:1517:45, INF 327 / SR 1 (SR)
  Mi, 11:1512:45, INF 327 / SR 5 (SR)


Klausurergebnisse: hier. Die Nachklausur findet am 2. Oktober 2012 (11--13 Uhr) in INF 327 / SR 3 statt. Das Commitment für die Nachklausur läuft bis zum 28. September.

Teilnahmevoraussetzungen

Erfolgreicher Abschluss des Kurses "Programmieren I".

Leistungsnachweis

  • erfolgreiche Bearbeitung von Übungsaufgaben
  • Bestehen der Abschlussklausur

Zur Klausur wird nur zugelassen, wer in den Übungsaufgaben eine Mindestanzahl von Punkten erreicht hat.

Inhalt

In der Vorlesung werden die in "Programmieren I" erworbenen Grundkenntnisse anhand einer zweiten Programmiersprache und der Entwicklung von elementaren Kenntnissen der Softwareentwicklung erweitert und vertieft. Neben einer Einführung in objektorientierte Programmierung in der Programmiersprache Java wird dabei auch in allgemeine Themen der Softwaretechnik eingeführt; u.a. zentrale Methoden und Vorgehensweisen der Softwareentwicklung wie z.B. (objektorientiertes) Design, Software-Dokumentation und Deployment.

Kursübersicht

Seminarplan (subject to change)

Date Topic Materials Literature
24.4. Introduction assignment1.zip (due April 27)
25.4. Variables & data types
Code: MethodSignature.java
Triangular.java
assignment2.zip (due May 4) EJ item 48 (pp. 218--220)
01.5. --
02.5. Conditionals, loops & typing
Code: TriangularWithLoops.java
StaticTyping.java (won't compile)
StrongTyping.java (won't compile)
assignment3.zip (due May 11)
08.5. Increment operators, arrays
Code: ArrayTests.java
DotProduct.java
09.5. break & continue, for-each,
multidimensional arrays

Code: PrintingArrays.java
BreakExample.java
ContinueExample.java
ForEachTest.java
MultiplicationTable.java
assignment4.zip (due May 18) EJ item 46 (pp. 212--214)
15.5. Sorting
Code: BubbleSort.java
InsertionSort.java
BuiltinSort.java
Cormen:
ch. 2 (insertion sort, merge sort)
ch. 6 (heap sort)
ch. 7 (Quicksort)
16.5. String methods assignment5.zip (due Jun 01) Documentation of the String class
22.5. StringBuilder, reading files, exceptions
Code: StringEqualityTest.java
StringBuilderTest.java
ReadAFile.java
ExceptionTest.java (updated: w/ close())
FactorialWithException.java
EJ item 51 (p. 227)
EJ item 57 (p. 241--243)
23.5. Regular expressions (see Pattern)
Code etc.: PatternTest.java
strings.txt, terminal.txt
Documentation of Pattern and Matcher
29.5. Regular expressions (cont.)
30.5. "Zwischenklausur" (= assignment 6)
on paper
Zwischenklausur (A / B)
05.6. Besprechung Zwischenklausur; character encodings
Code & data: EncodingsTest.java
unicode.txt, latin1.txt
StdoutAndStderr.java
blog post, another blog post
06.6. Classes & objects
Code: Point.java, PointTest.java
Circle.java, CircleTest.java
assignment 7 (due Jun 17)
12.6. Encapsulation
Code: GoodCircle.java
GoodCircleTest.java
Rectangle.java
EJ item 13 (p. 67--70),
EJ item 14 (p. 71--72)
13.6. Inheritance
Code: Shape.java Rectangle.java
Circle.java ShapeTest.java
assignment8.zip (due July 01) EJ item 8 (p. 33--44),
EJ item 9 (p. 45--50),
EJ item 10 (p. 51--53)
19.6. instanceof, casting, constructor chaining
Code: TypeTests.java
20.6. HashMaps and other collections
Code: CollectionsTest.java
Collections tutorial,
EJ item 9 (p. 45--50),
Generics tutorial,
Cormen: ch. 11 (hash tables)
26.6. Polymorphism
Code: CollectionsTest.java, PolymorphicCode.java
!! EJ item 52 (p. 228--229)
27.6. Interfaces & multiple inheritance OO-Principles (B. Tarr),
EJ item 37 (p. 179--180)
03.7. Packages & deployment
Code: lecture20.zip
04.7. Documentation & deployment
Code: lecture21.zip
assignment9.pdf (due July 15) EJ item 44 (p. 203--208),
one of many javadoc overviews
10.7. XML
Code: ExtractTextDom.java, ExtractTextSax.java
Data: corpus (excerpt), corpus (complete)
11.7. Threads
Code: MyThread.java, MyThread2.java, MyThread3.java, MyThread2NoVolatile.java, Race.java
-- Synchronization
17.7. recap --
18.7. 11.30--13.00 Klausur
INF 327, SR 20
Commitment:
July 5 -- July 12
on paper, cheat sheet allowed (1 A4 sheet)
24.7. Stanford CoreNLP CoreNLP API documentation,
CoreNLP homepage
25.7. Beyond this course: reflection, generics, Trove library
Code: ShapeTestWithClassClass.java, Pair.java, TroveTest.java
reflection (but see also EJ item 53), generics, Trove;
Nanoseconds, WAT

Literatur

  • http://docs.oracle.com/javase/6/docs/api/
  • D. Flanagan (2005). "Java in a Nutshell". O'Reilly.
  • K. Sierra & B. Bates (2005). "Head First Java". O'Reilly.
  • J. Bloch (2008). "Effective Java". Addison-Wesley.
    abbreviated as [EJ] (see also here)
  • S. Oaks & H. Wong (2004). "Java Threads". O'Reilly
  • interessant, aber im Kurs nur am Rande behandelt:
    E. Freeman et al. (2004). "Head First Design Patterns". O'Reilly

» weitere Kursmaterialien

Tutorium

zum Seitenanfang