Projekt z metod programowania

Informatyka, st. dzienne, sem. 5

prowadzący: Szymon Grabowski ( sgrabow@kis.p.lodz.pl )

 

Wymagania co do zaliczenia:

o       początek semestru: pisemna specyfikacja projektu (1 strona), wydruk+doc;

o       w trakcie semestru: referowanie projektu + prezentacja np. w PPT (założenia – dokładnie (np. interfejs użytkownika); opis wybranych problemów i propozycji ich rozwiązania, prezentacja podobnych istniejących rozwiązań – jeśli są takowe);

o       koniec semestru: aplikacja + krótki raport (2 strony), wydruk+doc.

 

Specyfikacja:

o       tytuł projektu,

o       nazwiska Autorów,

o       jakie funkcje będzie posiadała aplikacja,

o       planowany język programowania + użyte biblioteki.

 

Dopuszczalne języki programowania: C, C++, Java, C#.

Dopuszczalne platformy: Windows 2000/XP, Linux, Mac OS.

 

Zalecany kompilator C++: MS VC++ 6.0 lub nowszy.

 

 

PROGRAMY UŻYTKOWE

1. Automatyczne sprawdzanie testów (wejście – np. skan BMP b&w), detekcja pytań. 
    (1 osoba
)

 

2. Komunikator sieciowy
    (1-2 osoby
).

 

3. Przeglądarka obrazów w formacie JPEG wraz z obsługą EXIF-ów (sortowanie np. po zoomie, wyświetlanie (slideshow) z katalogu np. tylko zdjęć zrobionych z lampą błyskową itp.).
    (2 osoby
)

 

4. Katalogowanie płyt CD (a la DiskBase, http://diskbase.learsy.com/). 

    (2 osoby)

 

6. Program do zmiany grupowej nazw plików (w stylu Multi-Rename Tool z Total Commandera, ctrl-M :-).

    (1 osoba)

 

7. Edytor tekstu z funkcją pracy grupowej w sieci lokalnej.
    (1-2 osoby
)

 

8. Edytor programistyczny (podświetlanie składni różnych języków, funkcje na blokach, „inteligentny” search (np. na życzenie omijanie komentarzy) etc.)
    (1-2 osoby
)

 

 

SZACHY

 9. Preprocesor plików PGN (partie szachowe) pod kątem dalszej kompresji.  Idee do zaimplementowania: usunięcie numerów ruchów, zastąpienie pól szachowych (np. „a7”), pojedynczymi bajtami, rozróżnienie między gońcami biało- a czarnopolowymi, obsługa nagłówków partii.

    (1 osoba).

 

10. Program rozwiązujący zadania szachowe typu: mat pomocniczy, samomat.
     
Informacje nt. tego typu zadań:

http://www.logicalchess.com/info/reference/glossary.html

http://en.wikipedia.org/wiki/Selfmate

http://www.chessbase.com/puzzle/christmas2005/chr05-4a.htm

http://www.chessvariants.org/problems.dir/helpmate.html

     Zalecane GUI.
     (1-2 osoby
).

 

11. Przeglądarka i wyszukiwarka partii szachowych zapisanych w formacie PGN (z interfejsem graficznym).  Przykładowe kolekcje partii w tym formacie: http://www.chessopolis.com/chessfiles/pgn_collections.htm .  Wyszukiwanie wg kryteriów dotyczących np. liczby ruchów w partii, pojawiających się końcówek (np. K+S+pp vs. K+G+pp) etc. 
   
(1-2 osoby).

 

 

KOMPRESJA

12. bzip2/zzip + adaptive block adjustment (ewent. ulepszenie algorytmu z zzipa) + LZ(P/77) 
     (1 osoba
)

 

13. Bezstratny preprocesor XML pod kątem dalszej kompresji. 

Idee (m.in.): zastępowanie tagów zamykających 1-bajtowymi flagami; „gęste” kodowanie liczb i specyficznych wzorców (np. dat), zastępowanie częstych słów odnośnikami do słownika (dynamicznego), wykorzystanie DTD lub XML Schema.
Dokładniejsze informacje w pracy http://www.ii.uni.wroc.pl/~inikep/papers/07-AsymmetricXML.pdf
    (1 osoba
)

 

 

WYSZUKIWANIE WZORCÓW

14. Wyszukiwanie w obrazach JPEG (1 osoba).

 

15. Similarity search na obrazkach. (1-2 os.)

 

16. Indeksowanie tekstu a la Glimpse z wyszukiwaniem przybliżonym

http://citeseer.ist.psu.edu/28496.html
     (2 osoby
).

 

17. Indeksowanie bazy muzycznej (MIDI) pod kątem wyszukiwania przybliżonego

     (alpha, delta, gamma).  1-2 osoby.

   

18. Sparse suffix array – implementacja i testy prostej struktury do indeksowania tekstu. (1 os.)

 

 

PROGRAMY EDUKACYJNE

19. Program demonstrujący "szkolne" konstrukcje geometryczne typu „cyrkiel i linijka”.  Wykonujący skrypty (w prostym języku) opisujące elementarne operacje.  Opcje: grubość / kolor / styl linii, okręgów; zoom (?), opóźnienie czasowe, zaznaczanie specjalnych punktów, np. przecięć.

(2 osoby).

 

20. Optyka - symulacje wybranych zjawisk optycznych (1 os.)

 

21. Model Układu Słonecznego (z obliczaniem siły grawitacji na poszczególnych planetach).  (1 os.)

 

 

GRY LOGICZNE, UKŁADANKI

22. Program do gry logicznej "Szyki" (Lines of Action, http://en.wikipedia.org/wiki/Lines_of_Action ), nie grający, lecz tylko służący jako plansza dla gry dla 2 osób, z kontrolą poprawności ruchów. 
(1 os
.)

 

23. Program do rozwiązywania Sudoku.  Przykładowe opcje: podpowiedzi (tj. wskazywanie zabronionych cyfr w wierszach / kolumnach / kwadratach), cofanie wpisu, pomiar czasu, baza zadań (w pliku tekstowym, albo w wielu plikach), poziom trudności zadań (łatwe / średnie / trudne), logowanie graczy i ich statystyki oraz związane z tym funkcje (np. ile zadań rozwiązał i ile z danej kategorii, udaremnianie ponownego rozwiązywania tego samego zadania przez danego gracza etc.).  Dla dwóch osób również funkcja rozwiązywania zadania przez komputer.

(1-2 osoby).

 

24. Program do stawiania pasjansów (3-4 wybrane).  1-2 osoby.

 

25. Gra „Life” (możliwe modyfikacje, np. 2 lub więcej gatunków) (1 os.)

 

Inne: warcaby "na wybitkę", reversi, quod, gry karciane (tysiąc, kierki, kanasta?).

Kółko i krzyżyk na dużej planszy (5 w linii prostej).

 

 

GRY ZRĘCZNOŚCIOWE itp.

Arkanoid (1 osoba), skoki narciarskie (1-2 osoby), "goryle" (1 osoba).

Bilard (2D) (1 osoba).

 

 

PRZETWARZANIE OBRAZÓW

Mapowanie tekstur, czyli filtr, który nałoży obraz na inną powierzchnię

lub wyprostuje skrzywioną geometrię. 

(Zastosowanie: np. preprocessing przed OCR ze zdjęcia z aparatu;

deformacje geometryczne są zwykle duże, w przeciwieństwie do obrazów

pozyskiwanych ze skanera.)  (1 os.)