Module also offered within study programmes:
General information:
Name:
Fundamental Concepts of Object-Oriented Programming
Course of study:
2018/2019
Code:
JIS-1-305-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
3
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Academic teachers:
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)
Module summary

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

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. IS1A_K01 Activity during classes,
Execution of laboratory classes
M_K002 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Participation in a discussion,
Execution of laboratory classes
Skills
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 Activity during classes,
Execution of laboratory classes
Knowledge
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 Activity during classes,
Examination,
Execution of laboratory classes
M_W002 Student zna podstawowe cechy i elementy charakterystyczne dla obiektowych języków programowania. IS1A_W03, IS1A_W07, IS1A_W04, IS1A_W02 Activity during classes,
Examination,
Execution of exercises
M_W004 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego. IS1A_W03, IS1A_W04, IS1A_W02 Activity during classes,
Examination,
Execution of laboratory classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
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ę. - - + - - - - - - - -
Skills
M_U002 Student potrafi napisać prosty program w języku C z wykorzystaniem paradygmatów programowania obiektowego. + - + - - - - - - - -
Knowledge
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. - - + - - - - - - - -
Module content
Lectures:
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++.

Laboratory classes:
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

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 150 h
Module ECTS credits 5 ECTS
Realization of independently performed tasks 45 h
Participation in lectures 30 h
Participation in laboratory classes 30 h
Preparation for classes 45 h
Additional information
Method of calculating the final grade:

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

Prerequisites and additional requirements:

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.

Recommended literature and teaching resources:

• 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

Scientific publications of module course instructors related to the topic of the module:

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

Additional information:
  • 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.