Kontakt:

pokój: 339
telefon: +48 71 3757836
mail:
www: http://www.ii.uni.wroc.pl/~prz/

Konsultacje:

środa 12-14
pokój 339
proszę wcześniej uzgodnić dokładny termin konsultacji drogą mailową

Java - kurs zaawansowany (semestr letni 2011/12)

Adres:

Instytut Informatyki
Uniwersytetu Wrocławskiego
ul. Joliot-Curie 15
50-383 Wrocław
OGŁOSZENIA

25 maja 2012 r.

Egzamin:

Uwaga, egzamin! Postanowiłem zrobić egzamin mało stresowy w postaci zadania laboratoryjnego ze sprawozdaniem. Zadania będą dotyczyć wybranych technologii (trzeba będzie krótko opisać na czym ta technologia polega i napisać program demonstrujący jej zastosowanie). Studenci będą mieli poprzydzielane różne zadania (chociaż nie wykluczam powtórek pewnych tematów). Zadania opublikuję i poprzydzielam w sobotę 26 maja (w miarę możliwości zrobię to wcześnie) i roześlę maila z listą zadań.

Zadania będę odbierał indywidualnie w przyszłym tygodniu wtorek-czwartek (proszę się ze mną umawiać na mailowo na konkretne terminy). Przed spotkaniem egzaminacyjnym proszę przesłać mi referat (nie więcej niż 2 stony A4) i program. Sam egzamin będzie się składał z dwóch części: odpowiedzi na zagadnienia poruszane (albo nie) w sprawozdaniu oraz na prezentacji programu demonstracyjnego.

15 maja 2012 r.

Egzamin:

Uwaga, ten przedmiot kończy się egzaminem! O szczegółach opowiem na najbliższym i zarazem ostatnim wykładzie.

15 maja 2012 r.

Zadanie dodatkowe:

Opublikowałem już zadanie dodatkowe. Jest ono dedykowane dla tych studentów, którym brakuje trochę punktów do zaliczenia przedmiotu na swoją wymarzona ocenę ;-)

15 maja 2012 r.

Ostatnie wykłady:

Na ostatnim w tym semestrze wykładzie wystąpią studenci. Karol Błażejowski będzie mówił na temat Hibernate (ORM dla Javy) oraz Groovy i Grails (i innych związanych z tym językiem i środowiskiem programowania zagadnieniach). Potem Szymon Laszczyński opowie o JEM (rozszerzenia Javy). Zapraszam.

24 kwietnia 2012 r.

Wykład o JNI:

Dzisiejszy wykład poświęcony metodom rodzimym (technologia JNI) poprowadzą Mateusz Kołaczek i Michał Stempkowski. Zapraszam.

17 kwietnia 2012 r.

Zadanie 8 na laboratorium:

Ponieważ żadna osoba w mojej grupie (PRz) nie zrobiła porządnie i do końca zadania 8, doszedłem do wniosku, że zadanie wymaga trochę więcej czasu (przeznaczonego głównie na eksperymenty z osadzaniem apletów w dokumentach .html i definiowaniem polityki bezpieczeństwa) i przesunąłem termin oddania tego zadania o tydzień.

1 kwietnia 2012 r.

Punktacja w grupie PRz:

Zrobiłem statystykę uzyskanych punktów w mojej grupie (PRz).

14 lutego 2012 r.

Zadanie 1 na laboratorium:

Nie działał link do zadania 1, poprawiłem go dopiero dzisiaj. Z tego powodu termin realizacji tego zadania jest przesunięty na przyszły tygodzień.

7 lutego 2012 r.

Pierwsze laboratorium:

Pierwsze laboratoria odbędą się dopiero w przyszłym tygodniu 14 i 16 lutego.

7 lutego 2012 r.

Punkt informacyjny:

To właśnie w tym miejscu będą się pojawiać ważne ogłoszenia dotyczące organizacji zajęć związanych z tym przedmiotem. Proszę zaglądać do ogłoszń, szczególnie przed wykładem i przed laboratorium.

Java to współczesny obiektowy język programowania stworzony przez Jamesa Goslinga z firmy Sun Microsystems. Od momentu powstania w połowie lat 90-tych XX wieku przeżył on dynamiczny rozwój a zainteresowanie nim stale rośnie. Język Java przyciągnął do dziś prawie 7 milionów programistów. Znajduje zastosowanie w każdej ważniejszej gałęzi przemysłu informatycznego i jest obecny w różnego rodzaju urządzeniach, komputerach i w sieci. Popularność Javy wynika przede wszystkim z przenośności programów i niezależności od konkretnej platformy sprzętowej, a co za tym idzie, ma zastosowanie w Internecie oraz ogólnie w aplikacjach sieciowych. Jego podstawowe koncepcje zostały przejęte z języka Smalltalk (maszyna wirtualna, odśmiecanie pamięci) oraz z języka C++ (znaczna część składni i słów kluczowych).

Zajęcia te to kontynuacja kursu Javy z poprzedniego semestru. Celem tych zajęć jest przybliżenie Wam wybranych technologi używanych przez wyrafinowanych programistów Javy.

Wymagane przygotowanie

  • Umiejętność programowania w języku Java (programowanie obiektowe, zaawansowane konstrukcje językowe, typy sparametryzowane).
  • Znajomość struktur danych wykorzystywanych przez kolekcje standardowe w Javie (pakiet java.util).

Literatura

Literatura papierowa polskojęzyczna:

  • Elliotte Rusty Harold: Java. Programowanie Sieciowe. Wydawnictwo RM, Warszawa 2001.
  • Krzysztof Barteczko: Java. Od podstaw do technologii. Tom 1 i 2. Wydawnictwo MIKOM, Warszawa 2004.
  • Herbert Schildt: Java. Kompendium programisty. Wydawnictwo HELION, Gliwice 2005.
  • Bruce Eckel: Thinking in Java. Wydanie 4. Edycja polska. Wydawnictwo HELION, Gliwice 2006.
  • Cay Horstmann, Gary Cornell: Core Java. Techniki zaawansowane. Wydanie 8. Wydawnictwo HELION, Gliwice 2009.

Literatura papierowa anglojęzyczna:

  • Ken Arnold, James Gosling, David Holmes: The Java Programming Language. Fourth Edition. Prentice Hall PTR, 2005.
  • James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The Java Language Specification. Third Edition. Prentice Hall PTR, 2005.
  • Tim Lindholm, Frank Yellin: The Java Virtual Machine Specification. Second Edition. Prentice Hall PTR, 1999.

Literatura elektroniczna anglojęzyczna:

Terminarz

  • wykład: wtorek 10-12 s.139 (Paweł Rzechonek)
  • laboratorium:
    wtorek 12-14 s.110 (Paweł Rzechonek)
    czwartek 16-18 s.7 (Hans de Nivelle)

Laboratorium

Zasady zaliczenia przedmiotu

Ogólnie:
W semestrze będzie opublikowanych (na tej stronie) kilkanaście raczej prostych zadań do zaprogramowania. Za każde poprawnie zaprogramowane zadanie i oddane w terminie można będzie dostać do 10 punktów (chociaż zadania będą różnej trudności).
Alternatywnie będzie można przygotować wykład (co najwyżej raz w semestrze przez jedną osobę) i opowiedzieć go. Za poprowadzenie wykładu można będzie dostać do 20 punktów (poprowadzenie wykładu zwalnia z laboratorium powiązanym z tym wykładem).
Terminy:
Zadania do zaprogramowania będą ogłaszane w tygodniu poprzedzającym termin ich realizacji. Zadania należy oddawać w wyznaczonym terminie. Spóźnienia nie będą tolerowane, za wyjątkiem uzasadnionych sytuacji życiowych: choroba potwierdzona zwolnieniem lekarskim, wezwanie do Sądu, itp.
Prezentacje:
Programy należy prezentować osobiście w czasie pracowni (proszę nie wysyłać programów pocztą elektroniczną, ani nie przekazywać ich poprzez kolegów czy koleżanki). W trakcie prezentacji programu trzeba się liczyć z pytamiami dotyczącymi zadania: metoda rozwiązania, zastosowane konstrukcje językowe, wykorzystane technologie, itp.
Oceny:
Aby zaliczyć laboratorium na ocenę dostateczną trzeba do końca semestru zdobyć 50% z wszystkich możliwych do uzyskania punktów; na ocenę bardzo dobrą trzeba będzie zgromadzić 90% punktów; oceny pośrednie pozostją w liniowej zależności od przedstawionych wymagań granicznych.

Lista zadań laboratoryjnych

  1. 21/23.02.2012: sudoku (pdf)
  2. 28.02/1.03.2012: terminarz (pdf)
  3. 6/8.03.2012: ale jaja na straganie (pdf)
  4. 13/15.03.2012: liczby pierwsze (pdf)
  5. 20/22.03.2012: śledzenie łączy (pdf)
  6. 27/29.03.2012: hydepark (pdf)
  7. 3/5.04.2012: galeria (pdf)
  8. 24/26.04.2012: notowania walut (pdf)
  9. 8/11.05.2012: zestawienie wydatków (pdf)
  10. 15/17.05.2012: wystąpienie wzorca w tekście (pdf)
  11. 22/24.05.2012: liczby Eulera (pdf)
  12. 31.05.2012 (dodatkowe): strefy czasowe (pdf)

Ranking

Wykład

Materiał omawiany na wykładach

Lista prac egzaminacyjnych

Przypominam, że praca egzaminacyjna ma się składać z dwóch części: referatu (krótki opis technologii nie dłuższy niż 2 strony A4) i programu (demonstrującego zastosowanie tej technologii).

Referaty i programy należy najpierw przesłać mi mailem a następnie umówić się na rozmowę egzaminacyjną (połączoną z prezentacją programu). Proponuję wstępnie następujące terminy spotkań egzaminacyjnych:

  • wtorek 29 maja w godzinach 14-16
  • środa 30 maja w godzinach 16-18
  • czwartek 31 maja w godzinach 10-12

Oto lista studentów z przypisanymi tematami:

Bartosz Jarema:
Java Mail API
Karol Kontny:
Monitoring and Management for the Java Platform
Krzystof Król:
Package Version Identification
Krzystof Waszak:
Marshalling and Unmarshalling ResultSet in JDBC
Michał Banasiak:
Java Sound API
Jakub Banaszewski:
Java 3D API (introduction only)
Karol Błażejowski:
podpis cyfrowy i podpisywanie kodu
Dariusz Bukowski:
Full-Screen Exclusive Mode API
Maciej Graboń:
New IO - Channels and Buffers
Adam Kaczmarek:
Java Architecture for XML Binding (JAXB)
Mateusz Kołaczek:
Java API for XML Processing (JAXP)
Szymon Laszczyński:
Java Naming and Directory Interface (JNDI)
Krzysztof Skrzętnicki:
Java Logging Technology
Michał Stempkowski:
Drag and Drop and Data Transfer (DnD)
Janusz Wróbel:
Regular Expressions (advanced topics)

Dopuszczam możliwość wzajemnej wymiany tematów między studentami (proszę mnie o tym poinformować mailowo) a w ekstremalnych przypadkach całkowitej zmiany tematu (proszę jak najszybciej pisać do mnie w tej sprawie - mam jeszcze kilka rezerwowych zadań).

Instytut Informatyki