Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie strukturalne i obiektowe
Tok studiów:
2019/2020
Kod:
EAiR-1-206-s
Wydział:
Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Automatyka i Robotyka
Semestr:
2
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 strukturalnego i zorientowanego obiektowo (OOP) na przykładzie języków C i C++, w oparciu o współcześnie stosowane standardy języków (C11, C++14).

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 strukturalnego i obiektowego (w językach C i C++) wraz z elementami inżynierii oprogramowania. AiR1A_W04 Egzamin,
Kolokwium,
Wykonanie ćwiczeń laboratoryjnych
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
M_U002 Potrafi programować strukturalnie i obiektowo, stosując się do dobrych praktyk programistycznych. AiR1A_U07 Wykonanie ćwiczeń laboratoryjnych
M_U003 Potrafi posługiwać się specjalistyczną terminologię angielską związaną z zagadnieniami programowania. AiR1A_U02 Wykonanie ćwiczeń laboratoryjnych
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
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
56 28 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 strukturalnego i obiektowego (w językach C i C++) 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 programować strukturalnie i obiektowo, stosując się do dobrych praktyk programistycznych. + - + - - - - - - - -
M_U003 Potrafi posługiwać się specjalistyczną terminologię angielską związaną z zagadnieniami programowania. + - + - - - - - - - -
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 111 godz
Punkty ECTS za moduł 4 ECTS
Udział w zajęciach dydaktycznych/praktyka 56 godz
Przygotowanie do zajęć 30 godz
Samodzielne studiowanie tematyki zajęć 25 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 (28h):

Celem wykładu jest zapoznanie studentów z podstawowymi zasadami i dobrymi praktykami tworzenia programów komputerowych w dwóch paradygmatach programowania:

  • paradygmacie strukturalnym – na przykładzie języka C (w oparciu o tzw. standard C11), oraz
  • paradygmacie zorientowanym obiektowo (object-oriented programming) – na przykładzie języka C++ (w oparciu o tzw. standard C++17).

C

  • Proces budowania programu (preprocessing, kompilacja, konsolidacja)
  • Reprezentacja informacji (typy danych, typy zmiennych, operacje arytmetyczne, konwersje typów)
  • Elementy programowania (instrukcje sterujące, funkcje)
  • Podstawowe struktury danych (tablice, struktury)
  • Wskaźniki (oraz organizacja pamięci, adresowanie, wywołania zwrotne)
  • Dynamiczne zarządzanie pamięcią

C++

  • Obiekty i klasy (tworzenie, niszczenie, operacje specjalne, składowe statyczne)
  • Semantyka wartości i referencji, const correctness
  • Biblioteka standardowa (kontenery, iteratory, algorytmy, operacje we/wy w oparciu o strumienie)
  • Rozszerzanie funkcjonalności klas (kompozycja i dziedziczenie, polimorfizm, klasy abstrakcyjne i interfejsy)
  • Zarządzanie pamięcią (inteligentne wskaźniki)
  • Szablony
  • Błędy i wyjątki (obsługa, definiowanie własnych wyjątków)
  • Przestrzenie nazw

Ćwiczenia laboratoryjne (28h):

Celem ćwiczeń laboratoryjnych jest zapoznanie studentów z podstawowymi zasadami i dobrymi praktykami tworzenia programów komputerowych w dwóch paradygmatach programowania:

  • paradygmacie strukturalnym – na przykładzie języka C (w oparciu o tzw. standard C11), oraz
  • paradygmacie zorientowanym na obiekty (object-oriented programming) – na przykładzie języka C++ (w oparciu o tzw. standard C++17).

Szczególnie duży nacisk położony jest na efektywne wykorzystywanie funkcjonalności udostępnianej przez biblioteki standardowe każdego z języków oraz na stosowanie dobrych praktyk programistycznych i zasad inżynierskich (DRY, KISS, YAGNI itd.)

C

  • Operacje arytmetyczne
  • Instrukcje sterujące
  • Funkcje, rekurencja
  • Tablice
  • Wskaźniki

C++

  • Obiekty i klasy (tworzenie, niszczenie, operacje specjalne, składowe statyczne)
  • Semantyka wartości i referencji, const correctness
  • Biblioteka standardowa (kontenery, iteratory, algorytmy, operacje we/wy w oparciu o strumienie)
  • Rozszerzanie funkcjonalności klas (kompozycja i dziedziczenie, polimorfizm, klasy abstrakcyjne i interfejsy)
  • Zarządzanie pamięcią (inteligentne wskaźniki)
  • Szablony
  • Błędy i wyjątki (obsługa, definiowanie własnych wyjątków)
  • Przestrzenie nazw

Umiejętności (language agnostic)

  • korzystanie z dokumentacji
  • testy jednostkowe (tworzenie, korzystanie)
  • efektywne wykorzystanie bibliotek standardowych
  • efektywne korzystanie z IDE (m.in. debuggowanie, refaktoryzacja)
  • dobre praktyki programistyczne, pisanie bezpiecznego i łatwego w utrzymaniu kodu
  • 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.
  • Na zakończenie każdego bloku zajęć poświęconych danemu językowi programowania (C, C++) odbędzie się pisemne kolokwium weryfikujące w kompleksowy sposób wiedzę i umiejętności Studenta w zakresie zagadnień poruszanych na wykładzie i podczas ćwiczeń laboratoryjnych. Warunkiem zaliczenia modułu ćwiczeń laboratoryjnych jest uzyskanie pozytywnej oceny z każdego z nich. W przypadku uzyskania oceny negatywnej z danego kolokwium Studentowi przysługuje jeden termin poprawkowy tego kolokwium, pod koniec trwania zajęć semestru.
  • Testy weryfikujące stopień przygotowania Studenta do realizacji danego tematu laboratoryjnego oraz znajomość wzorcowych rozwiązań zadań z poprzedniego tematu 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).
  • Nieusprawiedliwiona nieobecność na danym kolokwium skutkuje otrzymaniem za nie 0%.

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). 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

  • Ć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ą.

Egzamin

  • Wiedza w zakresie zagadnień prezentowanych na wykładzie i podczas ćwiczeń laboratoryjnych będzie podlegać sprawdzeniu w formie pisemnego egzaminu.
  • Warunkiem dopuszczenia Studenta do egzaminu jest zaliczenie przez niego modułu ćwiczeń laboratoryjnych.
  • Nieobecność na egzaminie musi być usprawiedliwiona zwolnieniem lekarskim. Nieusprawiedliwiona nieobecność spowoduje otrzymanie przez Studenta oceny 2.0 z danego terminu egzaminu.
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:
  • Warunkiem uzyskania pozytywnej oceny końcowej jest uzyskanie pozytywnej oceny zarówno z modułu ćwiczeń laboratoryjnych, jak i z egzaminu.
  • Ocena końcowa (OK) z przedmiotu stanowi średnią ważoną oceny z modułu ćwiczeń laboratoryjnych (OL) oraz oceny z egzaminu (OE) obliczoną zgodnie ze wzorem OK = 0.6 x OL + 0.4 x OE, zaokrągloną do najbliższej oceny zgodnej z obowiązującym Regulaminem Studiów AGH.
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 :
  • znajomość podstaw obsługi komputera
  • znajomość języka Python na poziomie podstawowym
  • znajomość języka angielskiego na poziomie średniozaawansowanym
Zalecana literatura i pomoce naukowe:

C

  • Kernighan B.W., Ritchie D.M., “Język ANSI C”, WNT, 1994, 1997, 2001
  • Prata S., “Szkoła programowania – język C”, Helion, 2006

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

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