Ogłoszenia

  • (8 grudnia 2005) Termin oddawania zadania 11 dla studentów dziennych (skrzyżowanie dróg równorzędnych) został wydłużony do 12 stycznia 2006. Niezależnie od tego faktu pojawiło się nowe zadanie do zaprogramowania (akwarium).
  • (8 grudnia 2005) Zostały sporządzone rankingi dla studentów dziennych i wieczorowych.
  • (30 listopada 2005) Termin oddawania zadania 8 dla studentów wieczorowych (pseudo arkusz kalkulacyjny) został wydłużony do 7 grudnia 2005.
  • (3 listopada 2005) Zadanie 4 można oddawać z tygodniowym opóźnieniem (do 10 listopada 2005) za 4 punkty.

Terminy

studia dzienne

wykład:
czwartek 17-19, sala 31
laboratorium:
wtorek 12-14, sala 50b (M.Szpak)
środa 14-16, sala 59 (T.Wierzbicki)
środa 18-20, sala 59 (T.Wierzbicki)
czwartek 15-17, sala 52

studia wieczorowe

wykład:
środa 16-17, sala 33.
laboratorium:
środa 17-20, sala 52/50d.

Literatura

papierowa:
  • Ken Arnold, James Gosling: The Java Programming Language. Addison Wesley, 1996, ISBN 0-201-63455-4.
  • Bruce Eckel: Thinking in Java. Third edition. Prentice-Hall, 2002, ISBN 0-131-00287-2.
  • James Gosling, Bill Joy, Guy Steele, Gilad Bracha: The Java Language Specification. Second edition. Addison Wesley, 2000, ISBN 0-201-31008-2.
  • Tim Lindholm, Frank Yellin: The Java Virtual Machine Specification. Second edition. Addison Wesley, 2000, ISBN 0-201-43294-3.
elektroniczna:

Przygotowanie studentów

wymagane:
  • programowanie strukturalne
  • język C
  • znajomość podstawowych struktur danych (tablice, listy, drzewa) i operacji na tych strukturach (z wykorzystaniem rekurencji)
wskazane:
  • programowanie obiektowe
  • język C++
  • znajomość podstawowych technik programowania (metoda "dziel i zwyciężaj", metoda dynamiczna, metoda zachłanna)

Forma zaliczenia przedmiotu

ogólnie:
W semestrze będzie ogłoszonych (na tej stronie) kilkanaście prostych zadań do zaprogramowania. Za każde poprawnie zaprogramowane zadanie i oddane w terminie można będzie dostać określoną liczbę punktów (2...5).
terminy:
Zadania do zaprogramowania będą ogłaszane w tygodniu poprzedzającym termin ich realizacji (za wyjątkiem pierwszej listy). Spóźnienia nie będą tolerowane.
prezentacje:
Programy należy prezentować osobiście w czasie pracowni (proszę nie wysyłać programów pocztą elektroniczną, ani nie przekazywać dyskietek poprzez kolegów/koleżanki). W trakcie prezentacji programu trzeba się liczyć z pytamiami dotyczącymi zadania, jego rozwiązania, oraz zastosowanych konstrukcji językowych.
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 dobra trzba będzie zgromadzić 90% punktów; oceny pośrednie pozostją w liniowej zależności od przedstawionych wymagań granicznych.

Zadania na laboratorium

studia dzienne

nr opis punkty termin treść
0 liczby w postaci binarnej 2 6 października 2005 ps / pdf
1 rozkład liczby na czynniki pierwsze 2 13 października 2005 ps / pdf
2 wzór dwumianowy Newtona 3 20 października 2005 ps / pdf
3 listy klonowalne 4 27 października 2005 ps / pdf
4 kalkulator ONP 5 3 listopada 2005 ps / pdf
5 kreślenie odcinków 4 10 listopada 2005 ps / pdf
6 gra "samotnik" w aplecie 5 17 listopada 2005 ps / pdf
7 gra "kółko i krzyżyk" 5 24 listopada 2005 ps / pdf
8 edytor tekstowy z podglądem binarnym 4 1 grudnia 2005 ps / pdf
9 kalendarz 3 8 grudnia 2005 ps / pdf
10 program do nauki słówek w języku obcym 4 15 grudnia 2005 ps / pdf
11 skrzyżowanie dróg równorzędnych 5 5 stycznia 2006 ps / pdf
12 akwarium 4 12 stycznia 2006 ps / pdf
13 gra sieciowa w statki 5 19 stycznia 2006 ps / pdf

ranking

studia wieczorowe

nr opis punkty termin treść
0 liczby w postaci binarnej 2 5 października 2005 ps / pdf
1 liczby pierwsze w zadanym przedziale 2 12 października 2005 ps / pdf
2 wzór dwumianowy Newtona 3 19 października 2005 ps / pdf
3 wyrażenie arytmetyczne 4 26 października 2005 ps / pdf
4 drzewa BST 5 2 listopada 2005 ps / pdf
5 kreślenie odcinków 4 9 listopada 2005 ps / pdf
6 gra "dwa kolory" w aplecie 5 16 listopada 2005 ps / pdf
7 gra "kółko i krzyżyk" 5 23 listopada 2005 ps / pdf
8 pseudo arkusz kalkulacyjny 4 7 grudnia 2005 ps / pdf
9 przeglądarka plików 4 14 grudnia 2005 ps / pdf
10 skrzyżowanie drogi głównej z podporządkowaną 5 11 stycznia 2006 ps / pdf
11 pobieranie dokumentów z sieci 3 18 stycznia 2006 ps / pdf

ranking

Wykłady (streszczenie)

5/6-10-2005 (składnia języka java):
  • Rys historyczny.
  • Cechy Javy jako obiektowego języka programowania.
  • Kompilowanie (program javac) i uruchamianie (program java) programów.
  • Przykład prostego programu.
  • Standardowe wejście/wyjście.
  • Typy pierwotne i referencje.
  • Tworzenie obiektów (operator new) i ich usuwanie (garbage-collector).
  • Operatory i wyrażenia.
  • Instrukcje sterujące.
  • Tablice, tablice wielowymiarowe.
  • Parametry wywołania programu.
  • Napisy (klasa String).
Przykładowe programy:
Witaj.java
Argumenty.java
ImieNazwisko.java
Funkcja.java
Miesiace.java
AdresPocztowy.java
12/13-10-2005 (klasy i obiekty):
  • Klasy.
  • Pola i metody.
  • Pola ostateczne.
  • Kontrola dostępu, czyli ukrywanie informacji (hermetyzacja).
  • Przekazywanie parametrów do metod.
  • Przeciążanie metod.
  • Tworzenie obiektów i konstruktory.
  • Referencja this.
  • Niszczenie obiektów i metoda finalize.
  • Składowe statyczne.
  • Klasy usługowe na przykładzie Math i klas opakowujących typy pierwotne.
  • Podglądanie definicji klasy (program javap).
Przykładowe programy:
narzedzia/LZesp.java + TestLZesp.java
narzedzia/Licznik.java + TestLicznik.java
19/20-10-2005 (dziedziczenie i polimorfizm):
  • Klasy bazowe i pochodne.
  • Pola i metody odziedziczone (public i protected).
  • Upublicznianie składowych.
  • Konstruktory, wywołanie konstruktora nadklasy (super).
  • Zastępowanie metod i ukrywanie pól.
  • Polimorficzne wywoływanie metod.
  • Wywoływanie metod z nadklasy (super).
  • Metody i klasy ostateczne (final).
  • Wywołania niepolimorficzne.
  • Metody i klasy abstrakcyjne (abstract).
  • Klonowanie obiektów (metoda clone() i interfejs Cloneable).
  • Klasy zagnieżdżone.
Przykładowe programy:
Schowek.java + SchowekNapisowy.java + SchowekRzeczywisty.java + SchowekPpb.java + SchowekCalkowity.java + Licznik.java
struktury/StosLiczb.java + TestStosLiczb.java
26/27-10-2005 (interfejsy, wyjątki):
  • Definiowanie interfejsów.
  • Pola i metody w interfejsach.
  • Rozszerzanie interfejsów.
  • Implementowanie interfejsów w klasie.
  • Wykorzystywanie interfejsów.
  • Wyjątki i ich hierarchia.
  • Wyjątki kontrolowane i niekontrolowane.
  • Zgłaszanie wyjątków (instrukcja throw).
  • Łapanie wyjątków (instrukcja try-catch-finally).
  • Deklarowanie wyjątków zgłaszanych przez metodę (deklaracja throws).
  • Zawężanie listy deklarowanych wyjątków przy zastępowaniu metod.
  • Definiowanie własnych wyjątków.
  • Pakiety.
  • Komentarze dokumentacyjne (program javadoc).
Przykładowe programy: -
2/3-11-2005 (AWT, delegacyjny model obsługi zdarzeń):
  • Hierarchia komponentów AWT.
  • Kontenery i menadżery rozkładu.
  • Proste aplikacje okienkowe.
  • Grafika (kreślenie figur, kolory, czcionki).
  • Delegacyjny model obsługi zdarzeń (utworzenie słuchacza zdarzeń określonego typu, zarejestrowanie słuchacza do obsługi zdarzeń dotyczących danego komponentu).
Przykładowe programy:
ProsteOkno.java
RozkladNormalny.java
KursorMyszy.java
Grafika.java
9/10-11-2005 (aplety):
  • Aplet jako kontener.
  • Ograniczenia apletów.
  • Cykl życia apletu.
  • Umieszczanie apletów na stronach WWW.
  • Przekazywanie parametrów do apletu.
  • Komunikowanie się apletów.
  • Wyświetlanie plików graficznych w apletach.
  • Odtwarzanie plików dźwiękowych w apletach.
  • Archiwa javy (program jar).
Przykładowe programy:
ProstyAplet.java + ProstyAplet.html
WspMyszy.java + WspMyszy.html
KodKlaw.java + KodKlaw.html
Kreski.java + Kreski.html
Przegladarka.java + Przegladarka.html
Multimedia.java + Multimedia.html
16/17-11-2005 (Swing - 1):
  • Hierarchia komponentów Swingu.
  • Przegląd prostych komponentów GUI w Swingu.
  • Fokus.
  • Budowa i działanie menu.
  • Akcje klawiaturowe.
Przykładowe programy:
ProsteOknoSwing.java
ProsteMenuSwing.java
ProsteSkrotyKlawSwing.java + ang.gif + pol.gif
23/24-11-2005 (Swing - 2):
  • Architektura okien w Swingu.
  • Warstwy i szyba.
  • Okna wewnętrzne.
  • Wyspecjalizowane kontenery Swinga (panel dzielony, panel przewijalny, zakładki).
  • Obieralny wygląd aplikacji L&F.
Przykładowe programy: -
30-11/1-12-2005 (Swing - 3):
  • Modele i widoki, czyli MVC (Model-View-Controller).
  • Architektura MVC na przykładzie listy.
  • Model danych i krześlarz w modelu widoku.
  • Przegląd innych komponentów GUI opartych na architekturze MVC (suwaki, listy rozwijalne, tabele, drzewa).
  • Timer, czyli cykliczny generator zdarzeń.
Przykładowe programy:
Totolotek.java
7/8-12-2005 (strumienie):
  • Klasyfikacja strumieni na bajtowe i znakowe.
  • Hierarchia klas strumieni.
  • Strumienie przedmiotowe związane ze źródłem/ujściem danych.
  • Strumienie przetwarzające i filtrujące.
  • Kodowanie.
  • Strumienie binarne.
  • Strumienie kompresujące.
  • Serializacja (interfejs Serializable).
  • Obiekty plikowe (klasa File).
Przykładowe programy:
Kopiarka.java + Konwerter.java
14/15-12-2005 (wątki i procesy):
  • ...
Przykładowe programy: -
21/22-12-2005 (kolekcje standardowe):
  • ...
Przykładowe programy: -
4/5-01-2006 (refleksja i java-beans):
  • ...
Przykładowe programy: -
11/12-01-2006 (programowanie sieciowe):
  • ...
Przykładowe programy: -
18/19-01-2006 (programowanie baz danych):
  • ...
Przykładowe programy: -