Module also offered within study programmes:
General information:
Name:
Computer Programming
Course of study:
2017/2018
Code:
ZIE-1-201-n
Faculty of:
Management
Study level:
First-cycle studies
Specialty:
-
Field of study:
Information Technology and Econometrics
Semester:
2
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Part-time studies
Course homepage:
 
Responsible teacher:
dr inż. Pełech-Pilichowski Tomasz (tomek@agh.edu.pl)
Academic teachers:
dr inż. Pełech-Pilichowski Tomasz (tomek@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 programisty za poprawność obliczeń i zagrożeń wynikających z błędów programu, a zatem konieczność starannego sprawdzania tej poprawności. IE1A_K09, IE1A_K04 Execution of a project,
Involvement in teamwork
M_K002 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. IE1A_K01, IE1A_K06 Execution of a project,
Execution of exercises
Skills
M_U001 Potrafi zorganizować pracę w zespole programistów, umie przygotować dokumentację użytkową oraz techniczną prostej aplikacji w języku C. IE1A_U06, IE1A_U07 Execution of a project,
Involvement in teamwork,
Activity during classes,
Execution of exercises
M_U002 Potrafi zaprojektować strukturę oprogramowania, potrafi zbudować w języku C/C++ niezawodny prosty program obliczeniowy z wykorzystaniem arytmetyki wskaźnikowej, wprowadzać dane z klawiatury i plików oraz przekazywać wyniki na standardowe urządzenia zewnętrzne (monitor, pliki dyskowe). IE1A_U06 Test,
Activity during classes,
Execution of a project,
Execution of exercises
M_U003 Umie posługiwać się platformami programistycznymi dla sprawnego uruchamiania programów w języku C/C++, umie diagnozować błędy wykonania programu oraz kontrolować poprawność obliczeń. IE1A_U06, IE1A_U07 Execution of a project,
Activity during classes,
Execution of exercises
M_U004 Zna składnię i semantykę języka C (w tym arytmetykę wskaźników) i potrafi jej używać dla budowania niezawodnego oprogramowania. IE1A_U06 Execution of a project,
Test,
Activity during classes,
Execution of exercises
Knowledge
M_W001 Zna i rozumie zasady algorytmizacji zadań i cyfrowego kodowania algorytmów. IE1A_W24, IE1A_W12 Test,
Oral answer,
Participation in a discussion,
Execution of a project
M_W002 Zna i rozumie zasady cyfrowego (bitowego) kodowania informacji i jej przetwarzania w urządzeniach cyfrowych. IE1A_W24, IE1A_W12 Activity during classes,
Participation in a discussion,
Execution of a project
M_W003 Zna zasady doboru języka programowania do specyfiki zadania programistycznego, zna i rozumie zasady niezawodnego programowania komputerów. IE1A_W24, IE1A_W12 Activity during classes,
Execution of a project
M_W004 Zna zasady ogólne programowania strukturalnego, proceduralnego i obiektowego oraz budowania oprogramowania z wykorzystaniem różnych języków programowania. IE1A_W24, IE1A_W12 Execution of a project,
Execution of laboratory classes,
Activity during 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 programisty za poprawność obliczeń i zagrożeń wynikających z błędów programu, a zatem konieczność starannego sprawdzania tej poprawności. + - - - - - - - - - -
M_K002 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. + - - - - - - - - - -
Skills
M_U001 Potrafi zorganizować pracę w zespole programistów, umie przygotować dokumentację użytkową oraz techniczną prostej aplikacji w języku C. - - - + - - - - - - -
M_U002 Potrafi zaprojektować strukturę oprogramowania, potrafi zbudować w języku C/C++ niezawodny prosty program obliczeniowy z wykorzystaniem arytmetyki wskaźnikowej, wprowadzać dane z klawiatury i plików oraz przekazywać wyniki na standardowe urządzenia zewnętrzne (monitor, pliki dyskowe). - - - + - - - - - - -
M_U003 Umie posługiwać się platformami programistycznymi dla sprawnego uruchamiania programów w języku C/C++, umie diagnozować błędy wykonania programu oraz kontrolować poprawność obliczeń. - - - + - - - - - - -
M_U004 Zna składnię i semantykę języka C (w tym arytmetykę wskaźników) i potrafi jej używać dla budowania niezawodnego oprogramowania. - - - + - - - - - - -
Knowledge
M_W001 Zna i rozumie zasady algorytmizacji zadań i cyfrowego kodowania algorytmów. + - - - - - - - - - -
M_W002 Zna i rozumie zasady cyfrowego (bitowego) kodowania informacji i jej przetwarzania w urządzeniach cyfrowych. + - - - - - - - - - -
M_W003 Zna zasady doboru języka programowania do specyfiki zadania programistycznego, zna i rozumie zasady niezawodnego programowania komputerów. + - - - - - - - - - -
M_W004 Zna zasady ogólne programowania strukturalnego, proceduralnego i obiektowego oraz budowania oprogramowania z wykorzystaniem różnych języków programowania. + - - + - - - - - - -
Module content
Lectures:

W ramach zajęć wykładowych realizowane są niżej wymienione zagadnienia (wielkość opisu nie jest proporcjonalna do czasu poświęcanego na dane zagadnienie). Zagadnienia dotyczące programowania w języku C (punkt 3) przeznaczone są w dużej części do samodzielnego opanowania przez studentów (na zajęciach wykładowych prezentowane będą wybrane zagadnienia).

1. Zasady algorytmizacji problemów: Pojęcie algorytmu, sposoby zapisu algorytmów, przykładowe algorytmy, pojęcie efektywności algorytmu. 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. Charakterystyka i klasyfikacja języków programowania (języki strukturalne, proceduralne, obiektowe, niskiego i wysokiego poziomu). Środowisko programistyczne.

2. Ogólne zasady programowania: 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). Tryb przetwarzania kodu programu, kompilacja i łączenie, pliki źródłowe, binarne i wykonywalne. Edycja wersji źródłowej – rola stylu programowania, diagnostyka poprawności syntaktycznej. Podstawowe zasady niezawodnego programowania. Podstawowe zasady testowania oprogramowania.

3. Język C jako przykład języka strukturalnego, proceduralnego: Zasady programowania w języku C: struktura programu (pliki źródłowe, moduły, funkcje, biblioteki); struktura modułu (deklaracje, bloki, instrukcje, zasięg widoczności nazw, komentarze). Typy standardowe, rzutowanie typu, typy definiowane, rozmiar obiektu. Podstawowe operacje preprocesora (rola plików nagłówkowych i ich dołączanie, 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. Operatory i kolejność wykonywania operacji. Konstrukcje algorytmów w języku C: wyrażenia arytmetyczne, logiczne, bitowe, instrukcje sterujące, pętle – zalecenia programistyczne związane z niezawodnością. Funkcje: celowość i zasady wydzielania funkcji, przekazywanie danych do funkcji i wyników funkcji, rola prototypu funkcji, wskaźniki do 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.

4. Środowisko Matlab jako narzędzie tworzenia prototypów oprogramowania oraz sprawdzania poprawności działania programów.

Project classes:

Zgodnie z regulaminem studiów AGH (§ 11, p. 1, ust. 4) główny nacisk tych zajęć położony jest przygotowanie przez studentów projektu w języku C/C++. Dodatkowo zajęcia poświęcone są na opanowanie umiejętności z zakresu tworzenia algorytmów oraz ich kodowania w języku C/C++ i w środowisku Matlab.

W szczególności celem ćwiczeń projektowych jest:

  • Opanowanie umiejętności projektowania algorytmów, zapisu w formie graficznej.
  • Opanowanie umiejętności posługiwania się środowiskami programistycznymi pozwalającymi na edycję i kompilację kodu C/C++ (edycja kodu, kompilacja, łączenie, debugowanie, Zapoznanie z zasadami zarządzania kodem źródłowym). Praktyczne ćwiczenie zasad podziału kodu na pliki i budowania plików nagłówkowych.
  • Praktyczne ćwiczenie umiejętności budowania prostych programów w języku C/C++, z wykorzystaniem typów standardowych, tablic i struktur danych, z akcentowaniem zasad i praktyk niezawodnego programowania. Nabycie umiejętności właściwej strukturyzacji kodu (podział na funkcje, przekazywanie danych do funkcji, przekazywanie wyników, budowanie makr).
  • Opanowanie podstaw dynamicznej alokacji pamięci i wykorzystania arytmetyki wskaźnikowej.
  • Opanowanie kodowania procedur wprowadzania danych z klawiatury i zapisu oraz odczytu danych z plików oraz kodowanie procedur prezentacji wyników obliczeń
  • Wykorzystanie środowiska Matlab do budowy prototypów programów oraz do kontroli poprawności programu w języku C/C++.
  • Opanowanie umiejętności samodzielnej pracy w zespołach programistów. Realizacja projektu zaliczeniowego.

2 bloki zajęć (4h) przeznaczone są na kolokwia (sprawdziany) mające na celu sprawdzenie nabytych umiejętności programowania w języku C/C++ oraz w zapisu algorytmów w postaci graficznej.
6 bloków zajęć (10h) przeznaczonych jest na przygotowanie projektów, w szczególności:

  • ustalenie tematów, walidację koncepcji/założeń,
  • konsultacje projektowe,
  • rozwiązywanie problemów programistycznych związanych z realizacją projektów,
  • prezentację projektów przez studentów i zaliczenie projektów (kolokwium ustne).

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 100 h
Module ECTS credits 4 ECTS
Participation in lectures 8 h
Participation in project classes 14 h
Preparation for classes 18 h
Realization of independently performed tasks 26 h
Completion of a project 30 h
Examination or Final test 2 h
Contact hours 2 h
Additional information
Method of calculating the final grade:

Ocena końcowa wystawiana jest przez prowadzącego wykład na podstawie oceny z ćwiczeń projektowych. Ocenę zaokrągla się zależnie od obecności na wykładach, z możliwością podniesienia (maks. o 1.0) na podstawie dodatkowego kolokwium ustnego.

Podczas zajęć wystawiane są oceny cząstkowe:

  • S1: ocena ze sprawdzianu nr 1 dotyczącego praktycznych umiejętności podstaw programowania, znajomości kodu w języku C/C++
  • S2: ocena ze sprawdzianu nr 2 dotyczącego znajomości zasad programowania, umiejętności niezawodnego programowania, znajomości kodu w języku C/C++ oraz podstaw programowania w środowisku Matlab.
  • PW: ocena z wykonania projektu.
  • A: ocena z aktywności na zajęciach

Ocena końcowa (OCP) wystawiona jest wg formuły:
OCP = 0,15*S1 + 0.3*S2 + 0,45*PW + 0,1*A

Prerequisites and additional requirements:

Znajomość podstaw informatyki i zasad korzystania z komputera. Znajomość podstaw matematyki na poziomie szkoły średniej.

Recommended literature and teaching resources:

podstawowa:

  • N. Wirth: Algorytmy+struktury danych = programy. WNT, Warszawa 2002,
  • B. W.Kernighan, D.M.Ritchie, * Język C, WNT Warszawa 1992;
  • K.A.Barclay, ANSI C: Problem Solving and Programming, Prentice Hall, 1990
  • S. Prata: Język C. Szkoła programowania. Wyd. Helion, 2006

pomocnicza:

  • D. van Tassel: Praktyka programowania. WNT Warszawa, 1989; W.Duch: Fascynujący świat komputerów, Wydawnictwo Nakom, Poznań, 1997,
  • J. Grębosz: Symfonia C++. Wyd. Edition 2000, 2010
Scientific publications of module course instructors related to the topic of the module:

Additional scientific publications not specified

Additional information:

None