Module also offered within study programmes:
General information:
Name:
Procedural Programming
Course of study:
2018/2019
Code:
JIS-1-205-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
2
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr hab. inż. Gawroński Przemysław (gawron@newton.ftj.agh.edu.pl)
Academic teachers:
dr inż. Kawecka-Magiera Barbara (Barbara.Kawecka@fis.agh.edu.pl)
dr hab. inż. Gawroński Przemysław (gawron@newton.ftj.agh.edu.pl)
dr inż. Krupińska Grażyna (grazyna@fis.agh.edu.pl)
Module summary

Praktyczne przedstawienie proceduralnego paradygmatu tworzenia oprogramowania z wykorzystaniem języka C, z uwzględnieniem dynamicznego i statycznego modelu zarządzania pamięcią.

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_K002 Student potrafi w sposób przejrzysty zaprezentować rozwiązanie problemu programistycznego IS1A_K01 Activity during classes,
Participation in a discussion,
Execution of laboratory classes
Skills
M_U003 Student potrafi tworzyć zmienne proste i złożone statycznie oraz dynamicznie. IS1A_U04, IS1A_U06 Activity during classes,
Execution of laboratory classes,
Test
M_U004 Student potrafi rozwiązać prosty problem programistyczny korzystając z instrukcji języka C oraz zdefiniowanych przez siebie funkcji. IS1A_U04, IS1A_U06 Activity during classes,
Test,
Execution of laboratory classes
Knowledge
M_W003 Student zna i rozumie zasady tworzenia oprogramowania z wykorzystaniem proceduralnego języka C. IS1A_W03, IS1A_W02 Participation in a discussion,
Activity during classes
M_W004 Student zna zasady zarządzania pamięcią w języku C. IS1A_W03, IS1A_W02 Activity during classes,
Participation in a discussion
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_K002 Student potrafi w sposób przejrzysty zaprezentować rozwiązanie problemu programistycznego - - + - - - - - - - -
Skills
M_U003 Student potrafi tworzyć zmienne proste i złożone statycznie oraz dynamicznie. + - + - - - - - - - -
M_U004 Student potrafi rozwiązać prosty problem programistyczny korzystając z instrukcji języka C oraz zdefiniowanych przez siebie funkcji. + - + - - - - - - - -
Knowledge
M_W003 Student zna i rozumie zasady tworzenia oprogramowania z wykorzystaniem proceduralnego języka C. + - - - - - - - - - -
M_W004 Student zna zasady zarządzania pamięcią w języku C. + - - - - - - - - - -
Module content
Lectures:
  1. Wyrażenia i instrukcje

    Struktura programu, typy danych, stałe, zmienne lokalne, zmienne globalne, inicjalizacja zmiennych, blok kodu, zasięg widzialności zmiennej, kwalifikatory i specyfikatory typów, operatory, instrukcje warunkowe, iteracyjne, skoku, etykiety.

  2. Funkcje, wskaźniki, tablice oraz łańcuchy

    Definicja funkcji, przekazywanie parametrów do funkcji, zwracanie wartości przez funkcje, funkcje o zmiennej liście parametrów, funkcje rekurencyjne, deklarowanie i inicjalizowanie tablic oraz wskaźników, operator pobierania adresu, operator dereferencji, arytmetyka wskaźników, Tablice znaków i operacje na łańcuchach, wskaźniki do funkcji, argumenty wiersza poleceń.

  3. Struktury, unie, pola bitowe oraz wyliczenia

    Deklarowanie struktur, unii, pól bitowych oraz wyliczeń, operatory dostępu do składowych struktury i unii, przekazywanie struktur do funkcji, wskaźniki do struktur.

  4. Preprocesor

    Dyrektywy preprocesora, makrodefinicje z parametrami, kompilacja warunkowa,

  5. Abstrakcyjne typy danych w języku C

    Lista jednokierunkowa, stos, kolejka, drzewo.

  6. Biblioteka standardowa

    Funkcje matematyczne, funkcje wejścia/wyjścia, funkcje dynamicznej alokacji pamięci

  7. Standardy języka C

    Standard C89, Standard C99

  8. Elementy inżynierii oprogramowania

    Kompilacja, konsolidacja, make i makefile, biblioteka statyczna, biblioteka dynamiczna

Laboratory classes:
  1. Wyrażenia i instrukcje

    - student potrafi zadeklarować i zainicjalizować zmienne całkowite, rzeczywiste, i znakowe,
    - student potrafi określić rozmiar zmiennej lub typu przy użyciu operatora sizeof.
    - student potrafi zadeklarować zmienne lokalne oraz globalne,
    - student potrafi utworzyć blok kodu i wykorzystać go do ograniczenia zakresu widzialności zmiennych.
    - student potrafi zaimplementować program z użyciem instrukcji warunkowych, iteracyjnych oraz skoku.
    - student potrafi skonstruować poprawne wyrażenie przy użyciu operatorów arytmetycznych, logicznych, bitowych, relacyjnych.
    - student potrafi określić wartość wyrażenia i na podstawie priorytetów odpowiednich operatorów.

  2. Funkcje, wskaźniki, tablice oraz łańcuchy

    - student potrafi zadeklarować tablicę jednowymiarową i wielowymiarową oraz łańcuch.
    - student potrafi zadeklarować wskaźnik oraz pobrać adres zmiennej.
    - student potrafi użyć wskaźnika do indeksowania tablicy.
    - student potrafi zdefiniować i wywołać funkcję.
    - student potrafi przekazać zmienną do funkcji przez wartość oraz adres.
    - student potrafi zwrócić wartość zmiennej przy pomocy instrukcji return.
    - student potrafi zdefiniować funkcję o zmiennej liście parametrów.
    - student potrafi przekazać parametry do programu przy pomocy argumentów wierszu poleceń.

  3. Struktury, unie, pola bitowe oraz wyliczenia

    - student potrafi zadeklarować i zainicjalizować strukturę i unię oraz wskaźnik do struktury.
    - student potrafi zadeklarować pole bitowe i wyliczenie.
    - student potrafi manipulować zawartością struktur przy pomocy operatorów bezpośredniego i pośredniego dostępu do pola struktury.
    - student potrafi przekazać do funkcji i zwrócić strukturę przez wartość i adres.

  4. Preprocesor

    - student potrafi wykorzystać dyrektywę #include,
    - student potrafi zdefiniować makro z parametrami,

  5. Abstrakcyjne typy danych w języku C

    - student potrafi zaimplementować prosty interfejs listy jednokierunkowej,
    - student potrafi zaimplementować prosty interfejs drzewa,

  6. Biblioteka standardowa

    - student potrafi skompilować program z użyciem funkcji matematycznych,
    - student potrafi biegle operować funkcjami wejścia/wyjścia,
    - student potrafi używać funkcji dynamicznej alokacji pamięci,
    - student potrafi wykorzystać w programie funkcje biblioteczne qsort i bsearch oraz przekazywać funkce do funkcji przy użyciu wskaźnika do funkcji.

  7. Standardy języka C

    - student potrafi skompilować program w standardzie C89 jak również C99.
    - student potrafi wykorzystać praktycznie rozszerzenia zdefiniowane w standardzie C99.

  8. Elementy inżynierii oprogramowania

    - student potrafi zautomatyzować proces tworzenia oprogramowania przy pomocy pliku makefile.
    - student potrafi stworzyć bibliotekę statyczną oraz dynamiczną,

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

Ocena końcowa z przedmiotu to ocena z ćwiczeń laboratoryjnych.
Ocena z ćwiczeń laboratoryjnych = 1/3 * Aktywność zajęciach + 1/3*Pierwsze kolokwium + 1/3*Drugie kolokwium. Aktywność każdych zajęciach oceniana jest w skali od 0 do 100. Pierwsze i drugie kolokwium oceniane jest w skali od 0 do 100.
Pojęcie aktywność na zajęciach definiuje prowadzący zajęcia. Pierwsze dwa zajęcia nie są oceniane.

Ocena z ćwiczeń laboratoryjnych ustalana będzie zgodnie ze skalą ocen obowiązującą w regulaminie AGH, przyporządkowującą procent opanowania materiału konkretnej ocenie.

Prerequisites and additional requirements:

Znajomość podstawowych struktur danych i elementy analizy algorytmów.

Recommended literature and teaching resources:
  1. Stephen Prata, Język C. Szkoła programowania, ISBN 83-87150-06-1
  2. Herbert Schildt, Programowanie C, ISBN 83-7243-258-9
  3. Kenneth Reek, Język C wskaźniki, ISBN 83-7361-198-3
  4. Kyle Loudon, Algorytmy w C, ISBN 83-7197 –912-6
  5. Brian Kernighan i Dennis Ritchie, Język ANSI C, ISBN 83-204-1693-0
Scientific publications of module course instructors related to the topic of the module:

Lista publikacji, w kórych dane zostały wygenerowane przy pomocy porgramów napisanych w języku C:

1. F. Hassanibesheli, L. Hedayatifar, P. Gawronski, M. Stojkow, D. Żuchowska-Skiba, Krzysztof Kułakowski, Gain and loss of esteem, direct reciprocity and Heider balance, Physica A, 268 (2017), 334
2. . P. Gawronski, M. J. Krawczyk, K. Kułakowski, Emerging communities in networks – a flow of ties, Acta Phys. Pol. B, 46, (2015), 911
3. P. Gawronski, M. Nawojczyk, and K. Kułakowski, Opinion Formation in an Open System and the Spiral of Silence, Acta Phys. Pol. A, 127, (2015), A-45
4. P. Gawroński, K. Malarz, M.J. Krawczyk, J. Malinowski, A. Kupczak, W. Sikora, K. Kułakowski, J. Wąs, and J.W. Kantelhardt, Strategies in Crowd and Crowd Structure, Acta Phys. Pol. A, 123, (2013), 522
5. A. Jarynowski, P. Gawroński, K. Kułakowski, How the competitive altruism leads to bistable homogeneous states of cooperation or defection, LNCS, 7204 (2012) 543
6. P. Gawroński, K. Kułakowski, M. Kampf and J.W. Kantelhardt, Evacuation in the Social Force Model is not Stationary, Acta Phys. Pol. A, 121, (2012), B-77
7. P. Gawroński, K. Kułakowski, Crowd dynamics – being stuck, Comp. Phys. Comm., 9, (2011), 1924-1927

Additional information:

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

Ćwiczenia laboratoryjne:
Nieobecność na jednych ćwiczeniach/zajęciach wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału. Nieobecność na więcej niż jednych 20% zajęć wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału i jego zaliczenia w formie pisemnej w wyznaczonym przez prowadzącego terminie lecz nie później jak w ostatnim tygodniu trwania zajęć. Student, który bez usprawiedliwienia opuścił więcej niż 20% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości wyrównania zaległości.

Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH.

Zasady zaliczania zajęć:

Ćwiczenia laboratoryjne:
Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Student może dwukrotnie przystąpić do poprawkowego zaliczania.
Kolokwia zaliczeniowe są wspólne dla wszystkich grup a zadania przygotowywane wspólnie przez wszystkich prowadzących zajęcia laboratoryjne.

Student, który bez usprawiedliwienia opuścił więcej niż 20% zajęć i jego cząstkowe wyniki w nauce były negatywne może zostać pozbawiony, przez prowadzącego zajęcia, możliwości poprawkowego zaliczania zajęć. Od takiej decyzji prowadzącego zajęcia student może się odwołać do prowadzącego przedmiot (moduł) lub Dziekana.