Module also offered within study programmes:
General information:
Name:
Methods and Techniques of Programming
Course of study:
2017/2018
Code:
ZIE-2-106-s
Faculty of:
Management
Study level:
Second-cycle studies
Specialty:
-
Field of study:
Information Technology and Econometrics
Semester:
1
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr inż. Pełech-Pilichowski Tomasz (tomek@agh.edu.pl)
Academic teachers:
dr Skalna Iwona (skalna@agh.edu.pl)
dr inż. Pełech-Pilichowski Tomasz (tomek@agh.edu.pl)
Duda Jan Tadeusz (jtduda@zarz.agh.edu.pl)
Potiopa Piotr (ppotiopa@zarz.agh.edu.pl)
Module summary

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 Ma świadomość odpowiedzialności autora programu za poprawność obliczeń i zagrożeń wynikających z błędów programu, a zatem konieczności starannego sprawdzania tej poprawności. IE2A_K03, IE2A_U07, IE2A_K04 Oral answer,
Execution of laboratory classes,
Involvement in teamwork
M_K002 Potrafi zorganizować pracę w zespole programistów i przyjmować różne role w takich zespołach. IE2A_K07, IE2A_K02 Execution of laboratory classes,
Involvement in teamwork
M_K003 Rozumie potrzebę stałego poszerzania wiedzy i umiejętności programistycznych, potrafi samodzielnie opanować umiejętność programowania z wykorzystaniem różnych języków programowania. Umie jasno komunikować swoją wiedzę programistyczną, m.in. w celu inspirowania i wspomagania procesu uczenia się innych osób. IE2A_K07, IE2A_K01 Activity during classes,
Oral answer,
Execution of laboratory classes
Skills
M_U001 Potrafi zaprojektować strukturę wieloplikowego oprogramowania, potrafi zbudować w językach C, Visual Basic i MATLAB niezawodny program obliczeniowy i ergonomiczne interfejsy operatorskie, z wprowadzaniem danych z klawiatury i z plików oraz przekazywaniem wyników na urządzenia zewnętrzne (monitor, pliki dyskowe). Umie posługiwać się biegle platformami programistycznymi dla sprawnego uruchamiania programów, umie diagnozować błędy wykonania programu oraz kontrolować poprawność obliczeń. Umie przygotować dokumentację użytkową oraz techniczną opracowanej aplikacji w wybranym języku. IE2A_U08, IE2A_U04, IE2A_U07, IE2A_U01 Activity during classes,
Oral answer,
Participation in a discussion,
Execution of laboratory classes
Knowledge
M_W001 Zna i rozumie dogłębnie zasady algorytmizacji zadań i cyfrowego kodowania algorytmów oraz danych. Zna zasady programowania strukturalnego, proceduralnego i obiektowego oraz budowania oprogramowania z wykorzystaniem różnych języków programowania. Zna zasady doboru języka programowania do specyfiki zadania programistycznego. Zna i rozumie dogłębnie zasady niezawodnego programowania komputerów. IE2A_W06, IE2A_W07, IE2A_W05, IE2A_W03 Activity during classes,
Oral answer,
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 Ma świadomość odpowiedzialności autora programu za poprawność obliczeń i zagrożeń wynikających z błędów programu, a zatem konieczności starannego sprawdzania tej poprawności. + + - + - - - - - - -
M_K002 Potrafi zorganizować pracę w zespole programistów i przyjmować różne role w takich zespołach. - - - + - - - - - - -
M_K003 Rozumie potrzebę stałego poszerzania wiedzy i umiejętności programistycznych, potrafi samodzielnie opanować umiejętność programowania z wykorzystaniem różnych języków programowania. Umie jasno komunikować swoją wiedzę programistyczną, m.in. w celu inspirowania i wspomagania procesu uczenia się innych osób. - + - + - - - - - - -
Skills
M_U001 Potrafi zaprojektować strukturę wieloplikowego oprogramowania, potrafi zbudować w językach C, Visual Basic i MATLAB niezawodny program obliczeniowy i ergonomiczne interfejsy operatorskie, z wprowadzaniem danych z klawiatury i z plików oraz przekazywaniem wyników na urządzenia zewnętrzne (monitor, pliki dyskowe). Umie posługiwać się biegle platformami programistycznymi dla sprawnego uruchamiania programów, umie diagnozować błędy wykonania programu oraz kontrolować poprawność obliczeń. Umie przygotować dokumentację użytkową oraz techniczną opracowanej aplikacji w wybranym języku. - + - + - - - - - - -
Knowledge
M_W001 Zna i rozumie dogłębnie zasady algorytmizacji zadań i cyfrowego kodowania algorytmów oraz danych. Zna zasady programowania strukturalnego, proceduralnego i obiektowego oraz budowania oprogramowania z wykorzystaniem różnych języków programowania. Zna zasady doboru języka programowania do specyfiki zadania programistycznego. Zna i rozumie dogłębnie zasady niezawodnego programowania komputerów. + + - - - - - - - - -
Module content
Lectures:

Ogólne zasady programowania: Zasady komputerowej realizacji algorytmów (dane i adresy, rejestry, rozkazy i tryb ich wykonywania, urządzenia zewnętrzne, rola systemu operacyjnego). Dane i ich komputerowe reprezentacje: pojęcie typu danych i statusu pamięci. Zasady implementacji algorytmów w językach programowania: podstawowe elementy i konstrukcje języków algorytmicznych (słowa kluczowe, operatory, nazwy, instrukcje, pętle, funkcje). Organizacja plików źródłowych i plików danych. Charakterystyka i klasyfikacja języków programowania: języki strukturalne, proceduralne, obiektowe. Edycja wersji źródłowej – rola stylu programowania, diagnostyka poprawności syntaktycznej, podstawowe zasady niezawodnego programowania. Zasady testowania oprogramowania.
Język C jako przykład języka strukturalnego, proceduralnego: Zasady programowania w języku C: struktura programu; struktura modułu (deklaracje, bloki, instrukcje, zasięg globalności nazw, komentarze). Typy standardowe i struktury danych. Podstawowe operacje preprocesora (rola plików nagłówkowych, stałe symboliczne). Obiekty języka C: stałe, zmienne proste, tablice, łańcuchy znaków, struktury danych, funkcje. Zmienne wskaźnikowe, operacje na wskaźnikach, wskaźniki a tablice. Dynamiczna alokacja pamięci. Konstrukcje algorytmów w języku C i ich porównanie z konstrukcjami w innych językach: wyrażenia arytmetyczne, logiczne, kodowanie bitowe i operatory bitowe, instrukcje sterujące, pętle – zalecenia programistyczne dotyczące niezawodności programów komputerowych. Funkcje: celowość i zasady wydzielania funkcji, przekazywanie danych do funkcji i wyników funkcji,. Makra, funkcje a makra – zalety i wady wykorzystywania makr, przykłady. Operacje wejścia i wyjścia: funkcje czytania znaków i łańcuchów znakowych, specyfikacje formatu, zapis i odczyt danych z plików binarnych i znakowych.
Strukturyzacja danych: tablice, struktury, listy – zasady wykorzystania. Zaawansowane operacje preprocesora, strukturyzacja kodu źródłowego, kompilacja warunkowa.

Auditorium classes:

1. Sprawdzanie wiedzy nt. zasad implementacji algorytmów, konstrukcji algorytmicznych i zasad testowania oprogramowania.
2. Sprawdzenie wiedzy nt. składni języka C i jej porównanie z językami MATLAB i Visual Basic.
3. Ćwiczenie umiejętności budowania programów w języku C, z wykorzystaniem typów standardowych, operacji wskaźnikowych, tablic i struktur danych, kodowania bitowego oraz dynamicznej alokacji pamięci, z akcentowaniem praktyk i zasad niezawodnego programowania.

Project classes:

1. Sprawdzenie umiejętności posługiwania się narzędziami programowania (edycja kodu, kompilacja, debugging) zapoznanie z zasadami zarządzania kodem źródłowym.
2. Ćwiczenie umiejętności strukturyzacji kodu i danych, kodowanie procedur obliczeniowych z oraz zapisu i odczytu danych z plików
3. Kodowanie procedur wprowadzania danych z klawiatury i prezentacji wyników obliczeń
4. Porównanie analogicznych programów w języku C i MATLAB – wskazanie różnic i podobieństw, wskazanie możliwości wykorzystania języka MATLAB do kontroli poprawności programu w języku C
5. Sprawdzenie umiejętności samodzielnej pracy w zespołach programistów (3 zadania dla zespołu 3 osobowego z indywidualną rolą programisty głównego, pomocniczego i archiwisty/bibliotekarza dla każdego studenta).

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 101 h
Module ECTS credits 4 ECTS
Participation in lectures 14 h
Participation in auditorium classes 14 h
Participation in project classes 14 h
Contact hours 3 h
Completion of a project 42 h
Preparation for classes 14 h
Additional information
Method of calculating the final grade:

Ocena końcowa wystawiana jest przez prowadzącego wykład jako średnia z ćwiczeń z wagą 0.4 (uśredniona ocena z odpowiedzi ustnych), z laboratorium z wagą 0.4 (na podstawie sprawdzianów umiejętności praktycznego programowania i znajomości kodu opracowanego zespołowo w ramach prac własnych studentów) oraz aktywności na wykładach z wagą 0.2, z możliwością podniesienia (maks. o 1.0) na podstawie dodatkowego kolokwium ustnego.

Prerequisites and additional requirements:

Znajomość podstaw informatyki i podstaw algorytmizacji zadań. Znajomość matematyki w zakresie studiów I. stopnia, umiejętność logicznego i kreatywnego myślenia.

Recommended literature and teaching resources:

Literatura
- podstawowa: N. Wirth: Algorytmy+struktury danych = programy. WNT, Warszawa 2002B. W.Kernighan, D.M.Ritchie, Język C, WNT Warszawa 1992; K.A.Barklay, ANSI C – Problem Solving an Programming, Printice Hall, 1990
- pomocnicza: D. van Tessel: Praktyka programowania. WNT Warszawa, 1989; W.Duch: Fascynujący świat komputerów, Wydawn. Nakom, Poznań 1997,
Przydatne liniki internetowe
http://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania)
http://pl.wikipedia.org/wiki/C%2B%2B

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

Duda J.T., Pełech-Pilichowski T.: Enhancements of moving trend based filters aimed at time series prediction. Advances in systems science: proceedings of the International Conference on Systems Science 2013 (ICSS 2013) / eds. Jerzy Świątek, [et al.], Advances in Intelligent Systems and Computing. Springer International Publishing, 2014, s. 747–756

Duda J.T., Pełech-Pilichowski T.: Wykorzystanie trendu pełzającego do analizy i prognozowania szeregów finansowych. W: Uwarunkowania, metody i strategie rozwoju przedsiębiorstw, red. nauk. Howaniec H., Madyda A., Waszkielewicz W., Wydawnictwo Naukowe ATH, 2013, s. 79–101

Pełech-Pilichowski T., Duda J.T.: A two-level detector of short-term unique changes in time series based on a similarity method. Expert Systems 2015 vol. 32 no. 4, s. 555–561

Pełech-Pilichowski T., Duda J.T.: Low-frequency signal reconstruction and abrupt change detection in non-stationary time series by enhanced moving trend based filters. Advances in ICT for business, industry and public sector, eds. Mach-Król M., Olszak C.M., Pełech-Pilichowski T. (Studies in Computational Intelligence, vol. 579), Springer, 2015, s. 111–125

Additional information:

Brak