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. 2018/2019
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

Charakterystyka AiPP_W01
Ma wiedzę w zakresie podstaw programowania imperatywnego.
Weryfikacja: kolokwium
Powiązane charakterystyki kierunkowe: M1_W21
Powiązane charakterystyki obszarowe:
Charakterystyka 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 charakterystyki kierunkowe: M1_W20
Powiązane charakterystyki obszarowe:

Profil ogólnoakademicki - umiejętności

Charakterystyka 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 charakterystyki kierunkowe: M1_U18
Powiązane charakterystyki obszarowe:
Charakterystyka 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 charakterystyki kierunkowe: M1_U19
Powiązane charakterystyki obszarowe:
Charakterystyka AiPP_U03
Potrafi wykorzystywać w swoich programach gotowe funkcje biblioteczne i studiować ich dokumentację.
Weryfikacja: zadania laboratoryjne
Powiązane charakterystyki kierunkowe: M1_U19
Powiązane charakterystyki obszarowe:

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka 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 charakterystyki kierunkowe: M1_K01, M1_K03, M1_K05
Powiązane charakterystyki obszarowe:
Charakterystyka 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 charakterystyki kierunkowe: M1_K04, M1_K06
Powiązane charakterystyki obszarowe: