Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Języki programowania obiektowego
Tok studiów:
2014/2015
Kod:
IET-1-507-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Elektronika i Telekomunikacja
Semestr:
5
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
prof. zw. dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
Osoby prowadzące:
prof. zw. dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
dr inż. Rydosz Artur (rydosz@agh.edu.pl)
Smolarek Łukasz (smolarek@agh.edu.pl)
Krótka charakterystyka modułu

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Student posiada wiedzę w zakresie sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, wyrażeń i funkcji w językach C/C++. ET1A_W08, ET1A_W07 Kolokwium
M_W002 Student posiada wiedzę dotyczącą klas i obiektów, mechanizmów dziedziczenia, polimorfizmu, przeciążania operatorów, tworzenia funkcji wirtualnych oraz rzutowania typów, tworzenia funkcji i klas szablonowych, dysponuje wiedzą z zakresu elementów biblioteki STL, jak również zasad tworzenia i testowania oprogramowania. ET1A_W08, ET1A_W07 Kolokwium
M_W003 Student posiada wiedzę dotyczącą podstaw skryptowych języków programowania obiektowego, dostępnych bibliotek oraz ich zastosowań. ET1A_W08, ET1A_W07 Kolokwium
Umiejętności
M_U001 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania obiektowego, potrafi korzystać z zasobów biblioteki STL oraz funkcji i klas szablonowych do tworzenia oprogramowania. ET1A_U24 Kolokwium
M_U002 Student potrafi konstruować oprogramowanie zgodnie z określonymi standardami programistycznymi, tworzyć proste graficzne interfejsy użytkownika oraz tworzyć odpowiednią dokumentację projektu. ET1A_U24 Kolokwium
Kompetencje społeczne
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. ET1A_K01 Studium przypadków
M_K002 Student ma świadomość odpowiedzialności za pracę własną oraz gotowość podporządkowania się zasadom pracy w zespole i ponoszenia odpowiedzialności za wspólnie realizowane zadania. ET1A_K04 Zaangażowanie w pracę zespołu
M_K003 Student potrafi wykorzystać opanowane technologie w przedsiębiorstwach oraz projektach komercyjnych. ET1A_K05 Udział w dyskusji
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Student posiada wiedzę w zakresie sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, wyrażeń i funkcji w językach C/C++. + - + - - - - - - - -
M_W002 Student posiada wiedzę dotyczącą klas i obiektów, mechanizmów dziedziczenia, polimorfizmu, przeciążania operatorów, tworzenia funkcji wirtualnych oraz rzutowania typów, tworzenia funkcji i klas szablonowych, dysponuje wiedzą z zakresu elementów biblioteki STL, jak również zasad tworzenia i testowania oprogramowania. + - + - - - - - - - -
M_W003 Student posiada wiedzę dotyczącą podstaw skryptowych języków programowania obiektowego, dostępnych bibliotek oraz ich zastosowań. + - + - - - - - - - -
Umiejętności
M_U001 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania obiektowego, potrafi korzystać z zasobów biblioteki STL oraz funkcji i klas szablonowych do tworzenia oprogramowania. + - + - - - - - - - -
M_U002 Student potrafi konstruować oprogramowanie zgodnie z określonymi standardami programistycznymi, tworzyć proste graficzne interfejsy użytkownika oraz tworzyć odpowiednią dokumentację projektu. + - + - - - - - - - -
Kompetencje społeczne
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. + - + - - - - - - - -
M_K002 Student ma świadomość odpowiedzialności za pracę własną oraz gotowość podporządkowania się zasadom pracy w zespole i ponoszenia odpowiedzialności za wspólnie realizowane zadania. + - + - - - - - - - -
M_K003 Student potrafi wykorzystać opanowane technologie w przedsiębiorstwach oraz projektach komercyjnych. + - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:

Zajęcia w ramach modułu prowadzone są w postaci wykładu (30 godzin) oraz ćwiczeń laboratoryjnych (30 godzin).

Wykłady

1. Podstawy – Wprowadzenie do programowania obiektowego w C++ – 2 godziny

Wstęp do programowania; Przegląd języków programowania; Etapy budowy oprogramowania; Elementy Unified Modeling Language (UML): diagramy przypadków użycia, aktywności; Podstawy reprezentacji danych: stałe i zmienne, podstawowe typy danych i zasady ich używania (int, char, long, double); Podstawy C++: instrukcje if oraz for, podstawowe operatory arytmetyczne oraz logiczne, elementarne funkcje, przydatne obiekty (cout, cin, vector<>, string) wraz z przykładami; Przykład użycia podstawowych konstrukcji języka do implementacji prostego przykładu.

2. Podstawowe instrukcje, operatory, wyrażenia i funkcje – 6 godzin

Podstawowe instrukcje C/C++: warunkowa (if, switch-case), pętle (while, for, do-while), throw-try-catch; Przegląd wszystkich grup operatorów, prawa hierarchii oraz łączności: arytmetyczne, logiczne, bitowe, warunkowe, inne; Wskaźniki: rola, składania, semantyka; Tablice; Struktury; Referencje; Budowa wyrażeń; Funkcje: rola, struktura, przekazywanie parametrów do funkcji, zwracanie wartości z funkcji; Organizacja projektu C/C++: preprocesing, kompilacja, konsolidacja, debuggowanie; Przykłady w rzeczywistych aplikacjach;

3. Programowanie obiektowe – 8 godzin

Koncepcja obiektu i klasy: zasadnicze paradygmaty programowania obiektowego (encapsulation, polymorphism, code reusability, code safety), relacje has-a, is-a, knows; Anatomia klasy: składowe klasy, wskaźnik this, ochrona składowych, grupa metod konstrukcyjnych, grupa metod dostępu do danych, operacje input/output, static members, member pointers; Typ enumerowany; Zasady projektowania klas na przykładach; Przeciążąnie operatorów: podstawowe konstrukcje, przykłady; Dziedziczenie i polimorfizm: podstawowe pojęcia, funkcje wirtualne, projektowanie hierarchii klas, wirtualne klasy bazowe; Rzutowanie typów; Klasy specjalne: funktory, friends; Obsługa wyjątków; Przestrzenie nazw; Analiza istniejących rozwiązań;

4. Szablony C++ – 4 godziny

Idea meta-programowania, wstęp od szablonów; Funkcje szablonowe: deklaracja parametrów; Szablony klas: deklaracja parametrów szablonowych, sposoby łączenia, template-template parameters, szablony typowe, szablony nietypowe, funkcje wirtualne, szablonowe składowe klasy (template members), parametry domniemane (default), szablonowe hierarchie klas. Instancjacja klas szablonowych; Proces dedukcji argumentów szablonowych; Specjalne klasy szablonowe: traits oraz policy, funkcje określania typu, smart pointers, funktory oraz funcje typu callback; Metodyka projektowania konstrukcji szablonowych; Przykłady w rzeczywistych aplikacjach;

5. Biblioteka standardowa STL – 6 godzin

Wprowadzenie do STL: przykład użycia podstawowych konstrukcji (vector, string), podział biblioteki (kontenery, iteratory, algorytmy); Podstawowe kontenery, ich właściwości oraz użycie: vector, list, set oraz multiset, maps oraz multimaps; Iteratory: kategorie iteratorów (input, output, forward, bidirectional, random access), adaptery iteratorów; Obiekty funkcyjne STL: budowa oraz używanie predykatów; Algortymy STL: niemodyfikujące (liczenie elementów, minimum/maksimum, przeszukiwanie kontenerów, porównywanie zakresów), modyfikujące (kopiowanie, transformacje, zamiana, przypisywanie wartości elementów), usuwające składowe kontenerów, mutujące (odwracanie kolejności, rotacje, permutacje), sortowanie, algorytmy numeryczne; Kontenery specjalne: kolejka, stos; Operacje input/output: podstawowe klasy I/O, przeciążenia operatorów stream, manipulatory, formatowanie, dostęp do plików, strumienie ciągów znakowych;

6. Elementy projektowania oprogramowania. Konstrukcje zaawansowane – 2 godziny

Rozszerzenie wiadomości o UML; Projektowanie oprogramowania: etapy konstrukcyjne, dokumentacja; Standardy programistyczne; Konstrukcja bibliotek; Testowanie oprogramowania: rodzaje błędów, konstruowanie testów, programowanie przez kontrakt, sztuka debuggowania;

7. Inne języki obiektowe – 2 godziny

Wstęp do języka Python: specyfika języków skryptowych, podstawowe konstrukcje, tryby używania języka, różnice w stosunku do C++, programowanie obiektowe, wstęp do bibliotek Pythona; Przykłady w rzeczywistych aplikacjach;

Ćwiczenia laboratoryjne:

Ćwiczenia laboratoryjne

1. Opracowanie oraz implementacja problemu reprezentacji oraz obliczania pierwiastków trójmianu kwadratowego – 4 godziny – Praca w środowisku Linux, dokumentacja wykonywanego zadania, realizacja programowa, metody kompilacji, konsolidacji oraz debuggowania, metody radzenia sobie z błędami.
2. Opracowanie oraz implementacja kalkulatora walut – 4 godziny – Praca w środowisku Visual C++, utworzenie aplikacji do poszukiwania kursów walut w danych z banku, realizacja połączenia internetowego, projekt interfejsu użytkownika (GUI), wykonanie w MFC i/lub FLTK.
3. Opracowanie oraz implementacja dziennika zajęć – 4 godziny – Implementacja prostej bazy danych z funkcjami dodawania/usuwania/sortowania rekordów; Umiejętność obsługi operacji wejścia/wyjścia, praca z plikami.
4. Opracowanie oraz implementacja klasy liczb zespolonych – 4 godziny – Implementacja klasy liczb zespolonych, przeciążanie operatorów, operacje przesyłania danych do i z plików, operatory konwersji typów. Implementacja metod programowania “przez kontrakt”.
5. Opracowanie oraz implementacja klasy do reprezentacji macierzy, wzorzec handle-body, wzorzec proxy – 4 godziny – Implementacja określonych wzorców projektowych na przykładzie macierzy. Przykłady wykorzystania w aplikacjach obliczeniowych.
6. Opracowanie oraz implementacja aplikacji wykorzystującej grafikę komputerową z OpenGL – 4 godziny – zapoznanie z biblioteką graficzną OpenGL, projekt prostej aplikacji w oparciu o zasoby biblioteki graficznej, praca z hierarchiami klas oraz z funkcjami wirtualnymi. Przykłady wykorzystania w aplikacjach graficznych.
7. Opracowanie oraz implementacja prostej gry komputerowej – 4 godziny – Stworzenie aplikacji zgodnie z prawidłowymi wzorcami projektowymi, modelowanie problemu za pomocą języka UML, dokumentacja projektu.
8. Projekt własny – 2 godziny – Projekt i implementacja własnej aplikacji napisanej w języku Python; Wykorzystanie bibliotek Python, zarządzanie projektem oraz grupą projektową.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 125 godz
Punkty ECTS za moduł 5 ECTS
Udział w wykładach 28 godz
Samodzielne studiowanie tematyki zajęć 49 godz
Udział w ćwiczeniach laboratoryjnych 28 godz
Przygotowanie do zajęć 20 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Warunkiem uzyskania pozytywnej oceny końcowej jest uzyskanie pozytywnej oceny z laboratorium oraz kolokwium zaliczeniowego z wykładu.
2. Na wykładach możliwe jest otrzymanie oceny za przedstawienie prezentacji wybranego tematu.
3. Obliczamy średnią arytmetyczną z ocen uzyskanych we wszystkich terminach (terminy poprawkowe z wagą 2).
4. Wyznaczmy ocenę końcową OK na podstawie algorytmu:
if av>4.75 then OK:=5.0 else
if av>4.25 then OK:=4.5 else
if av>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else
if sr>=3.0 then OK:=3.0

Wymagania wstępne i dodatkowe:

Podstawy metodyki i technik programowania

Zalecana literatura i pomoce naukowe:

1. Stroustrup B. Programming. Principles and Practice Using C++. Addison Wesley 2009 (tł. polskie: Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion).
2. Stroustrup B. The C++ Programming Language, 2000 (tł. polskie: Język C++, WNT).
3. Vandervoorde D., Josuttis N.M. C++ Templates. Addison Wesley, 2003 (tł. polskie: C++. Szablony. Vademecum profesjonalisty, Helion).
4. Josuttis N.M. The C++ Standard Library. Addison Wesley, 1999 (tł. polskie: C++. Biblioteka standardowa. Podręcznik programisty, Helion).
5. Lippman S. Essential C++. Addison Wesley, 2005 (tł. polskie: Istota języka C++. Zwięzły opis, WNT).
6. Summerfield M. Programming in Python 3. Addison Wesley, 2009 (tł. polskie: Python 3. Kompletne wprowadzenie do programowania, Helion).

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak