- Nazwa przedmiotu:
- Języki i techniki programowania cz. 1
- Koordynator przedmiotu:
- Status przedmiotu:
- Obowiązkowy
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Geoinformatyka
- Grupa przedmiotów:
- Obowiązkowe
- Kod przedmiotu:
- 1060-GI000-ISP-1007
- Semestr nominalny:
- 1 / rok ak. 2020/2021
- Liczba punktów ECTS:
- 3
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- __
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- __
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- __
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład15h
- Ćwiczenia30h
- Laboratorium0h
- Projekt0h
- Lekcje komputerowe0h
- Wymagania wstępne:
- __
- Limit liczby studentów:
- -
- Cel przedmiotu:
- Celem przedmiotu jest zapoznanie studentów z programowaniem strukturalnym oraz elementami warsztatu programisty
- Treści kształcenia:
- Wykłady:
1. Elementy programu: pliki nagłówkowe, funkcje, operatory, instrukcje. Kompilacja i konsolidacja programu. Sygnalizacja błędów kompilacji i konsolidacji.
2. Obiekty, zmienne, typy i wartości. Zakresy wartości i operacje dopuszczalne dla danego typu. Użycie operatorów do wyrażania obliczeń. Kontrola typów.
3. Wyrażenia i instrukcje. l-wartości i r-wartości. Instrukcja warunkowa i instrukcje pętli. Deklaracje i definicje funkcji. Parametry formalne i aktualne.
4. Sposoby sygnalizowania błędów. Wyjątki: generowanie i przechwytywanie. Uruchamianie i testowanie programu. Techniki pisania programów przyjaznych w uruchamianiu.
5. Deklaracje i definicje. Zasięgi widoczności, przesłanianie. Przekazywanie argumentów funkcji przez wartość, referencję i ustaloną referencję. Przestrzenie nazw.
6. Klasy. Interfejs i implementacja. Składowe publiczne i prywatne. Przeciążanie operatorów. Typy wyliczeniowe. Niezmienniki typów użytkownika. Struktury.
7. Strumienie wejściowe i wyjściowe. Współpraca z plikami. Sygnalizacja błędów wejścia/wyjścia.
8. Formatowanie wejścia/wyjścia dla danych liczbowych i łańcuchowych. Klasyfikowanie znaków. Praca z plikami binarnymi. Różne standardy kodowania znaków; kody liczbowe.
9. Dynamiczna alokacja i dealokacja pamięci. Operatory new i delete. Destruktory. Wycieki pamięci.
10. Semantyka kopiowania. Kopiowanie głębokie i płytkie. Konstruktor i podstawienie przenoszące. Współpraca z tablicami.
11. Kontenery. Zarządzanie zasobami. Zasada RAII. Zarządzanie wskazaniami. Wykorzystanie iteratorów do przechodzenia po elementach kolekcji.
12. Biblioteka standardowa C++. Porównanie różnych rodzajów kontenerów. Typowe operacje wykonywane na kontenerach. Predykaty.
13. Algorytmy zdefiniowane w bibliotece standardowej. Standardowe obiekty funkcyjne.
14. Metryki kodu źródłowego. Refaktoryzacja. Systematyczne testowanie. Zagadnienia bezpieczeństwa kodu.
15. Różnice między C++ i C. Klasyfikacja języków programowania. Kompilacja, konsolidacja, interpretacja; kompilacja JIT; środowiska z maszyną wirtualną; języki DSL.
Ćwiczenia:
Ćwiczenia obejmują projekty polegające na napisaniu programów o rosnącym stopniu złożoności:
1. Prosty program realizujący obliczenia z interfejsem tekstowym
2. Program wykorzystujący własne typy danych z zestawem testów.
3. Program wykorzystujący kolekcje i algorytmy z biblioteki standardowej w połączeniu z typem użytkownika.
4. Utworzenie własnej biblioteki i wykorzystanie jej w programie współpracującym ze strumieniami plikowymi.
5. Program wraz z zestawem testów jednostkowych
- Metody oceny:
- W trakcie zajęć student może zgromadzić maksymalnie 100 punktów podzielonych na: 50 punktów z zadań programistycznych ocenianych w skali 0-5, 40 punktów za dwa kolokwia przeprowadzane w środku i na koniec semestru w formie pisemnej lub komputerowej na ćwiczeniach oraz 10 punktów za realizację dodatkowych zadań domowych. Do zaliczenia przedmiotu trzeba uzyskać minimum 50% punktów ze sprawdzianów oraz zadań programistycznych. Punkty są przeliczane na oceny wg następujących zakresów: 0-50 punktów – ocena 2, 51-60 punktów – ocena 3.0, 61-70 punktów – ocena 3.5, 71-80 punktów - ocena 4.0, 81-90 punktów – ocena 4.5, 91-100 punktów – ocena 5.0
- Egzamin:
- nie
- Literatura:
- __
- Witryna www przedmiotu:
- -
- Uwagi:
- Oprogramowanie wykorzystywane na ćwiczeniach: zestaw kompilatorów i narzędzi GCC (MinGW), zintegrowane środowisko Eclipse CDT
Efekty uczenia się
Profil praktyczny - wiedza
- Charakterystyka GI.ISP-1007_W01
- Zna podstawowe konstrukcje języka C++
Weryfikacja: Kolokwium
Powiązane charakterystyki kierunkowe:
K_W04
Powiązane charakterystyki obszarowe:
I.P6S_WG
- Charakterystyka GI.ISP-1007_W02
- Zna zasady programowania obiektowego
Weryfikacja: Kolokwium
Powiązane charakterystyki kierunkowe:
K_W04
Powiązane charakterystyki obszarowe:
I.P6S_WG
- Charakterystyka GI.ISP-1007_W03
- Ma podstawową wiedzę na temat sposobów oceny jakości kodu źródłowego, jego testowania i poprawiania
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_W04
Powiązane charakterystyki obszarowe:
I.P6S_WG
- Charakterystyka GI.ISP-1007_W04
- Ma podstawową wiedzę na temat rodzajów języków komputerowych i ich przeznaczenia
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_W04
Powiązane charakterystyki obszarowe:
I.P6S_WG
Profil praktyczny - umiejętności
- Charakterystyka GI.ISP-1007_U01
- Potrafi zdefiniować interfejs oraz implementację klasy
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_U06, K_U15
Powiązane charakterystyki obszarowe:
I.P6S_UU, I.P6S_UW
- Charakterystyka GI.ISP-1007_U02
- Potrafi napisać program komputerowy wykorzystując techniki programowania obiektowego
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_U01, K_U02, K_U05, K_U15
Powiązane charakterystyki obszarowe:
I.P6S_UW, I.P6S_UO, I.P6S_UK
- Charakterystyka GI.ISP-1007_U03
- Potrafi skorzystać z bibliotek i ich dokumentacji
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_U01, K_U02, K_U06, K_U15
Powiązane charakterystyki obszarowe:
I.P6S_UW, I.P6S_UO, I.P6S_UU
- Charakterystyka GI.ISP-1007_U04
- Potrafi napisać program w sposób umożliwiający ponowne wykorzystanie kodu źródłowego
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_U06, K_U15, K_U01
Powiązane charakterystyki obszarowe:
I.P6S_UU, I.P6S_UW
- Charakterystyka GI.ISP-1007_U05
- Potrafi przetestować napisany przez siebie program
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_U03, K_U04, K_U15
Powiązane charakterystyki obszarowe:
I.P6S_UW, I.P6S_UK
Profil praktyczny - kompetencje społeczne
- Charakterystyka GI.ISP-1007_K01
- Potrafi współpracować w zespole rozwiązując przydzielone problemy.
Weryfikacja:
Powiązane charakterystyki kierunkowe:
K_K01, K_K04
Powiązane charakterystyki obszarowe:
I.P6S_KK, I.P6S_KO, I.P6S_KR