Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Zaawansowane programowanie obiektowe
Tok studiów:
2019/2020
Kod:
EAiR-1-303-s
Wydział:
Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Automatyka i Robotyka
Semestr:
3
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Prowadzący moduł:
dr hab. inż. Jaworek-Korjakowska Joanna (jaworek@agh.edu.pl)
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Nauka programowania zorientowanego na obiekty (OOP) na przykładzie języków C++ i Python, w oparciu o współcześnie stosowane standardy języków (C++17, Python 3.6).

Opis efektów uczenia się dla modułu zajęć
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Powiązania z KEU Sposób weryfikacji i oceny efektów uczenia się osiągniętych przez studenta w ramach poszczególnych form zajęć i dla całego modułu zajęć
Wiedza: zna i rozumie
M_W001 Ma wiedzę w zakresie informatyki obejmującą w szczególności podstawy programowania obiektowego w językach C++ i Python, wraz z elementami inżynierii oprogramowania. AiR1A_W04 Wykonanie ćwiczeń laboratoryjnych,
Projekt,
Kolokwium
Umiejętności: potrafi
M_U001 Potrafi pozyskiwać informacje z literatury, baz danych, dokumentacji języka programowania, dokumentacji bibliotek programistycznych i innych źródeł; potrafi integrować i weryfikować uzyskane informacje, dokonywać ich interpretacji, a także wyciągać wnioski oraz formułować i uzasadniać opinie. AiR1A_U01 Wykonanie ćwiczeń laboratoryjnych,
Projekt
M_U002 Potrafi posługiwać się specjalistyczną terminologię angielską związaną z zagadnieniami programowania. AiR1A_U03 Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_U003 Potrafi planować i organizować pracę indywidualną oraz w zespole; współdziałać z innymi osobami w ramach prac zespołowych. AiR1A_U03 Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_U004 Potrafi programować obiektowo, stosując się do dobrych praktyk programistycznych oraz stosując metody pracy w grupie (Git). AiR1A_U07 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu
Kompetencje społeczne: jest gotów do
M_K001 Potrafi umiejętnie i krytycznie korzystać z serwisów służących wymianie wiedzy oraz rozwiązywaniu problemów (np. Stack Overflow). AiR1A_K01 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu
Liczba godzin zajęć w ramach poszczególnych form zajęć:
SUMA (godz.)
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
42 14 0 28 0 0 0 0 0 0 0 0
Matryca kierunkowych efektów uczenia się w odniesieniu do form zajęć i sposobu zaliczenia, które pozwalają na ich uzyskanie
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Forma zajęć dydaktycznych
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Wiedza
M_W001 Ma wiedzę w zakresie informatyki obejmującą w szczególności podstawy programowania obiektowego w językach C++ i Python, wraz z elementami inżynierii oprogramowania. + - + - - - - - - - -
Umiejętności
M_U001 Potrafi pozyskiwać informacje z literatury, baz danych, dokumentacji języka programowania, dokumentacji bibliotek programistycznych i innych źródeł; potrafi integrować i weryfikować uzyskane informacje, dokonywać ich interpretacji, a także wyciągać wnioski oraz formułować i uzasadniać opinie. - - + - - - - - - - -
M_U002 Potrafi posługiwać się specjalistyczną terminologię angielską związaną z zagadnieniami programowania. + - + - - - - - - - -
M_U003 Potrafi planować i organizować pracę indywidualną oraz w zespole; współdziałać z innymi osobami w ramach prac zespołowych. - - + - - - - - - - -
M_U004 Potrafi programować obiektowo, stosując się do dobrych praktyk programistycznych oraz stosując metody pracy w grupie (Git). + - + - - - - - - - -
Kompetencje społeczne
M_K001 Potrafi umiejętnie i krytycznie korzystać z serwisów służących wymianie wiedzy oraz rozwiązywaniu problemów (np. Stack Overflow). + - + - - - - - - - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 90 godz
Punkty ECTS za moduł 3 ECTS
Udział w zajęciach dydaktycznych/praktyka 42 godz
Przygotowanie do zajęć 14 godz
Samodzielne studiowanie tematyki zajęć 34 godz
Szczegółowe treści kształcenia w ramach poszczególnych form zajęć (szczegółowy program wykładów i pozostałych zajęć)
Wykład (14h):

Wykład obejmuje poniższe zagadnienia:

  • złożoność obliczeniowa algorytmów
  • wybrane algorytmy sortowania
  • grafy i algorytmy przeszukiwania grafów
  • problem komiwojażera
  • zasady SOLID
  • rozwiązywanie podstawowych problemów z zakresu architektury oprogramowania

Ćwiczenia laboratoryjne (28h):

Początkowe zadania mają na celu przypomnienie Studentowi podstaw programowania w języku Python i C++ w paradygmacie programowania strukturalnego oraz zapoznać go z zastosowaniami języków programowania do rozwiązywania problemów algorytmicznych.
Kolejne zadania (małe projekty programistyczne) mają na celu przećwiczenie projektowania i implementacji bardziej złożonych programów w paradygmacie programowania zorientowanego na obiekty, zgodnie z: dobrymi praktykami programistycznymi oraz dobrymi praktykami wytwarzania oprogramowania (m.in. korzystanie z systemów kontroli wersji, pisanie testów jednostkowych).

Ćwiczenia z programowania

  • Sortowanie
  • Grafy i podstawowe algorytmy grafowe
  • Problem komiwojażera
  • Projekt programistyczny w języku Python
  • Projekt programistyczny w języku C++

Python

  • Klasy (inicjalizacja obiektów, kontrola dostępu, składowe – w tym właściwości)
  • Programowanie zorientowane na obiekty (kompozycja i dziedziczenie, klasy abstrakcyjne i interfejsy, duck typing, programowanie modułowe)
  • Błędy i wyjątki (obsługa, definiowanie własnych wyjątków)
  • Filozofia Pythona (Zen of Python, idiomy programistyczne)
  • Dobre praktyki (m.in. PEP 8, PEP 484)

Umiejętności (language agnostic)

  • korzystanie z bibliotek, czytanie dokumentacji
  • diagramy klas UML
  • zasady SOLID
  • dobre praktyki programistyczne, pisanie bezpiecznego i łatwego w utrzymaniu kodu
  • metodyka tworzenia testów jednostkowych
  • rozwiązywanie podstawowych problemów z zakresu architektury oprogramowania

Pozostałe informacje
Metody i techniki kształcenia:
  • Wykład: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Ćwiczenia laboratoryjne: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Warunki zaliczenia modułu ćwiczeń laboratoryjnych

  • Ocena z modułu ćwiczeń laboratoryjnych będzie wystawiana na podstawie średniej ważonej wyników uzyskanych z kolokwiów i z testów, z uwzględnieniem ponadprogramowej i organizacyjnej działalności Studenta.
  • Warunkiem koniecznym zaliczenia modułu ćwiczeń laboratoryjnych jest zamieszczenie przez Studenta na platformie UPeL do końca semestru rozwiązań wszystkich (!) zadanych przez Prowadzącego zadań.
  • Testy weryfikujące stopień przygotowania Studenta do realizacji danego tematu laboratoryjnego, znajomość wzorcowych rozwiązań zadań ze zrealizowanych tematów, oraz innych nowych treści wprowadzonych w trakcie zajęć będą przeprowadzane na platformie UPeL.
  • Szczegółowe zasady uzyskiwania zaliczenia (m.in. wagi poszczególnych składników zaliczenia) znajdują się na stronie przedmiotu.

Obecność na ćwiczeniach laboratoryjnych

  • Obecność na zajęciach jest obowiązkowa. Nieobecność nieusprawiedliwiona może skutkować niezaliczeniem modułu ćwiczeń laboratoryjnych (a tym samym całego przedmiotu).

Przebieg ćwiczeń laboratoryjnych

  • Student jest zobowiązany przed (!) zajęciami zapoznać się z umieszczonymi na stronie kursu materiałami dotyczącymi tematu laboratoryjnego realizowanego na danych zajęciach.
  • Student jest zobowiązany zamieścić kody źródłowe samodzielnych rozwiązań ćwiczeń laboratoryjnych na platformie UPeL zgodnie z wytycznymi podanymi na platformie UPeL przy danym zadaniu (w szczególności dotyczy to terminu granicznego na oddanie rozwiązania). W przypadku zadań zespołowych wystarczy, że jeden członek zespołu prześle rozwiązanie w imieniu całego zespołu. Zamieszczone pliki będą stanowiły podstawę do przyznawania punktów za wykonanie zadań przewidzianych do realizacji w ramach laboratorium. Nieoddanie choć jednego rozwiązania w terminie lub oddanie go niezgodnie z wytycznymi może skutkować niezaliczeniem modułu ćwiczeń laboratoryjnych (a tym samym całego przedmiotu).

Samodzielność pracy

  • Indywidualne ćwiczenia laboratoryjne należy wykonywać samodzielnie. Dopuszcza się konsultacje koleżeńskie, które jednak nie mogą polegać na wspólnym pisaniu kodu – wykrycie sytuacji noszących znamiona plagiatu będą karane z całą surowością.
Zasady udziału w zajęciach:
  • Wykład:
    – Obecność obowiązkowa: Nie
    – Zasady udziału w zajęciach: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Ćwiczenia laboratoryjne:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
Sposób obliczania oceny końcowej:
  • Ocena końcowa będzie wystawiona przez Wykładowcę na podstawie oceny z modułu ćwiczeń laboratoryjnych – ocena końcowa będzie odpowiadała ocenie z modułu ćwiczeń laboratoryjnych.
Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

Student zobowiązany jest zapoznać się we własnym zakresie z materiałem omawianym podczas zajęć oraz samodzielnie wykonać związane z nim ćwiczenia.

Wymagania wstępne i dodatkowe, z uwzględnieniem sekwencyjności modułów :

Przedmiot opiera się na treściach omawianych w ramach wcześniejszych przedmiotów “Wstęp do informatyki” oraz “Programowanie strukturalne i obiektowe”, w związku z tym wymagane są:

  • znajomość języka C++ na poziomie średniozaawansowanym
  • znajomość języka Python na poziomie średniozaawansowanym
  • znajomość języka angielskiego na poziomie średniozaawansowanym
  • znajomość przynajmniej jednego wybranego zintegrowanego środowiska programistycznego na poziomie średniozaawansowanym
Zalecana literatura i pomoce naukowe:

C++

  • Prata S., C++ Primer Plus (6th Ed.), Addison-Wesley Professional, 2011
  • Lippman S., Lajoie J., Moo B., C++ Primer (5th Edition), Addison-Wesley Professional, 2012

Python

  • Lutz M., Learning Python (5th Ed.), O’Reilly, 2013
  • Alchin M., Pro Python, Apress, 2010
  • Phillips D., Python 3 Object Oriented Programming, Packt, 2010

Language agnostic

  • Martin R., Clean Code – A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

1 J. Jaworek-Korjakowska: Computer-aided diagnosis of micro-malignant melanoma lesions applying support vector machines, BioMed Research International, 2016, s. 1–8
2 J. Jaworek-Korjakowska, P. Kłeczek: Automatic classification of specific melanocytic lesions using artificial intelligence, BioMed Research International, 2016, s. 1–17
3 J.Jaworek-Korjakowska: Artificial neural networks in the diagnosis of pigmented skin lesions: a review., Bio-Algorithms and Med-Systems, 2015 vol. 11 iss. 2, s. 36
4 T. Pięciak, J. Jaworek-Korjakowska, M.Gorgoń: Neural Networks for Medical Image Processing, Bio-Algorithms and Med-Systems, Vol. 7, No. 4, 2011, s 101-110

Informacje dodatkowe:

brak