Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Object-Oriented Programming Language
Tok studiów:
2019/2020
Kod:
IETE-1-514-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Electronics and Telecommunications
Semestr:
5
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Angielski
Forma studiów:
Stacjonarne
Strona www:
 
Prowadzący moduł:
prof. zw. dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

The main goal is teaching of modern methods and techniques of object-oriented and component-oriented software design and programming. The major programming languages are C++ and Python.

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 Student has knowledge about basics of the scripting object programming languages, available libraries and their application. ETE1A_W16 Wynik testu zaliczeniowego
M_W002 Student has knowledge about the data representation methods, use of the basic instructions, operators, expressions and functions in C/C++ programming language. ETE1A_W14 Wynik testu zaliczeniowego
M_W003 Student has knowledge about classes and objects, inheritance, polymorphism and operator overloading methods, template functions and classes, elements of the STL library, rules of the software development and testing. ETE1A_W14 Wynik testu zaliczeniowego
Umiejętności: potrafi
M_U001 Student is able to design and implement specified algorithm using basic methods of the object programming technique; Student is able to use STL library resources, template functions and classes in software development process. ETE1A_U15 Wynik testu zaliczeniowego
M_U002 Student is able to construct software in accordance with specified programming standards, creating simple graphic user interfaces and documentation of the software project. ETE1A_U12 Wynik testu zaliczeniowego
Kompetencje społeczne: jest gotów do
M_K001 Student is aware of the responsibility for its work, is ready to obey the rules of team work and be liable for common tasks realization. ETE1A_K04 Zaangażowanie w pracę zespołu,
Wynik testu zaliczeniowego
M_K002 Student is aware of the need for continuous skills development. ETE1A_K01 Wynik testu zaliczeniowego
M_K003 Student is able to use of known technologies in companies and commercial projects. ETE1A_K04 Wynik testu zaliczeniowego
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
52 24 0 14 14 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 Student has knowledge about basics of the scripting object programming languages, available libraries and their application. + - + - - - - - - - -
M_W002 Student has knowledge about the data representation methods, use of the basic instructions, operators, expressions and functions in C/C++ programming language. + - + + - - - - - - -
M_W003 Student has knowledge about classes and objects, inheritance, polymorphism and operator overloading methods, template functions and classes, elements of the STL library, rules of the software development and testing. + - + - - - - - - - -
Umiejętności
M_U001 Student is able to design and implement specified algorithm using basic methods of the object programming technique; Student is able to use STL library resources, template functions and classes in software development process. + - + - - - - - - - -
M_U002 Student is able to construct software in accordance with specified programming standards, creating simple graphic user interfaces and documentation of the software project. + - + - - - - - - - -
Kompetencje społeczne
M_K001 Student is aware of the responsibility for its work, is ready to obey the rules of team work and be liable for common tasks realization. + - + - - - - - - - -
M_K002 Student is aware of the need for continuous skills development. + - + - - - - - - - -
M_K003 Student is able to use of known technologies in companies and commercial projects. + - + - - - - - - - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 100 godz
Punkty ECTS za moduł 4 ECTS
Udział w zajęciach dydaktycznych/praktyka 52 godz
Przygotowanie do zajęć 22 godz
Samodzielne studiowanie tematyki zajęć 26 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 (24h):

Classes within the module consist of lectures (30 hours) and laboratories (30 hours).

Lectures

1. Basics – Introduction to object programming in C++ – 2 hours

Introduction to programming; Review of object programming languages; Stages of software development; Elements of Unified Modeling Language (UML): use case and activity diagrams; Basics of data representation: constants and variables, basic types of data and rules of use (int, char, long, double); Basics of the C++: instructions if and for, basic arithmetic and logic operators, elementary functions, useful objects (cout, cin, vector<>, string) with examples; Example of using basic language constructions for implementation of simple program.

2. Basic instructions, operators, expressions and functions – 6 hours

Basic instructions of the C/C++: conditional (if, switch-case), loops (while, for, do-while), throw-try-catch; Review of all groups of operators, hierarchy and associativity law: arithmetic, logic, bit, conditional, others; Pointers: role, syntax, semantics; Arrays; Structures; References; Creating expressions; Functions: role, structure, passing arguments to functions, returns values from functions; Project organization in C/C++: preprocessing, compilation, consolidation, debugging; Examples with real applications;

3. Object programming – 8 hours

Class and object conception: essential paradigms of object programming (encapsulation, polymorphism, code reusability, code safety), ‘knows’, ‘has-a’ and ‘is-a’ relations; Class anatomy: class components, ‘this’ pointer, component protection, group of construction methods, data access methods, input/output operations, static members, member pointers; Enumerated type; Class design rules with examples; Operators overloading: basic constructions, examples; Inheritance and polymorphism: basic concepts, virtual functions, class hierarchy design, virtual base classes; Types conversions; Special classes: functors, friends; Exceptions handling; Namespaces; analysis of existing examples.

4. C++ Templates – 4 hours

Concepts of meta-programming, introduction to templates; Template functions: parameters declaration; Template classes: template parameters declaration, template-template parameters, typical templates, unusual templates, virtual functions, template members, default parameters, template class hierarchy. Instantiation of the template classes; Template arguments deduction process; Special template classes: traits and policy, functions for type specification, smart pointers, functors and callback functions; Template constructions design methodology; Examples with real applications.

5. Standard library STL – 6 hours

Introduction to STL: examples of using basic constructions (vector, string), library resources (containers, iterators, algorithms); Basic containers – properties and usage: vector, list, set and multiset, maps and multimaps; Iterators: iterators categories (input, output, forward, bidirectional, random access), iterators adapters; Functional objects of the STL: construction and using of predictors; STL algorithms: non-modifying (elements counting, minimum/maximum, containers searching, range comparing), modifying (copying, transformation, conversion, assigning values to elements), removing containers components, mutating (reversing, rotating, permuting), sorting, numeric algorithms; Special containers: queue, stack; Input/Output operations: basic I/O classes, stream operators overloading, manipulators, formatting, access to files, data streams.

6. Elements of the software design. Advanced constructions – 2 hours
Advanced UML; Software design: stages of development, documentation; Programming standards; Library construction; Software testing: types of errors, tests constructing, programming by contract, methods of code profiling and debugging.

7. Others object languages – 2hours

Introduction to Python: scripting languages specification, basic constructions, modes of language usage, differences related to C++, object programming, introduction to Python libraries; Examples with real applications.

Ćwiczenia laboratoryjne (14h):

Laboratories

1. Elaboration and implementation of quadratic trinomial roots computing and representation problem – 4 hours – Work in Linux environment, documentation of the project, software implementation, compilation, consolidation and debugging methods, methods of errors removing.
2. Elaboration and implementation of currency calculator – 4 hours –Work in Visual C++ environment, exploration of exchange rate application, internet connection implementation, graphic user interface project (GUI), using of MFC and/or FLTK.
3. Elaboration and implementation of class register – 4 hours – Implementation of simple data base with adding/removing/sorting functions; input/output and files operations.
4. Elaboration and implementation of complex numbers class – 4 hours – Implementations of the complex numbers class, operators overloading, streaming operations with files, type conversion operators. Design with programming-by-contract methodology.
5. Elaboration and implementation of matrix representation class, handle-body and proxy patterns – 4 hours – Implementation of specified project patterns in matrix class application. Examples of using in numerical algebra applications.
6. Elaboration and implementation of computer graphic application using OpenGL – 4 hours – Introduction to OpenGL, design of simple application using resources of the library, work with class hierarchy and virtual functions. Examples of using in graphic applications.
7. Elaboration and implementation of a simple computer game – 4 hours – Design of application in accordance with programming patterns rules, UML problem modelling, documentation of the project.
8. Student’s own project – 2 hours – Design and implementation of the own application in Python; Using of the Python libraries, project management and project group management.

Ćwiczenia projektowe (14h):
-
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ą.
  • Ćwiczenia projektowe: Studenci wykonują zadany projekt samodzielnie, bez większej ingerencji prowadzącego. Ma to wykształcić poczucie odpowiedzialności za pracę w grupie oraz odpowiedzialności za podejmowane decyzje.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

The active attendance to the lectures is necessary.
The grades from laboratory tests are averaged and constitute the final lab grade.
The final grade is given based on the lecture and lab grades.

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.
  • Ćwiczenia projektowe:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują prace praktyczne mające na celu uzyskanie kompetencji zakładanych przez syllabus. Ocenie podlega sposób wykonania projektu oraz efekt końcowy.
Sposób obliczania oceny końcowej:

The following algorithm is used:

float av_grade {};
// … // read average grade
float fin_grade {}; // out grade

if( av_grade >= 4.75 ) fin_grade = 5.0; else
if( av_grade >= 4.25 ) fin_grade = 4.5; else
if( av_grade >= 3.75 ) fin_grade = 4.0; else
if( av_grade >= 3.25 ) fin_grade = 3.5; else
if( av_grade >= 3.00 ) fin_grade = 3.0; else
throw “Serious ERROR !! Exiting …”;

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

On your own.

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

Basic programming skills.

Zalecana literatura i pomoce naukowe:

1. Stroustrup B. Programming. Principles and Practice Using C++. Addison Wesley 2014 .
2. Stroustrup B. The C++ Programming Language, 2013.
3. Vandevoorde D., Josuttis N.M. C++ Templates. Addison Wesley, 2017.
4. Josuttis N.M. The C++ Standard Library. Addison Wesley, 2012.
5. Lippman S. Essential C++. Addison Wesley, 2012.
6. Summerfield M. Programming in Python 3. Addison Wesley, 2009.

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

Cyganek B.: Object Detection and Recognition in Digital Images: Theory and Practice. Wiley, 2013

Informacje dodatkowe:

Brak