Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Podstawy programowania obiektowego
Tok studiów:
2018/2019
Kod:
JIS-1-305-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
3
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
dr inż. Gach Grzegorz (grzegorz.gach@motorolasolutions.com)
dr inż. Rachwał Bartłomiej (brachwal@agh.edu.pl)
Krótka charakterystyka modułu

Moduł wprowadza studenta w tematykę programowania obiektowego z wykorzystaniem języka C++.

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 zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku C . IS1A_W03, IS1A_W07, IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
M_W002 Student zna podstawowe cechy i elementy charakterystyczne dla obiektowych języków programowania. IS1A_W03, IS1A_W07, IS1A_W04, IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń
M_W004 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego. IS1A_W03, IS1A_W04, IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U002 Student potrafi napisać prosty program w języku C z wykorzystaniem paradygmatów programowania obiektowego. IS1A_U01, IS1A_U04, IS1A_U02, IS1A_U07 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. IS1A_K01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
M_K002 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Udział w dyskusji,
Wykonanie ćwiczeń laboratoryjnych
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 zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku C . + - + - - - - - - - -
M_W002 Student zna podstawowe cechy i elementy charakterystyczne dla obiektowych języków programowania. + - + - - - - - - - -
M_W004 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego. - - + - - - - - - - -
Umiejętności
M_U002 Student potrafi napisać prosty program w języku C z wykorzystaniem paradygmatów programowania obiektowego. + - + - - - - - - - -
Kompetencje społeczne
M_K001 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. - - + - - - - - - - -
M_K002 Student ma świadomość odpowiedzialności za własną pracę. - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
Tematyka

1. Podstawy programowania obiektowego – wstęp teoretyczny. Obiekty i klasy. Wstępne omówienie abstrakcji, enkapsulacji, dziedziczenia, polimorfizmu. Języki programowania obiektowego.
2. Język C++ : podstawowe cechy i zastosowania, kompilatory. Przykłady prostych programów. Składnia i elementy języka: typy danych, zmienne, instrukcje sterujące.
3. Operatory. Referencje. Funkcje. Dostęp do biblioteki C.
4. Przeładowanie nazw funkcji. Obiekty lokalne i globalne. Dynamiczna alokacja pamięci.
5. Struktury. Klasy. Składniki publiczne, chronione i prywatne. Statyczne pola klas.
6. Funkcje składowe (metody) klas. Wskaźnik „this”.
7. Konstruktory klas. Destruktory.
8. Funkcje i klasy zaprzyjaźnione. Klasy zagnieżdżone. Konwersje. Tablice obiektów.
9. Przestrzenie nazw. Dziedziczenie.
10. Funkcje wirtualne. Polimorfizm. Klasy abstrakcyjne.
11. Przeładowanie operatorów. Obsługa napisów w C++.

Ćwiczenia laboratoryjne:
Tematyka

1. Zapoznanie się z narzędziami dostępnymi w pracowni komputerowej
Efekty kształcenia
• student potrafi samodzielnie przygotować pliki z kodami źródłowymi prostego, opartego na przykładach z wykładu, programu w języku C++, z zastosowaniem ogólnie przyjętych konwencji,
• student umie kompilować go do postaci wykonywalnego i potrafi zinterpretować pojawiające się proste komunikaty o błędach i wykorzystać je do wprowadzenia poprawek w kodzie
2. Wykorzystanie podstawowych elementów z języka C++
Efekty kształcenia
• student umie zastosować elementy konstrukcji językowy znanych z języka C w programach w języku C++
• student potrafi wykorzystać procedury napisane w języku C w prostych programach napisanych w języku C++
• student potrafi dynamiczne zaalokować pamięć a potem porwanie ją zwolnić
3. Definiowane własnych typów danych (klas) w języku C++
Efekty kształcenia
• student potrafi definiować klasy z zestawem pól, konstruktorów, destruktora i innych metod (w tym przeładowanych), zgodnie z zadanymi wymaganiami, oraz umieszczać przygotowane deklaracje i definicje w plikach nagłówkowych i źródłowych,
• student potrafi wykorzystać samodzielnie zdefiniowane typy danych oraz podstawowe elementy biblioteczne (np. std::string, std::istream, std::ostream) do tworzenia nowych typów danych
• student potrafi prawidłowo zaplanować i zdefiniować dostęp (na tym etapie publiczny lub prywatny) do składników i metod klas
• student potrafi definiować i wykorzystywać klasy wewnętrzne oraz typy wyliczeniowe,
• student potrafi podać różnice między typem POD, strukturą oraz klasą
• student potrafi wykorzystać wskaźnik this do rozpoznawania różnych obiektów danej klasy
4. Definiowanie własnych wersji operatorów, przyjaźń oraz przestrzenie nazw
Efekty kształcenia
• student umie zdefiniować własne wersję operatorów dostępnych w języku C++
• student potrafi wykorzystać przyjaźń do efektywnego dostępu do elementów niepublicznych klas
• student umie korzystać z elementów znajdujących się w standardowej przestrzeni nazw std oraz definiować własne przestrzenie nazw
5. Dziedziczenie, klasy abstrakcyjne i polimorfizm
Efekty kształcenia
• student umie przygotować klasę tak aby mogła być użyta jako klasa bazowa w hierarchii dziedziczenia
• student umie zaproponować i zdefiniować własne hierarchię klas odpowiednią do rozwiązania prostego problemu
• student potrafi wykorzystać wiedzę o klasach abstrakcyjnych do budowania interfejsów
• student potrafi wykorzystać funkcje wirtualne do operacji na obiektach klas z wykorzystaniem wskaźników i referencji
6. Konwersje oraz mechanizm RTTI
Efekty kształcenia
• student umie wykorzystać konwersje standardowe oraz w ramach hierarchii klas do operacji na obiektach różnych typów
• student umie napisać własne operatory konwersji między typami niewbudowanymi danych
• student potrafi poruszać się w górę i w dół hierarchii dziedziczenia w celu wykorzystania ogólnych lub specyficznych elementów danych klas
• student umie napisać program wykrywający faktyczny typ danych pokazywany przez wskaźnik lub referencję podczas wykonania programu

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

Uzyskanie pozytywnej oceny końcowej wymaga uzyskania pozytywnej oceny z wszystkich form zajęć. Ocena końcowa jest oceną z laboratorium.

Wymagania wstępne i dodatkowe:

Wymagania wstępne:
- Posiadanie aktywnego konta na serwerze taurus i orion.
- Posiadanie aktywnego konta w systemie UPEL.
- Znajomość podstaw obsługi Linuxa (w szczególności polecenia konsolowe).
- Znajomość języka C.

Zalecana literatura i pomoce naukowe:

• Materiały z wykładu
• Grębosz J.,”Symfonia C++ Standard”, Edition2000 2006
• Eckel B., “Thinking in C++”, Helion 2002 / Prentice Hall 2000
• Stroustrup B., “Język C++, WNT 2002 / The C++ Programming Language”, Addison– Wesley 2000
• Josuttis N., “C++. Programowanie zorientowane obiektowo”, Helion 2003 / Object– Oriented Programming in C++, Wiley 2002
• Vandevoorde D., Josuttis N., “C++. Szablony”, Helion 2003 / “C++ Templates The Complete Guide”, Addison– Wesley 2002

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

B. Mindur and Ł. Jachymczyk, The Ethernet based protocol interface for compact data acquisition systems, Jour. Instr. 7, T10004 (2012).

Informacje dodatkowe:
  • Wszystkie efekty kształcenia podane w sylabusie przedmiotu podlegają weryfikacji i ocenie na zajęciach laboratoryjnych na podstawie przedstawionych rozwiązań zadań.
  • Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta na zajęciach:
  • Ćwiczenia laboratoryjne:
    - Nieobecność na nie więcej niż dwóch zajęciach wymaga od studenta samodzielnego (z możliwością wykorzystania godzin konsultacji) opanowania przerabianego na tych zajęciach materiału.
    - Nieusprawiedliwiona nieobecność na więcej niż dwóch zajęciach oznacza brak możliwości zaliczenia ćwiczeń laboratoryjnych.
    - Student ma prawo do odrobienia każdej usprawiedliwionej nieobecności w wyznaczonym przez prowadzącego terminie – do dwóch tygodni od zaistnienia tej nieobecności lecz nie później jak w ostatnim tygodniu trwania zajęć.
  • Wykład:
    - Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH.
  • Zasady zaliczania zajęć:
  • Ćwiczenia laboratoryjne:
    - Obecność na laboratorium jest obowiązkowa.
    - Każdą nieobecność należy usprawiedliwiać od razu na następnych zajęciach na których jest się obecnym, jednak nie później niż w ciągu 14 dni. Dodatkowo należy ustalić z prowadzącym zajęcia ewentualny sposób ich odrobienia.
    - Dopuszczalne są dwie nieobecności nieusprawiedliwione (efektywnie za 0 pkt. z danych zajęć).
    - Na każdych zajęciach należy być przygotowanym ze wszystkich poprzednich wykładów oraz ćwiczeń.
    - Każdy stworzony fragment kodu ma zostać opatrzony dokumentacją (w formacie podanym przez prowadzącego ćwiczenia).
    - Zadania należy wykonywać samodzielnie bez żadnych pomocy (wykłady, google, itp.).
    - Na każdych zajęciach kody źródłowe muszą znajdować się w takim podkatalogu dla którego prawa dostępu są tylko i wyłącznie dla właściciela.
    - Na końcu zajęć należy prowadzącemu oddać zadania (w określony przez niego sposób), które podlegają ocenianiu jak również potwierdzają obecność.
    - Programy nieskończone na zajęciach należy dokończyć we własnym zakresie. Nie należy ich przesyłać, ale mogą być wymagane na kolejnych spotkaniach jako punkt startowy innego ćwiczenia.
    - Każde zajęcia mają taką samą wagę (10 pkt.).
    - Zadania ocenianie są wg algorytmu:
    - – Warunkiem przystąpienia do oceniania programu jest jego poprawna kompilacja (bez błędów).
    - – Dokumentacja – 1 pkt.
    - – Poprawna kompilacja (bez ostrzeżeń) – 2 pkt.
    - – Poprawne wykonanie (odpowiednie wyjście, brak wycieków pamięci itp.) – 3 pkt.
    - – Ocena kodu (pod względem projektowym, zgodności z OOP, przejrzystości oraz sposobu implantacji) – 4 pkt.
    - – W sumie 10 pkt.
    - – Programy niezgodne z tematem/celem zadania, ale kompilujące się (i dające potencjalnie “poprawne” wyjście) będą oceniane na 0 pkt.
    - Na zajęciach można korzystać z dowolnego edytora tekstowego, jednak takiego który nie udziela podpowiedzi.
    - Pierwsze zajęcia nie są brane pod uwagę przy obliczaniu oceny końcowej z laboratorium.
    - 2-3 zajęcia będą zajęciami w parach (losowo wybieranych lub przez prowadzącego ćwiczenia) – zasady jak w każdym innym przypadku
    - Max. 4 razy w semestrze odbędą się zajęcia bez oceny – w ramach konsultacji/nauki z możliwością popełniania błędów bez ponoszenia konsekwencji
    - Jest jeden termin zaliczenia poprawkowego:
    - – Przysługuje każdemu studentowi.
    - – Student może poprawiać oceny z nie więcej niż dwóch zajęć (za maks. 20 pkt.), ocena z terminu poprawkowego liczona jest z uwzględnieniem poprawionych not z tych zajęć.
    - – Zajęcia do poprawy wybiera prowadzący z CAŁEGO zakresu materiału.
    - – Termin poprawy określony jest jako nie później niż w ostatnim tygodniu trwania zajęć. Termin ten może zostać wydłużony w przypadku niemożliwości wcześniejszego wyrównania zaległości wynikającego z usprawiedliwionych przyczyn.