Nazwa przedmiotu:
Algorytmy i podstawy programowania
Koordynator przedmiotu:
dr inż. Marek Gągolewski
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. 2015/2016
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:
e.mini.pw.edu.pl
Uwagi:

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Efekt AiPP_W01
Ma wiedzę w zakresie podstaw programowania imperatywnego.
Weryfikacja: kolokwium
Powiązane efekty kierunkowe: ML_W15
Powiązane efekty obszarowe: X1A_W01, X1A_W04, X1A_W05
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: ML_W15
Powiązane efekty obszarowe: X1A_W01, X1A_W04, X1A_W05

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: ML_U16
Powiązane efekty obszarowe: X1A_U01, X1A_U04
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: ML_U16
Powiązane efekty obszarowe: X1A_U01, X1A_U04
Efekt AiPP_U03
Potrafi wykorzystywać w swoich programach gotowe funkcje biblioteczne i studiować ich dokumentację.
Weryfikacja: zadania laboratoryjne
Powiązane efekty kierunkowe: ML_U16
Powiązane efekty obszarowe: X1A_U01, X1A_U04

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: ML_KS01, ML_KS03, ML_KS05
Powiązane efekty obszarowe: X1A_K01, X1A_K03, X1A_K05
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: ML_KS04, ML_KS06
Powiązane efekty obszarowe: X1A_K04, X1A_K06