Implementacja bibliotek i pakietów do analizy danych¶
Studia inżynierskie, IV sem. (letni), przedmiot obieralny, Inżynieria i Analiza Danych (Data Science), Wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej
Kurs omawia w jaki sposób implementować efektywnie i zgodnie z zasadami sztuki wybrane metody przetwarzania i analizy danych. Nacisk położony jest na tworzenie wysokiej jakości kodu (dobrze udokumentowanego i przetestowanego) i udostępnienie go w postaci bibliotek języka C oraz pakietów R i Python. Poruszane są także zagadnienia związane z przyspieszaniem obliczeń (optymalne wykorzystanie pamięci podręcznej, istniejących bibliotek, programowanie wielowątkowe przy użyciu OpenMP itp.). Dzięki uczestnictwie w kursie, studenci będą także lepiej rozumieć wady i zalety istniejących pakietów analizy danych (NumPy, SciPy, R, MATLAB itd.).
Wymagania wstępne:
Przetwarzanie danych ustrukturyzowanych (R i Python),
Algorytmy i struktury danych,
Metody numeryczne.
Harmonogram – Semestr letni 2025/2026¶
Wykład+Laboratoria+Projekt („warsztaty”): czwartki 14:15-18:00, MiNI s. 105 — należy przynieść własnego laptopa
Konsultacje: MiNI pok. 550, jestem prawie codziennie.
Kolokwia: VIII i XIV tydzień
Oddanie projektów+prezentacja: XV tydzień
TBA
Regulamin zaliczenia¶
Na zaliczenie składają się oceny zdobyte za rozwiązanie dwóch prac pisemnych (33+33 p.) oraz projekt programistyczny z prezentacją wyników pod koniec semestru (33 p.).
W trakcie kolokwiów można mieć przy sobie tylko jedną kartkę A4 z własnymi odręcznymi zapiskami.
Podczas zadania projektowego nie można korzystać z żadnych narzędzi AI (ChatGPT, Copilot, Claude Code itp.).
Zgodnie z Regulaminem Studiów w Politechnice Warszawskiej (par. 19 ust. 4), jeżeli podczas weryfikacji osiągnięcia efektów uczenia się zostanie stwierdzona niesamodzielność pracy studenta lub korzystanie przez niego z materiałów lub urządzeń innych niż dozwolone w regulaminie przedmiotu, student uzyskuje ocenę niedostateczną i traci prawo do zaliczenia przedmiotu w jego bieżącej realizacji.
Obecność na zajęciach laboratoryjnych i projektowych jest obowiązkowa. Za każdą nieusprawiedliwioną nieobecność (np. formalnym zaświadczeniem lekarskim) obniża się wynik końcowy o 5 p.
Nie ma możliwości poprawy ocen. Ocena końcowa jest funkcją sumy uzyskanych punktów: wynik ≤50 p. oznacza ocenę 2,0; (50, 60] – 3,0; (60, 70] – 3,5; (70, 80] – 4,0; (80, 90] – 4,5; >90 – 5,0.
Literatura¶
T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, MIT Press and McGraw-Hill, 2022
W.H. Press, S.A. Teukolsky, W.T. Vetterling, B.P. Flannery, Numerical Recipes. The Art of Scientific Computing, 3rd ed., Cambridge University Press, 2007
S. Marsland, Machine Learning: An Algorithmic Perspective, Chapman&Hall/CRC, 2015
M. Gagolewski, Deep R Programming, 2026
M. Gagolewski, Minimalist Data Wrangling with Python, 2026
D. Goldberg, What every computer scientist should know about floating-point arithmetic, ACM Computing Surveys 21(1), 1991, 5–48
N.J. Higham, Accuracy and Stability of Numerical Algorithms, SIAM, 2002
G.H. Golub, C.F. Van Loan, Matrix Computations, The Johns Hopkins University Press, 2013
(*) D.E. Knuth, The Art of Computer Programming, Vols. 1–4B, Addison-Wesley, 2023
T. Rothwell, J. Youngman, and others, The GNU C Reference Manual (skip the parts devoted to the “GNU extensions”)
The GNU C Language Manual (skip the parts devoted to the “GNU extensions”)
J. Gustedt, Modern C, Manning, 2019
R.J. Hyndman, Y. Fan, Sample quantiles in statistical packages, American Statistician, 50(4), 1996, 361–365. DOI: 10.2307/2684934.
(*) B.W. Kernighan, D.M. Ritchie, The C Programming Language, Prentice Hall, 1988
(*) J. Arndt, Matters Computational: Ideas, Algorithms, Source Code, Springer, 2011
(*) Programming Languages – C. International Standard ISO/IEC 9899:2023, draft
Kody źródłowe:
Oprogramowanie¶
Języki programowania: C, C++ (gcc/clang), R, Python (CPython, Cython), Fortran
System operacyjny GNU/Linux (może być na wirtualnej maszynie, np. VirtualBox), np. Ubuntu/Kubuntu.