Spis rzeczy

Skala ocen

Do zdobycia było 60 pkt. Minimum na zalicznie to 30pkt. Pozostała skala:
Punkty   Ocena
53< . bdb
47< . <54db+
41< . <48db
35< . <42dost+
29< . <36dost
0< . <30ndst

Zasady zaliczenia pracowni - zmiany

Ponieważ zadań będzie więcej niż planowałem (ale za to łatwiejsze ;-), więc skala ocen może ulec zmianie. Na pewno będę się trzymał zasady, że na zaliczenie potrzeba zdobyć połowę maksymalnej liczby punktów.

Zasady zaliczenia pracowni

Pracownia będzie polegała na wykonaniu 5 różnych zadań. Tak na prawdę, będzie to jedno zadanie rozwijanie na kolejnych pracowniach. Treść tego zadania będzie można w pewnym momencie samodzielnie wybrać. Łącznie za te zadania będzie można otrzymać 80 pkt, do zaliczenia będzie potrzebne uzyskanie 40pkt. Każde zadanie ma przypisany termin oddania oraz maksymalną liczbę punktów jaką można za nie otrzymać. Po przekroczeniu terminu jeszcze przez tydzień będzie można uzyskać punkty, jednak nie więcej niż połowę. Później nie będzie ono oceniane.

Zadane szóste (i ostatnie)

Zadanie polega na dodaniu do istniejącej aplikacji możliwości drukowania (zestawienia, raportu itp.), tj. wygenerowania odpowiedniego Postscriptu, jego przejrzenia i ew. wydrukowania.
Termin: ostatnia pracownia w semestrze.

Zadane piąte

Zadanie składa się z dwóch części: przerobienia swojej aplikacji na aplikację GNOME, tj. aby główne okno było oknem GnomeApp; oraz dorobienie tłumaczenia na wybrany język (przynajmniej nagłówek okna i jedna z gałęzi menu). Do zrobienia tego zadania może być przydatny dokument Malcolma Tredinnicka Internationalising GNOME applications.
Termin: 13 stycznia.

Zadane czwarte

Jest to dalszy rozwój projektu. Zadanie polega na dorobieniu do swojej aplikacji trzech elementów: Termin: ostatnie zajęcia w grudniu.

Zadane trzecie

Zadanie trzecie jest już wstępem do realizacji projektu. Polega ono na implementacji okna z menu oraz wybranych okien edycji. Dla wygody można założyć, że na razie mamy tylko jedną daną każdego rodzaju przechowywaną w pliku i tylko ona jest poddawana edycji. Można przyjąć, że na razie nie nie są przeglądane ani przetwarzane żadne masowe dane - to będzie treścią kolejnego zadania.

Termin

koniec listopada.

Zadanie drugie na pracownię (10 pkt)

Zadanie będzie polegało na implementacji poniższych zadań. Implementacja każdego zadania powinno być umieszczone w odrębnym pliku, a plik z funkcją main powinien zawierać testy poszczególnych rozwiązań. Proszę dodać też odpowiednie pliki nagłówkowe z deklaracjami implementowanych funkcji. Rozwiązanie to należy połączyć z rozwiązaniem zadania pierwszego umieszczając pliki źródłowe w katalogu src i modyfikując odpowiednie pliki konfiguracyjne.
Lista zadań: Każde zadanie jest warte 4 punkty, przy czym nie można oddać więcej niż dwa zadania. 2 punkty można zdobyć za połączenie tego zadania z poprzednim, ale uzupełniając Makefile.am w src/ o odpowiednie zależności. Proszę też sprawdzić (i ew. uzupełnić), czy zaimplementowane w poprzednim zadaniu skrypty sprawdzają istnienie w systemie biblioteki GLib w odpowiedniej wersji.

Termin:

20 i 21 października

Pomoce

Opis biblioteki GLib

Zadanie pierwsze na pracownię (10 pkt)

Zadanie polega na utworzeniu w swoim katalogu plików i katalogów zgodnie z GNU Coding Standards dostosowanych do aplikacji GNOME opisanych w niniejszym dokumencie. Przede wszystkim wymagane są te pliki i skrypty konfiguracyjne, które umożliwiają automatyczne wygenerowanie odpowiednich plików i skryptów. Są to przede wszystkim pliki wspomnianych na wykładzie: configure.in oraz Makefile.am. W katalogu src/ proszę umieścić króciutki programik napisany w C (w stylu 'Hello, world') tak, aby możliwe było przetestowanie poprawności plików konfiguracyjnych. Pełna realizacja to możliwość automatycznego wygenerowania pliku Makefile, skompilowania pliku źródłowego przez wydanie polecenia make w głównym katalogu aplikacji, a także wygenerowanie odpowiedniego pliku dystrybucyjnego (polecenie make dist). Z plików pełniących rolę informacyjnych wystarczy utworzenie (i wypełnienie krótką acz sensowną informacją) plików README i Changelog.

Opis narzędzi: Automake i autoconf

Programy automake i autoconf są szczegółowo opisane tu oraz tu. Chętni mogą przeczytać pełen opis GNU Coding Standards, ale nie jest to konieczne do wykonania zadania. Jest też wprowadzenie w jezyku polskim.

Termin

13 i 14 października (w zależności od grupy).

Projekty na pracownię

Zadania opisane są skrótowo; nie umieszczałem w nich informacji o konieczności dodawania elementów, ich edycji czy usuwania uważając to za oczywiste. Uszczegółowienie specyfikacji zostawiam Wam. Można oczywiście wykazać się własną inwencją i zaproponować modyfikacje czy nawet całkowicie nowy projekt.
Uwaga: większość poniższych zadań ma charakter bazodanowy. Ponieważ są to zajęcia z tworzenia aplikacji w środowisku GNOME/GTK, nie będzie oceniana efektywność przetwarzania danych, można więc samodzielnie zaimplementować własny elementarny system dostępu do danych. Można też skorzystać z istniejących już narzędzi, np. do przetwarzania danych przechowywanych w pliku (przykładem jest biblioteka Berkeley DB przechowująca dane w plikach XML). Możliwe jest też przechowywanie danych na jakimś serwerze SQL, lecz zwykle wymaga to kontaktu z administratorem.

Wypożyczalnia

Zaprogramuj system obsługujący wypożyczalnię, np. filmów DVD i VHS czy książek i czasopism. System zawiera zarówno spis klienów wypożyczalni, jak i rejestr zawartości wypożyczalni.

Kursy walut

Podczas rozliczeń międzynarodowych ważne jest, aby znać kursy walut we wskazanym dniu (np. ogłaszany przez Narodowy Bank Polski). Zadaniem systemu jest przechowywanie kursów różnych walut z kolejnych dni. Dodatkowo warto zrobić mały kalkulator walutowy.

Miary i wagi

Jest to aplikacja służąca do przeliczania wielkości wyrażanych za pomocą różnych jednostek miar, np. z metrycznych na anglosaskie. Oczywiście, możliwe jest interakcyjne dodawanie nowych jednostek miar.

Układanie planu zajęć

Zakładamy, że danymi wejściowymi jest spis nauczycieli, lista klas i lista przedmiotów. System ma wspomagać inteakcyjny przydział zajęć do klas i prowadzących do zajęć.

Przeglądarka logów systemowych

System ma możliwość czytania i filtrowania logów z wybranych plików rejestrujących zdarzenia w systemie. Można dodać możliwość generowania różnych zestawień, a nawet wykresów.

Generator ankiet

Zadaniem systemu jest generowanie ankiet zawierających różnego rodzaju pytania (można przyjąć, że przynajmniej wprowadzenie tekstu, liczby, czy wybór jednej z kilku możliwości). Oprócz tego system ma zawierać program, który na podstawie wygenerowanego wzoru ankiety "odpyta" i zapisze otrzymaną odpowiedź.

Firma transportowa

Firma transportowa przewozi towary z miasta A do miasta B. Firma ta dysponuje flotą pojazdów, przy czym każdy pojazd ma określoną ładowność. Oprócz tego w pliku jest zapisane, jakie toway i jakiej ładowności należy przewiść z miasta A do miasta B. Program ma wspomóc wizualny przydział towarów do pojazdów, jednak tak, aby nie przekroczyć zadanej ładowności. Uwaga: jeśli towarów jest wiele, może zajść konieczność kilkakrotnych kursów pojazdów. Uwzględnij więc fakt, że pojazdowi można przydzielić kilka kursów.