Module also offered within study programmes:
General information:
Name:
Programming Advanced Techniques
Course of study:
2018/2019
Code:
JIS-2-006-GK-s
Faculty of:
Physics and Applied Computer Science
Study level:
Second-cycle studies
Specialty:
Grafika komputerowa i przetwarzanie obrazów
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polski i Angielski
Responsible teacher:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Academic teachers:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Module summary

Programming Advanced Techniques addresses modern programming concepts, shows how to efficiently use meta-programming, design patterns and unusual programming techniques and aspects.

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_K004 Student potrafi samodzielnie i w zespole pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania IS2A_K02, IS2A_K01 Activity during classes,
Execution of a project,
Execution of laboratory classes
M_K005 Student ma świadomość odpowiedzialności za własną pracę. IS2A_K02, IS2A_K01 Activity during classes,
Execution of a project,
Execution of laboratory classes
Skills
M_U004 Student potrafi napisać program z wykorzystaniem paradygmatów programowania obiektowego połączonych z paradygmatami programowania uogólnionego. IS2A_U05, IS2A_U01 Activity during classes,
Scientific paper,
Execution of a project,
Execution of laboratory classes
M_U005 Student potrafi napisać program działający i komunikujący się bez udziału użytkownika IS2A_U05, IS2A_U01 Activity during classes,
Execution of a project,
Execution of laboratory classes
M_U006 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym IS2A_U05, IS2A_U01 Activity during classes,
Execution of a project,
Execution of laboratory classes
Knowledge
M_W008 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych i uogólnionych języków programowania. IS2A_W05 Activity during classes,
Scientific paper,
Execution of a project,
Execution of laboratory classes
M_W009 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego poziomu IS2A_W05 Activity during classes,
Scientific paper,
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_K004 Student potrafi samodzielnie i w zespole pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania - - + + - - - - - - -
M_K005 Student ma świadomość odpowiedzialności za własną pracę. - - + + - - - - - - -
Skills
M_U004 Student potrafi napisać program z wykorzystaniem paradygmatów programowania obiektowego połączonych z paradygmatami programowania uogólnionego. - - + + - - - - - - -
M_U005 Student potrafi napisać program działający i komunikujący się bez udziału użytkownika - - + - - - - - - - -
M_U006 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym - - - + - + - - - - -
Knowledge
M_W008 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych i uogólnionych języków programowania. - - + + - + - - - - -
M_W009 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego poziomu - - + + - + - - - - -
Module content
Laboratory classes:
Main topics

Students will design, develop and verify short programs which show main aspects of the topics given during the seminars.

Skills:
• student is able to present characteristic traits of the object oriented and generic programming languages
• student is able to design and implement programs using features of the above mentioned programming languages
• student is able to use complex library components (belonging to variety of libraries) in the design and implementation of the programs

Project classes:
Mein topics

Students will accomplish the projects, which corresponds to the topic presented during their seminar. Starting point for the project is the goals and hints mainly from the customer point of view. The project has to utilize the object oriented, generic programming design patterns and library resources in a way which as optimal as possible carries out the assigned tasks. The project must be formed in as the problem to be solved and the solution, presented separately.

Seminar classes:
Main topics

1. Templates: functions and classes
2. Standard Template Library (STL)
3. Containers adaptors
4. C++11, C++14, C++17, C++20
5. Design patterns
6. Efficient memory management
7. Threads and their synchronization and communication
8. Serialization
9. Interprocess communication
10. Low level network programming
11. Designing of the Win/Linux services
12. Static and dynamic libraries design, implementation and usage
13. Interfacing different programming languages (e.g. Python <→ C, C++)
14. Program optimization techniques (manual and by compiler)

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 160 h
Module ECTS credits 6 ECTS
Participation in laboratory classes 20 h
Participation in project classes 20 h
Participation in seminar classes 20 h
Completion of a project 30 h
Preparation for classes 40 h
Realization of independently performed tasks 30 h
Additional information
Method of calculating the final grade:

Final grade (OK) is calculated using weighted average of the grades from seminar (S) of the lab (L), the project (P) and exam (E), with a given percentage for each one.
OK = 0.3*S + 0.2*L + 0.2*P + 0.3*E

It is mandatory to get positive grade from all forms of classes.

Prerequisites and additional requirements:

Good knowledge of C, C++, Python, Java programming languages.

Recommended literature and teaching resources:

• Seminars
• 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
• http://en.cppreference.com/w/cpp
• http://www.boost.org/

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

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

Additional information:
  • No all of the topic proposed for the seminar must be accomplished. On the other hand, interesting topics not included in the list could be presented.
  • Detailed information about the course is available on my website:
    http://taurus.ftj.agh.edu.pl/~mindur/adv_eng