Module also offered within study programmes:
General information:
Name:
Metodyka i techniki programowania 1
Course of study:
2017/2018
Code:
IET-1-207-n
Faculty of:
Computer Science, Electronics and Telecommunications
Study level:
First-cycle studies
Specialty:
-
Field of study:
Electronics and Telecommunications
Semester:
2
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Part-time studies
Course homepage:
 
Responsible teacher:
dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
Academic teachers:
dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
Smolarek Łukasz (smolarek@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 Rozumie potrzebę uczenia się ET1A_K01 Completion of laboratory classes
Skills
M_U001 Potrafi rozwiązywać proste zadania algorytmiczne ET1A_U24 Completion of laboratory classes
M_U002 Potrafi zapisywać algorytmy w proceduralnym języku programowania ET1A_U24 Completion of laboratory classes
M_U003 Potrafi stosować proste i strukturalne typy danych ET1A_U24 Completion of laboratory classes
M_U004 Potrafi stosować dekompozycję problemu ET1A_U24 Completion of laboratory classes
Knowledge
M_W001 Zna i rozumie podstawowe pojęcia informatyki, zna architekturę i działanie prostego komputera, zna podstawowe zadania systemu operacyjnego ET1A_W07 Examination
M_W002 Zna i rozumie proceduralny język programowania ET1A_W07 Examination
M_W003 Zna i rozumie podstawowe mechanizmy budowy algorytmów ET1A_W07 Examination
M_W004 Zna i rozumie podstawowe klasyczne algorytmy ET1A_W07 Examination
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 Rozumie potrzebę uczenia się + - + - - - - - - - -
Skills
M_U001 Potrafi rozwiązywać proste zadania algorytmiczne + - + - - - - - - - -
M_U002 Potrafi zapisywać algorytmy w proceduralnym języku programowania + - + - - - - - - - -
M_U003 Potrafi stosować proste i strukturalne typy danych + - + - - - - - - - -
M_U004 Potrafi stosować dekompozycję problemu + - + - - - - - - - -
Knowledge
M_W001 Zna i rozumie podstawowe pojęcia informatyki, zna architekturę i działanie prostego komputera, zna podstawowe zadania systemu operacyjnego + - + - - - - - - - -
M_W002 Zna i rozumie proceduralny język programowania + - + - - - - - - - -
M_W003 Zna i rozumie podstawowe mechanizmy budowy algorytmów + - + - - - - - - - -
M_W004 Zna i rozumie podstawowe klasyczne algorytmy + - + - - - - - - - -
Module content
Lectures:

Zajęcia w ramach modułu prowadzone są w postaci wykładu (16 godzin) oraz ćwiczeń laboratoryjnych (16 godzin)

WYKŁADY

1. Praktyczne korzystanie z uniksopodobnego systemu operacyjnego Linux: rola systemu operacyjnego, wielozadaniowość, wielodostęp, podstawowe polecenia, powłoki, skrypty.
2. Architektura prostego komputera: procesor, pamięć, urządzenia we/wy, przerwania, stos. Cykl rozkazowy procesora, instrukcje kodu maszynowego, język niskiego poziomu, język wysokiego poziomu. Reprezentacja liczb w komputerze, strony kodowe znaków.
3. Język programowania, składnia, semantyka, pragmatyka języka programowania. Sposoby opisu składni i semantyki. Programowanie strukturalne © i obiektowe (C++): preprocesor, kompilacja, konsolidacja, pakiety, moduły, biblioteki. Pierwszy program w języku C.
4-6. Podstawy programowania w języku C: proste typy danych, operacje we/wy, instrukcje sterujące. Tablice i złożone struktury danych. Pliki i operacja na nich. Tryb wskaźnikowy i alokacja pamięci. Procedura, funkcja, przekazywanie parametrów do procedur i funkcji, zmienne lokalne, stos systemowy i jego rola przy wywoływaniu procedur i funkcji. Podejście zstępujące i wstępujące w programowaniu.
7. Informacja, zadanie algorytmiczne, algorytm i sposoby jego zapisu w postaci schematu blokowego. Przykładowe proste algorytmy i ich implementacja programowa.
8. Funkcje rekurencyjne. Mechanizm rekurencji i jego realizacja na poziomie kodu maszynowego. Problemy rozwiązywane z użyciem rekurencji, celowość stosowania rozwiązań rekurencyjnych.
9. Podstawowe algorytmy sortowania i wyszukiwania, także algorytmy rekurencyjne. Zasada “dziel-i-rządź” w algorytmach. Algorytm wyszukiwania połówkowego.
10. Statyczne i dynamiczne struktury danych. Lista jedno-, dwu-kierunkowa, drzewo, kolejka, stos. Porównywanie algorytmów.
11-12. Język C++: obiekt, klasa, dziedziczenie, hermetyzacja, polimorfizm, wirtualność. Przykładowe programy.
13. Struktury dynamiczne w języku C++ na przykładzie kontenerów STL typu „list” i „vector”.
14. Paradygmaty w programowaniu. Technologie programowania. Rodzaje języków programowania: proceduralne, obiektowe; interpretowane, kompilowane, mieszane; skryptowe; imperatywne, deklaratywne.
15. Podstawowe pojęcia ze złożoności obliczeniowej algorytmów. Złożoność obliczeniowa, funkcja złożoności obliczeniowej, rząd złożoności obliczeniowej. Algorytmy wielomianowe i wykładnicze – przykłady problemów. Problemy nierozwiązywalne, problem stopu.

Laboratory classes:

ĆWICZENIA LABORATORYJNE

W module prowadzone są zajęcia laboratoryjne (komputerowe), w trakcie których studenci piszą skrypty komend systemu operacyjnego LINUX w języku wybranej powłoki oraz programy w języku C. Treści tych zajęć ugruntowują i rozszerzają wiedzę przekazywaną podczas wykładów.

1. Wprowadzenie do rodziny systemów uniksopodobnych (Linux). Podstawowe komendy powłoki, wyrażenia regularne, zmienne środowiskowe, zmienne powłoki.
2. Zarządzanie prawami dostępu, struktura katalogów. Pisanie skryptów w powłokach z rodziny csh i sh.
3. Operacje na plikach i strumieniach powłoce systemów uniksopodobnych.
4. Wprowadzenie do języka C, deklaracja, definicja, podstawowa struktura programu.
5. Różne rodzaje pętli, operacje wejścia-wyjścia.
6. Obliczenia w języku C, korzystanie z bibliotek niestandardowych.
7. Instrukcje sterujące, proste i złożone warunki logiczne, operatory binarne.
8. Tablice jedno i wielowymiarowe. Operacje na tablicach.
9. Łańcuchy znakowe, stałe znakowe. Operacje wejścia wyjścia oraz manipulacje łańcuchami znakowymi.
10. Złożone typy danych – struktury i unie.
11. Operacje na plikach. Różne metody dostępu do danych zapisanych w systemie plików systemu operacyjnego.
12. Wskaźniki. Deklaracja, inicjalizacja, zmiana wartości wskaźnika i wskazywanych przez nie zmiennych. Podstawowe operacje na danych za pomocą wskaźników.
13. Praktyczna ilustracja na podstawie pojedynczych zmiennych, łańcuchów znakowych oraz złożonych struktur danych.
14. Funkcje. Definicje, deklaracje, przekazywanie danych przez wartość i wskaźnik.
15. Sprawdzenie wiadomości. Wystawienie ocen.

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 100 h
Module ECTS credits 5 ECTS
Participation in lectures 16 h
Participation in laboratory classes 16 h
Realization of independently performed tasks 44 h
Preparation for classes 24 h
Additional information
Method of calculating the final grade:

Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z ćwiczeń laboratoryjnych oraz egzaminu.
Obliczamy średnią arytmetyczną z ocen zaliczenia i egzaminów uzyskanych we wszystkich terminach.
Wyznaczmy ocenę końcową na podstawie zależności:
if sr>4.75 then OK:=5.0 else
if sr>4.25 then OK:=4.5 else
if sr>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else OK:=3
Jeżeli pozytywną ocenę z ćwiczeń i egzaminu uzyskano w pierwszym terminie oraz ocena końcowa jest mniejsza niż 5.0 to ocena końcowa jest podnoszona o 0.5

Prerequisites and additional requirements:

Znajomość matematyki (systemy pozycyjne, kombinatoryka, logarytmy, itp.)

Recommended literature and teaching resources:

G. Brookshear: Informatyka w ogólnym zarysie, WNT, 2003
W. Stallings: Organizacja i architektura systemu komputerowego. WNT, Warszawa 2004.
P. P. Silvester: System operacyjny UNIX. WNT, Warszawa 1990.
B.W. Kernighan, D.M. Ritchie: Język C. WNT, Warszawa 1988.
J. Grębosz: Symfonia C++ standard. Wydawnictwo Edition 2000, Kraków 2005.
S. Prata: Język C. Szkoła programowania. wyd. 5, Helion, Gliwice 2006.
D. Harel, F.Yishai: Rzecz o istocie informatyki – algorytmika, WNT, 2008
N. Wirth: Algorytmy + Struktury danych = Programy. WNT, Warszawa 1989.
P. Wróblewski: Algorytmy, struktury danych i techniki programowania. Helion, Gliwice 2003.

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

Additional scientific publications not specified

Additional information:

None