Wstęp do programowania - Projekt
Zasady
- Grupy dwuosobowe
- Celem pracy jest stworzenie produktu, który może przyjąć dowolnie wybraną przez Was formę - może to być raport, zbiór funkcji, pakiet w R, aplikacja interaktywna, itd.
- Wymyślenie i zaimplementowanie funkcjonalności leży w pełni w gestii każdej z grup
- Praca ma się odbywać w ramach zespołu założonego na GitHub pod adresem https://classroom.github.com/a/XDcfOwFN
- Nazwa zespołu powinna zawierać nazwisko jednej osoby z zespołu (bez polskich znaków)
- Każdy projekt powinien posiadać plik
README.md
zawierający listę osób biorących w nim udział oraz opis tego projektu (!)
- Termin oddania projektu - 2024-04-03, godz. 12:00
- W części Issue należącym do każdego z repozytoriów z projektami zostanie dodana recenzja.
Zespół powinien odpowiedzieć na wszystkie kwestie z recenzji, zarówno poprzez naprawę kodu, ale też poprzez odpisanie na recenzję.
- Do ostatecznej wersji projektu należy przygotować wideo (ok. 3 min) promujące dany projekt i pokazujące jego możliwości. Wideo należy załączyć w plikach na grupie MS Teams (
Nazwisko_Nazwisko.mp4
)
- Termin oddania projektu po recenzji - 2024-04-17, godz. 12:00
Tematyka
1) Obsługa danych punktowych (wektorowych)
- Cztery pliki:
- punkty.csv
- linie.csv
- poligony.csv
- wektory.csv
- Zawierają one ramkę danych z pięcioma kolumnami:
x
- współrzędna x
y
- współrzędna y
id
- id obiektu (po jednym id na obiekt w przypadku punktów, wiele id na obiekt w przypadku linii i poligonów)
typ
- typ danych - punkt, linia, poligon
nazwa
- nazwa opisująca dany obiekt
- Przykładowa funkcjonalność - Jaka jest odległość od zadanych współrzędnych do wybranego obiektu (np. budynku, drogi czy usługi)?
2) Obsługa danych rastrowych
- Cztery pliki:
- opady.rds
- temperatura.rds
- wysokosc.rds
- pokrycieterenu.rds
- Zawierają one macierze (20 kolumn i wierszy), które opisują wartości:
- opadów w mm
- temperatury w stopniach Celsjusza
- wysokości nad poziomem morza w metrach
- pokrycie terenu (
1
- obszary trawiaste, 2
- woda, 3
- budynki, 4
- drzewa)
- Przykładowa funkcjonalność - Jakie współrzędne ma miejsce o najwyższej temperaturze?
3) Obsługa obu rodzajów danych
- Połączenie dwóch zbiorów z wyżej
- Przykładowa funkcjonalność - Jaka była wielkość opadu dla wybranego obiektu (np. budynku, drogi czy usługi)?
4) Obsługa danych tabelarycznych
- Jeden plik:
- meteo20002020.csv
- Zawiera on informacje o stacjach synoptycznych oraz miesięcznych pomiarach średniej temperatury, sumy opadów i średniego ciśnienia atmosferycznego z lat 2000 do 2020
- Przykładowa funkcjonalność - Jakie stacje są do najbardziej podobne pod względem wartości pomiarów meteorologicznych do wybranej przez użytkownika?
5) Inne
- Inny projekt wykorzystujący wiedzę uzyskaną na zajęciach
- Inny projekt wymaga wcześniejszego zatwierdzenia
Przykłady przeszłych projektów
- Unit Conversion Package - pakiet w języku R pozwalający na przeliczanie różnorodnych jednostek (~30 możliwości)
- mathobjects - pakiet R służący do tworzenia obiektów reprezentujących podstawowe figury (np. kwadrat, prostokąt, koło, trójkąt, itd.) oraz wyliczania na ich podstawie podstawowych miar (np. obwód, pole powierzchni, itd.)
- Analiza danych GUS - projekt badający relację pomiędzy cenami w latach 1999-2017 a dochodami przypadających na 1 osobę w gospodarstwie domowym
- Kalkulator walutowy - zbiór skryptów pozwalający na przeliczanie walut
- GeoMapApp - aplikacja interaktywna pozwalająca na eksplorację danych przestrzennych
- Zagrożenie powodziowe - zbiór skryptów pozwalających na określenie zagrożenia powodziowego na zadanych danych
- ee - zbiór skryptów pozwalających na przedstawienie oraz zwizualizowanie na mapie danych dotyczących trzęsień Ziemi na świecie w sposób wybrany przez odbiorcę
- Population pyramid - tworzenie i porównywanie piramid wieku dla dowolnych państw i lat
- Calendar.R - aplikacja interaktywna pokazująca informacje o wybranej dacie
Ocenianie
Za projekt otrzymacie dwie oceny: jedną za wstępną wersję projektu, a drugą za wersję końcową.
Zasady oceniania:
- Poprawność.
Kod nie może być tylko złożony i dobrze udokumentowany, musi być po pierwsze poprawny.
- Jakość (nie ilość).
Zalecam stworzyć kilka dobrych, przemyślanych i zróżnicowanych funkcji niż kilkadziesiąt bardzo podobnych.
- Komunikatywność.
Stworzony zbiór funkcji czy pakiet musi zawierać opis projektu w pliku
README.md
oraz dokumentację (czy to w postaci formalnej czy też komentarzy kodu).
Ocenianie będzie to, czy na podstawie dokumentacji potencjalny użytkownik będzie (1) zainteresowany waszym projektem i (2) potrafił go użyć.
- Pomysłowość.
Wyższa ocena będzie dawana projektom, które zawierają ciekawe (moim zdaniem) pomysły lub używają interesującego (moim zdaniem) podejścia.