- Nazwa przedmiotu:
- Algorytmy i podstawy programowania
- Koordynator przedmiotu:
- dr inż. Marek Gągolewski, prof. PW
- Status przedmiotu:
- Obowiązkowy
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Matematyka
- Grupa przedmiotów:
- Wspólne
- Kod przedmiotu:
- 1120-MA000-LSP-0112
- Semestr nominalny:
- 1 / rok ak. 2017/2018
- Liczba punktów ECTS:
- 4
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 1. godziny kontaktowe – 65 h; w tym
a) obecność na wykładach – 15 h
b) obecność na ćwiczeniach – 15 h
c) obecność na laboratoriach – 30 h
d) konsultacje – 5 h
2. praca własna studenta – 40 h; w tym
a) przygotowanie do ćwiczeń i do kolokwiów – 15 h
b) zapoznanie się z literaturą – 5 h
c) przygotowanie do laboratoriów – 20 h
Razem 105 h, co odpowiada 4 pkt. ECTS
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 1. obecność na wykładach – 15 h
2. obecność na ćwiczeniach – 15 h
3. obecność na laboratoriach – 30 h
4. konsultacje – 5 h
Razem 65 h, co odpowiada 2 pkt. ECTS
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 1. obecność na laboratoriach – 30 h
2. przygotowanie do laboratoriów – 20 h
Razem 50 h, co odpowiada 2 pkt. ECTS
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład15h
- Ćwiczenia15h
- Laboratorium30h
- Projekt0h
- Lekcje komputerowe0h
- Wymagania wstępne:
- brak
- Limit liczby studentów:
- Bez limitu
- Cel przedmiotu:
- W trakcie kursu student poznaje podstawowe zagadnienia związane z programowaniem, tj.: pojęcie algorytmu, elementy realizacji arytmetyki całkowitoliczbowej i zmiennopozycyjnej, funkcje, ideę rekurencji, tablice, proste algorytmy sortowania i działania na macierzach, elementarne abstrakcyjne struktury danych i dynamiczne typy danych (listy, kolejki, stosy, drzewa binarne). Do implementacji przedmiotowych algorytmów i struktur danych wykorzystywany jest język umożliwiający programowanie imperatywne (np. C++), z którego podstawami student zapoznaje się w trakcie wykładu.
Na zajęciach ćwiczeniowych student rozwija umiejętności analizy zagadnień problemowych i tworzenia algorytmów służących do ich rozwiązania z wykorzystaniem poznanych na wykładzie wiadomości teoretycznych.
Na zajęciach laboratoryjnych student uczy się praktycznych umiejętności tworzenia pełnych, acz prostych programów, które wykorzystują poznane algorytmy. Szczególną uwaga zwraca się więc na: implementację programu przy użyciu gotowych, udokumentowanych bibliotek, umiejętność przetestowania programu, jego użycia na konkretnych danych wejściowych, interpretację otrzymanego wyniku. Ponadto student poznaje także szczegóły techniczne programowania w danym języku (środowisko programistyczne, biblioteki). Na siedmiu zajęciach laboratoryjnych rozwiązuje samodzielnie zadania sprawdzające.
- Treści kształcenia:
- 1. Etapy tworzenia oprogramowania. Algorytm.
2. Reprezentacja liczb całkowitych i zmiennopozycyjnych.
3. Deklaracja i typy zmiennych, operator przypisania. Operatory arytmetyczne, logiczne i relacyjne.
4. Instrukcja warunkowa i pętle.
5. Funkcje. Przekazywanie parametrów przez wartość i przez referencję.
6. Rekurencja.
7. Dynamiczna alokacja pamięci. Tablice jednowymiarowe i operacje na nich. Proste algorytmy sortowania.
8. Napisy (ciągi znaków).
9. Macierze.
10. Podstawowe dynamiczne typy danych: Listy jedno- i dwukierunkowe, kolejki, stosy, drzewa binarne.
- Metody oceny:
- 2 kolokwia – pierwsze za 20, drugie za 30 p. – na ćwiczeniach
7 zadań praktycznych do samodzielnego rozwiązania na laboratoriach, łącznie 50 p.
Ostateczna ocena z przedmiotu wynika z sumy punktów uzyskanych na ww. etapach, wg progów: (50; 60] – trzy, (60-70] – trzy i pół, (70-80] – cztery, (80-90] – cztery i pół, >90 – pięć.
- Egzamin:
- nie
- Literatura:
- 1. Harel. D (2008). Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa.
2. Wirth N. (2004). Algorytmy + struktury danych = programy, WNT, Warszawa.
- Witryna www przedmiotu:
- brak
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Efekt AiPP_W01
- Ma wiedzę w zakresie podstaw programowania imperatywnego.
Weryfikacja: kolokwium
Powiązane efekty kierunkowe:
M1_W21
Powiązane efekty obszarowe:
- Efekt AiPP_W02
- Zna proste algorytmy sortowania tablic: przez wstawianie, przez wybór, bąbelkowe, dynamiczne typy danych: listę jednokierunkową, dwukierunkową, drzewa binarne, ideę rekurencji.
Weryfikacja: kolokwium
Powiązane efekty kierunkowe:
M1_W20
Powiązane efekty obszarowe:
Profil ogólnoakademicki - umiejętności
- Efekt AiPP_U01
- Potrafi formułować w postaci pseudokodu rozwiązania prostych problemów algorytmicznych (w szczególności dot. działań na tablicach i macierzach).
Weryfikacja: kolokwium
Powiązane efekty kierunkowe:
M1_U18
Powiązane efekty obszarowe:
- Efekt AiPP_U02
- Potrafi implementować i testować rozwiązania prostych problemów algorytmicznych, a także szacować ich złożoność czasową i pamięciową
Weryfikacja: zadania laboratoryjne
Powiązane efekty kierunkowe:
M1_U19
Powiązane efekty obszarowe:
- Efekt AiPP_U03
- Potrafi wykorzystywać w swoich programach gotowe funkcje biblioteczne i studiować ich dokumentację.
Weryfikacja: zadania laboratoryjne
Powiązane efekty kierunkowe:
M1_U19
Powiązane efekty obszarowe:
Profil ogólnoakademicki - kompetencje społeczne
- Efekt AiPP_K01
- Rozumie potrzebę uczenia się przez całe życie a także potrzebę podnoszenia kompetencji zawodowych i osobistych. W tym procesie potrafi odpowiednio określić priorytety służące realizacji określonego przez siebie lub innych zadania
Weryfikacja: kolokwium
Powiązane efekty kierunkowe:
M1_K01, M1_K03, M1_K05
Powiązane efekty obszarowe:
, ,
- Efekt AiPP_K02
- Rozumie społeczne aspekty praktycznego stosowania zdobytej wiedzy i umiejętności oraz związaną z tym odpowiedzialność, a także prawidłowo identyfikuje i rozstrzyga dylematy związane z wykonywaniem zawodu
Weryfikacja: zadania laboratoryjne
Powiązane efekty kierunkowe:
M1_K04, M1_K06
Powiązane efekty obszarowe:
,