Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie proceduralne
Tok studiów:
2018/2019
Kod:
JFT-1-201-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Fizyka Techniczna
Semestr:
2
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr hab. inż. Gawroński Przemysław (gawron@newton.ftj.agh.edu.pl)
Osoby prowadzące:
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)
dr inż. Rachwał Bartłomiej (brachwal@agh.edu.pl)
Krótka charakterystyka modułu

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

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Student zna i rozumie zasady tworzenia oprogramowania z wykorzystaniem proceduralnego języka C. FT1A_W04, FT1A_W02 Udział w dyskusji,
Kolokwium,
Aktywność na zajęciach
M_W002 Student zna zasady zarządzania pamięcią w języku C. FT1A_W04, FT1A_W02 Udział w dyskusji,
Kolokwium,
Aktywność na zajęciach
Umiejętności
M_U001 Student potrafi tworzyć zmienne proste i złożone statycznie oraz dynamicznie. FT1A_U03, FT1A_U02 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
M_U002 Student potrafi rozwiązać prosty problem programistyczny korzystając z instrukcji języka C oraz zdefiniowanych przez siebie funkcji. FT1A_U02, FT1A_U04 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
Kompetencje społeczne
M_K001 Student potrafi w sposób przejrzysty zaprezentować rozwiązanie problemu programistycznego. FT1A_K03, FT1A_K02, FT1A_K01 Wykonanie ćwiczeń laboratoryjnych,
Udział w dyskusji,
Kolokwium,
Aktywność na zajęciach
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Student zna i rozumie zasady tworzenia oprogramowania z wykorzystaniem proceduralnego języka C. + - + - - - - - - - -
M_W002 Student zna zasady zarządzania pamięcią w języku C. + - + - - - - - - - -
Umiejętności
M_U001 Student potrafi tworzyć zmienne proste i złożone statycznie oraz dynamicznie. - - + - - - - - - - -
M_U002 Student potrafi rozwiązać prosty problem programistyczny korzystając z instrukcji języka C oraz zdefiniowanych przez siebie funkcji. - - + - - - - - - - -
Kompetencje społeczne
M_K001 Student potrafi w sposób przejrzysty zaprezentować rozwiązanie problemu programistycznego. - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  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

    Deklarowanie struktur, operatory dostępu do składowych struktury , przekazywanie struktur do funkcji, wskaźniki do struktur.

  4. Preprocesor

    Dyrektywy preprocesora, makrodefinicje z parametrami.

  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

Ćwiczenia laboratoryjne:
  1. Wyrażenia i instrukcje

    - student potrafi zadeklarować i zainicjalizować zmienne całkowite, rzeczywiste, i znakowe,
    - 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.

  3. Struktury

    - student potrafi zadeklarować i zainicjalizować strukturę oraz wskaźnik do struktury.
    - 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ć funkcje 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 oraz C11

  8. Elementy inżynierii oprogramowania

    - student potrafi zautomatyzować proces tworzenia oprogramowania przy pomocy pliku makefile.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 150 godz
Punkty ECTS za moduł 5 ECTS
Udział w wykładach 30 godz
Udział w ćwiczeniach laboratoryjnych 45 godz
Przygotowanie do zajęć 45 godz
Samodzielne studiowanie tematyki zajęć 30 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Pierwsze zajęcia nie są ocenianie.

2. Ocenie podlegają kartkówki z tematyki wykładów (10 kartkówek w semestrze) oraz kody programów napisanych podczas zajęć. Zarówno kartkówki jak i programy oceniane są w skali od 0 do 100 procent. Do wyliczenia oceny z laboratorium wykorzystywane są średnie arytmetyczne uzyskanych wyników z kartkówek oraz z programów po odrzuceniu najsłabszego wyniku zarówno z kartkówek jak i z programów.

3. Ocena końcowa z przedmiotu wystawiana jest zgodnie z regulaminem studiów AGH na podstawie średniej arytmetycznej z dwóch wcześniej zdefiniowanych składowych oceny pracy w podczas laboratoriów (punkt 2).

4. W przypadku braku zaliczenia w terminie podstawowym, Studentowi przysługują dwa terminy
zaliczenia poprawkowego. Na każdym z terminów Student może poprawić jedną kartkówkę i jeden
zestaw zadań programistycznych wybrany przez Prowadzącego.

5. Ocena końcowa obliczana jest jako średnia arytmetyczna wg. punktu 3 z uwzględnieniem
poprawionych ocen z kolejnych terminów zaliczenia, gdzie oceny z terminów zaliczeniowych zastępują
oceny pierwotne.

6. W przypadku nieobecności Studenta na laboratorium, jeśli dane zajęcia są oceniane to przypisywana jest ocena 0 procent z kartkówki oraz z części programistycznej. W przypadku nieobecności usprawiedliwionej, ocena z danych zajęć nie jest wliczana do średniej.

Wymagania wstępne i dodatkowe:

Brak

Zalecana literatura i pomoce naukowe:
  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
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

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

Informacje dodatkowe:

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. 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. Od takiej decyzji prowadzącego zajęcia student może się odwołać do prowadzącego przedmiot (moduł) lub Dziekana.

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