Skip to content

IS-UMK/sylabusy

Repository files navigation

Cele studiów inżynierskich

  • kształtowanie intuicji związanej z obiektami teoretycznymi: na przykład poprzez związanie ich z intuicją przestrzenną, ich zobrazowaniem przykładami, zastosowaniami. Ułatwi to zrozumienie pojęć, uchwycenie współzależności między nimi oraz ich efektywne zapamiętywanie.
  • kształtowanie umiejętności znajdowania rozwiązań problemów zdefiniowanych modelami matematycznymi za pomocą modeli obliczeniowych w postaci programów komputerowych.
  • kształtowanie kultury współpracy wedle zasady: pisać kod w taki sposób, aby osoba go czytająca włożyła tyle wysiłku w jego zrozumienie ile to konieczne, ale nie więcej. Ujmując to inaczej: tworzyć kod na tyle złożony na ile to konieczne, ale nie bardziej..
  • kształtowanie efektywnych praktyk kodowania i rozwijania projektów wedle zasady: wkładanie tyle wysiłku w rozwiązywanie problemów ile to konieczne, ale nie więcej.
  • motywowanie do wytężonego wysiłku intelektualnego poprzez jasno sprecyzowaną perspektywę nabycia umiejętności rozwiązywania problemów z użyciem algorytmów sztucznej inteligencji.

Organizacja studiów inżynierskich

  • przez pierwsze dwa lata studiów student nabywa wiedzę i doświadczenie w rozwiązywaniu problemów niezbędne każdemu wykształconemu informatykowi. Zakres wiedzy i doświadczeń jest na tyle szeroki, aby każdy ze studentów mógł możliwie świadomie wybrać drogę dalszej specjalizacji, która mu najbardziej odpowiada.
  • podczas ostatniego 1.5 roku studiów student robi specjalizację (jedną lub więcej) oraz pisze pracę inżynierską. Wśród specjalizacji do wyboru można by wyróżnić:
    • sieciowe (już przygotowane przez Piotr Ablewski)
    • sztuczna inteligencja, python
    • neuronauki, szeregi czasowe
    • gaming
    • c++
  • uatrakcyjnieniem ścieżek rozwoju mogłyby być długofalowe projekty, w których studenci brali by aktywny udział, przyczyniając się do rozwoju KIS poprzez automatyzację biurokracji, ułatwianie dydaktyki, wsparcie dla badań naukowych, na przykład: rozszerzanie funkcjonalności systemu dydaktycznego Michała Pierzchalskiego, w tym zarówno ścieżka sieciowa (rozwijanie GitHub App) lub automatyzacja pewnych czynności (uczenie maszynowe) jak np. AI recenzent, które mogłoby być częścią tego systemu; rozwijanie/ kontrybuowanie /tworzenie narzędzi do neuronauk lub szerzej do analizy sygnału.
  • dodatkowym uatrakcyjnieniem byłoby zapewnienie wynagrodzenia przynajmniej tym najbardziej obiecującym studentom.
  • w ramach każdego przedmiotu istnieje co najmniej jedna grupa gwiazdkowa, aby zapewnić odpowiedni poziom/ofertę lepszym lub/i zainteresowanym studentom.
  • ujednolicenie systemu oceniania/robienia zadań/kolokwiów/egzaminów, np. kolokwia robimy wspólne dla wszystkich studentów danego przedmiotu. Wyjątkiem mogą być grupy gwiazdkowe, które rządziłyby się własnymi prawami. Podobnie reguły by obowiązywały dla zadań/projektów zaliczeniowych. Miałoby to poprawić przejrzystość i sprawiedliwość oceniania.
  • dążenie do zwiększenia poziomu kształcenia (stąd też niezbędna jest zmiana sylabusów) oraz wymagań stawianych studentom. Pozwoli nam to uzyskać renomę oraz docelowo pozyskać najlepszych studentów, których moglibyśmy wciągnąć w pracę naukową.

Kalendarz

Semestr I

Wszystkie poniższe przedmioty są obowiązkowe.

  • Wstęp do matematyki i informatyki. Patrz tutaj. Obejmuje podstawowe pojęcia matematyczne i informatyczne niezbędne każdemu informatykowi.
  • Wstęp do systemu Unix. Patrz tutaj. Kurs ten ma sprawić, aby student swobodnie się czuł i poruszał w środowisku Unix. W szczególności pozna podstawową strukturę systemu, nauczy się terminala (w tym różnych komend oraz pisania prostych skryptów. W skrócie pozna wszystko to, co może mu ułatwić oraz usprawnić pracę nad projektami.
  • Wstęp do programowania. Patrz tutaj. Kurs koncentruje się na przygotowaniu studenta do programowania pod kątem uniwersalnych (niezależnych od konkretnego języka programowania) zasad programowania. W szczególności przygotowania środowiska pracy (w tym git, Github, dobór edytora/ide), zasad dobrego programowania, zasad testowania, umiejętności recenzowania z użyciem Githuba, pracy w grupie oraz umiejętności zaplanowania realizacji projektu (np. zasada "od ogółu od szczegółu"). Ponadto przedmiot wprowadza studenta w temat dobóru narzędzi ułatwiający utrzymanie kodu na przykładzie dwóch języków c (kompilowany), python (skryptowy): sztuczna inteligencja (generowanie kodu, testów, ocena kodu) oraz klasyczne lintery, formattery. Może również zostać omówiony system GitHubowego CI-CD.
  • Wstęp do algorytmów I. Patrz tutaj Przedmiot prowadzony w języku c mający na celu wprowadzenie studenta w świat algorytmiki. Poza praktyczną częścią w c, podczas której student będzie implementował zadania zaliczeniowe, student też poznaje metody sprawdzania poprawności działania programu (np. niezmienniki pętli) oraz podstawowe struktury danych takie jak tablice wraz z algorytmami z nimi związanymi.
  • Analiza matematyczna I. Patrz tutaj. Przedmiot ten wprowadza studenta w podstawowe pojęcia analizy matematycznej funkcji jednej zmiennej, które są niezbędne m.in. do zrozumienia algorytmów sztucznej inteligencji. Ponadto omawanie takie pojęcia jak supremum infimum (niezbędne dla postawienia problemu optymilizacji), ciągi, szeregi, granice.
  • Algebra liniowa I. Patrz tutaj. Przedmiot ten dotyczy głownie pojęcia wektora w przestrzeni euklidesowej.Kładziony jest nacisk na intuicje geometryczne. W grupach gwiazdkowych możliwe jest również przestawienie podstawowych problemów uczenia maszynowego np. regresja liniowa, svm oraz wprowadzenie ogólnego pojęcia przestrzeni wektorowej.

Semestr II

Wszystkie przedmioty obowiązkowe. Być może należy scalić Wstęp do algorytmów I i II w jeden kurs robiony w tym semestrze a wyrzucony z semestru I. Po pierwsze odciąża pierwszy semestr. Po drugie dzieki matematyce dyskretnej możliwe już jest omawianie rekurencyjnych struktur danych takich jak listy czy drzewa binarne.

  • Projektowy c. Pierwsze większe projekty zaliczeniowe ok. 1000 lini kodu.
  • Wstęp do html, css, javascript.
  • Matematyka dyskretna. Patrz tutaj. Kontynuacja wstępu do matematyki i informatyki. Omawiane są bardziej złożone zagadnienia takie jak rekurencja, złożoności programów, kombinatoryka, drzewa, grafy, itp.
  • Wstęp do algorytmów II. Patrz tutaj . Wprowadzane są bardziej złożone stuktury danych takie jak listy, drzewa binarne i algorytmy z nimi związane. Do implementacji może zostać użyty c++ (zamiast czystego c), który jest dużo bardziej naturalny dla struktur danych (np. naturalne encapsulation poprzez class i struct).
  • Analiza matematyczna II. Patrz tutaj. Omawiany jest rachunek funkcji wielu zmiennych oraz zastosowania np. w uczeniu maszynowym np. spadek gradientowy. Pojawia się też pojęcie miary, w tym miara Lebesgue'a.
  • Algebra liniowa II. Patrz tutaj Omawiane są macierze. Jako zastosowania przedstawiany jest np. model feedforward. Ponadto pojawia się pojęcie tensora. Możliwość skorzystania np. pytorch dla praktyki w operawaniu na tensorach.

Wstęp do html, css, javascript mógłby pojawić się dopiero na 2 roku. Jest to uzasadnione z perspektywy programowej, gdyż dla pełnego zrozumienia, jak działa js, potrzebne są takie pojęcia jak event loop, a dla zrozumienia czym jest DOM ogólne drzewo - a te pojęcia dopiero są usystematyzowane na 2 roku). Kolejnym argumentem za może być to, że na MIMUW te zagadnienia też pojawiają się dopiero na 4 semestrze.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •