Nazwa przedmiotu:
Podstawy programowania (I)
Koordynator przedmiotu:
Henryk DOBROWOLSKI
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Automatyka i Robotyka
Grupa przedmiotów:
Przedmioty techniczne
Kod przedmiotu:
PRI
Semestr nominalny:
1 / rok ak. 2019/2020
Liczba punktów ECTS:
6
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
30 godz. wykładu 15 godz. ćwiczeń 30 godz. przygotowanie do sprawdzianów 30 godz. laboratorium 45 godz. przygotowania do laboratorium w sumie 150 godz. co daje 6 ECTS
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
30 godz. wykładu 15 godz. ćwiczeń 30 godz. laboratorium w sumie 75 godz. co daje 3 ECTS
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
15 godz. ćwiczeń 15 godz. przygotowanie do sprawdzianów 30 godz. laboratorium 45 godz. przygotowania do laboratorium w sumie 105 godz. co daje 4 ECTS
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia15h
  • Laboratorium30h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
brak - przedmiot I semestru
Limit liczby studentów:
przedmiot obowiązkowy dla kierunku informatyki
Cel przedmiotu:
• Nauczenie podstaw algorytmizacji problemów • Zapoznanie z techniką programowania strukturalnego • Wprowadzenie do programowania w językach wysokiego poziomu • Praktyczna nauka podstaw programowania w oparciu o język C • Zapoznanie z wybranymi algorytmami i konstrukcjami danych w oparciu o reprezentację składniową języka C (z odniesieniami do C++ i Pascal’a) • Wprowadzenie do podstawowych pojęć inżynierii oprogramowania – specyfikacja, dokumentacja, testowanie i pielęgnacja oprogramowania
Treści kształcenia:
Pojęcia podstawowe (algorytm, program, proces. Reprezentowanie algorytmów. Translacja. Kompilacja i konsolidacja programu. Biblioteki. Środowisko kodowania i uruchamiania programów – edytor, kompilator, debuger). Podstawy algorytmizacji (Dekompozycja problemu. Podejście strukturalne do projektowania algorytmów. Konstruowanie prostych algorytmów. Iteracja i rekursja. Ocena jakości algorytmu. Testowanie algorytmu; dobór danych wejściowych, badanie przypadków granicznych i wyjątków. Sprawność i złożoność algorytmu). Języki programowania (Przegląd – od maszynowo zorientowanych do proceduralnych. Syntaktyka i sposoby jej opisu – diagramy syntaktyczne, notacja BNF. Semantyka. Typy instrukcji/operacji – składnia dla języka C. Struktura programu ). Elementy języka C (Pojęcia podstawowe - deklaracje i definicje; struktury danych i funkcje. Funkcja main. Symbole i komentarze. Liczbowe typy danych. Wyrażenia arytmetyczne i logiczne - operatory; priorytety i łączność. Instrukcje, ich klasyfikacja, składnia i semantyka. Funkcje - budowa, parametry, wartości zwracane itd. Agregaty danych - tablice i struktury. Wejście/wyjście w C) Przegląd wybranych algorytmów (Elementarne algorytmy iteracyjne. Manipulacje na tekstach, algorytmy sortowania itd. Iteracja a rekurencja. Algorytmy z powrotami. Dynamiczne struktury danych – algorytmy dla list i drzew. Wyszukiwanie) Elementy wstępu do inżynierii oprogramowania (Paradygmaty programowania. Modele - kaskadowy, spiralny. Testowanie. Cykl życia oprogramowania).
Metody oceny:
Na ocenę składają się elementy: 1. oceny z kolokwiów wykładowych (2 kolokwia) 2. ocena z ćwiczeń audytoryjnych 3. oceny z zadań laboratoryjnych (w ciągu semestrui - 4 indywidualne zadania o sukcesywnie wzrastającym stopniu złożoności)
Egzamin:
nie
Literatura:
Literatura podstawowa - B.W.Kernighan, D.M.Ritchie Język ANSI C Do samodzielnej nauki: - S.Prata Szkoła Programowania – Język C - H.Schildt Programowanie C (ale tłumaczenie wydania amerykańskiego z 2000 roku – uwzględnia standard C99) Dla zaawansowanych: - Aho – Ullman Wykłady z informatyki z przykładami w języku C - B.W,Kernighan, R.Pike Lekcja programowania
Witryna www przedmiotu:
http://studia.elka.pw.edu.pl
Uwagi:
Przedmiot jest pierwszym z ciągu poświęconego programowaniu.

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka PRI_W01
Znajomość podstaw algorytmizacji
Weryfikacja: Ćwiczenia, zadania laboratoryjne
Powiązane charakterystyki kierunkowe: K_W03
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka PRI_W02
Znajomość podstaw strukturalizacji rozwiązywania problemów
Weryfikacja: Ćwiczenia, zadania laboratoryjne
Powiązane charakterystyki kierunkowe: K_W03
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka PRI_W03
Znajomość języka C na poziomie umożliwiającym projektowanie względnie prostych aplikacji
Weryfikacja: Ćwiczenia, zadania laboratoryjne, kolokwia
Powiązane charakterystyki kierunkowe: K_W03
Powiązane charakterystyki obszarowe: I.P6S_WG
Charakterystyka PRI_W04
Znajomość podstawowych pojęć związanych z cyklem życia oprogramowania
Weryfikacja: Ćwiczenia
Powiązane charakterystyki kierunkowe: K_W03
Powiązane charakterystyki obszarowe: I.P6S_WG

Profil ogólnoakademicki - umiejętności

Charakterystyka PRI_U01
Reprezentowanie algorytmów w formie schematów blokowych / diagramów aktywności
Weryfikacja: Ćwiczenia, zadania laboratoryjne
Powiązane charakterystyki kierunkowe: K_U07, K_U21
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.1.o, III.P6S_UW.2.o, III.P6S_UW.3.o, III.P6S_UW.4.o
Charakterystyka PRI_U02
Kodowanie algorytmów z zastosowaniem języka C, projektowanie, kodowanie, uruchamianie i testowanie prostych programów aplikacyjnych (tryb tekstowy) z zastosowaniem języka C
Weryfikacja: Zadania olaboratoryjne, kolokwia
Powiązane charakterystyki kierunkowe: K_U21
Powiązane charakterystyki obszarowe: I.P6S_UW, III.P6S_UW.1.o, III.P6S_UW.2.o, III.P6S_UW.3.o, III.P6S_UW.4.o