Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Algorytmy i programowanie 1

Informacje ogólne

Kod przedmiotu: 103A-CBxxx-ISP-APRO1
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Algorytmy i programowanie 1
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Informatyka techniczna )-Cyberbezpieczeństwo-inż.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 5.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

APRO1

Numer wersji:

1

Skrócony opis:

Przedmiot ma na celu nauczenie podstawowych struktur danych i algorytmów, które stanowią fundament nowoczesnej inżynierii oprogramowania, podstawowych zasad, które towarzyszą algorytmom i strukturom danych oraz podstaw programowania z użyciem języka zorientowanego obiektowo, jakim jest Java. Student po zakończeniu przedmiotu będzie mógł się wykazać wiedzą z zakresu zrozumienia złożoności obliczeniowej, zastosowania języka obiektowego do konstruowania struktur danych, konstruowania prostych algorytmów obliczeniowych. Student zdobędzie umiejętnościami w zakresie implementacji prostych struktur danych w postaci kodu programu, zastosowania odpowiedniego algorytmu do rozwiązania postawionego problemu i zaimplementowania go w postaci kodu programu, posługiwania się zintegrowanym środowiskiem programistycznym oraz sprawnego posługiwania się obiektowym językiem programowania...

Pełny opis:

Przedmiot ma na celu nauczenie podstawowych struktur danych i algorytmów, które stanowią fundament nowoczesnej inżynierii oprogramowania, podstawowych zasad, które towarzyszą algorytmom i strukturom danych oraz podstaw programowania z użyciem języka zorientowanego obiektowo, jakim jest Java. Student po zakończeniu przedmiotu będzie mógł się wykazać wiedzą z zakresu zrozumienia złożoności obliczeniowej, zastosowania języka obiektowego do konstruowania struktur danych, konstruowania prostych algorytmów obliczeniowych. Student zdobędzie umiejętnościami w zakresie implementacji prostych struktur danych w postaci kodu programu, zastosowania odpowiedniego algorytmu do rozwiązania postawionego problemu i zaimplementowania go w postaci kodu programu, posługiwania się zintegrowanym środowiskiem programistycznym oraz sprawnego posługiwania się obiektowym językiem programowania. Student zapozna się również z podstawami konstruowania programu komputerowego w zakresie zastosowania zmiennych, wyrażeń, obiektów, klas, dziedziczenia, konstrukcji programistycznych oraz typów danych.


Treść wykładu

  1. Wprowadzenie (2 godz.)
    Informacje o przedmiocie. Regulamin przedmiotu. Podstawowe pojęcia: obiekt, program, algorytm. Konstrukcja pierwszego programu komputerowego. Uruchomienie programu. Debugger. Wirtualna Maszyna Java. Biblioteki. Zintegrowane środowisko uruchomieniowe. System Linux.
  2. Podstawy algorytmizacji (2 godz.)
    Wstęp do projektowania algorytmu. Dekompozycja problemu. Sprawność i złożoność czasowa algorytmu. Cechy algorytmów. Projektowanie algorytmów. Dane wejściowe i efekt działania algorytmu. Konstruowanie i testowanie prostych algorytmów. Sortowanie bąbelkowe. Wprowadzenie do struktur danych. Komentowanie kodu programu.
  3. Wstęp do obiektów i podstawowy model programowania (7 godz.)
    Tworzenie obiektów. Przechowywanie danych. Proste typy danych, pola. Tworzenie własnych typów danych. Metody i ich przeciążanie. Konstruktor, inicjalizacja i sprzątanie. Operatory. Sterowanie przebiegiem wykonania programu. Zasięg obiektów. Kontrola dostępu: public, private, protected. Mechanizmy sterowania wejściem do programu i wyjściem.
  4. Własności obiektów (4 godz.)
    Pakiety. Kompozycja. Dziedziczenie. Rzutowanie. Polimorfizm. Interfejsy.
  5. Typy danych, kolekcje obiektów, podstawowe struktury danych (4 godz.)
    Obiekt class. Tablice. Łańcuchy znaków. Kontenery. Abstrakcja danych: wielozbiory i lista.
  6. Podstawowe algorytmy sortowania (6 godz.)
    Analiza algorytmów. Sortowanie przez wybieranie, sortowanie przez wstawianie, sortowanie szybkie. Porównanie algorytmów sortujących.
  7. Testowanie programów (2 godz.)
    Projektowanie oprogramowania i testowanie. Obsługa błędów za pomocą wyjątków. Standardowe wyjątki Java. Słowo kluczowe this. Testy jednostkowe.
  8. Dobre praktyki programistyczne (1 godz.)
    Podsumowanie zagadnień związanych z: nazewnictwem, tworzeniem metod, dokumentowanie i formatowanie kodu programu.
  9. Sprawdzenie efektów uczenia się (2 godz.)
    Pierwsze kolokwium po zrealizowaniu trzeciego tematu (1 godz.). Drugie kolokwium kończące przedmiot (1 godz.)



Zakres laboratorium

  1. Organizacja laboratoriów. System operacyjny i polecenia systemu operacyjnego linux. Przesyłanie plików. Standard komunikacyjny ssh. Wirtualna maszyna Java. Uruchomienie pierwszego programu.
  2. Zintegrowane środowisko programistyczne. Uruchamianie programu. Debugger. Komentowanie kodu programu.
  3. Wersjonowanie oprogramowania, umieszczanie kodów programów w repozytorium, praca grupowa. Zapoznanie się z wybranymi bibliotekami. Dokumentacja i sprawozdania.
  4. Testowanie prostych typów danych, operatory, sterowanie przebiegiem wykonania programu.
  5. Konstruowanie metod. Testowanie różnych wersji sortowania bąbelkowego.
  6. Tworzenie własnych typów danych. Konstruktor, inicjalizacja i sprzątanie. Komunikacja obiektów ze światem zewnętrznym.
  7. Ćwiczenia z zakresu zasięgu obiektu, kontroli dostępu: private, public, protected. Zagadnienia wejścia-wyjścia.
  8. Testowanie cech obiektów: interfejsy, polimorfizm, dziedziczenie, kompozycja.
  9. Podstawowe struktury danych. Konstruowanie list i kolejek. Konstrukcje wbudowane języka.
  10. Implementacja wybranych algorytmów sortowania. Porównanie algorytmów sortowania i ocena złożoności i szybkości działania.
  11. Testowanie programów. Obsługa sytuacji wyjątkowych. Testy jednostkowe.
  12. Praca nad zadaniem projektowym - rozdanie i omówienie tematów dla grup projektowych. Omówienie dokumentacji.
  13. Praca nad zadaniem projektowym - ocena przyjętych założeń, ocena szkieletu programu. Przypomnienie dobrych praktyk programistycznych.
  14. Praca nad zadaniem projektowym - sprawdzenie aktualnego stanu zadania. Konsultacje w grupach.
  15. Praca nad zadaniem projektowym - zakończenie i odebranie zadania.
Literatura:

  • Bruce Eckel (2006) - Thinking in Java
  • Cay S. Horstmann (2016) - Core Java Volume I - Fundamentals
  • Robert Sedgewick, Kevin Wayne (2012) - Algorithms
  • Java Language and Virtual Machine Specifications: https://docs.oracle.com/javase/specs/
  • The Java Tutorials: https://docs.oracle.com/javase/tutorial/index.html
Metody i kryteria oceniania:

Sprawdzanie założonych efektów kształcenia realizowane jest przez:

  • ocenę wiedzy i umiejętności związanych z realizacją zadań laboratoryjnych – ocena z wybranych ćwiczeń laboratoryjnych oraz zadania projektowego;
  • ocenę wiedzy wykazanej na dwóch kolokwiach pisemnych.

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. zimowy" (zakończony)

Okres: 2023-10-01 - 2024-02-18
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 43 miejsc więcej informacji
Wykład, 30 godzin, 43 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny, Łukasz Skonieczny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. zimowy" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny, Łukasz Skonieczny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. zimowy" (zakończony)

Okres: 2021-10-01 - 2022-02-22
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. zimowy" (zakończony)

Okres: 2020-10-01 - 2021-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. zimowy" (zakończony)

Okres: 2019-10-01 - 2020-02-21
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Laboratorium, 30 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Daniel Paczesny
Prowadzący grup: Łukasz Dąbała, Krystian Ignasiak, Daniel Paczesny
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103600 - Instytut Telekomunikacji

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)