Politechnika Warszawska - Centralny System UwierzytelnianiaNie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Podstawy informatyki i programowania

Informacje ogólne

Kod przedmiotu: 103A-INxxx-ISP-PIPR Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Podstawy informatyki i programowania
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Informatyka )-Automatyka i robotyka-inż.-EITI
( Metody wytwarzania oprogramowania )-Informatyka-inż.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 6.00
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

PIPR

Numer wersji:

1

Skrócony opis:

Celem przedmiotu jest przekazanie podstawowej wiedzy dotyczącej podstaw informatyki programowania. Obejmuje ona: podstawy architektury systemów komputerowych, reprezentację bitową liczb i znaków, algorytmizację problemów, pojęcie złożoności obliczeniowej, zasady programowania strukturalnego, podstawowe struktury danych, wyjątki. Wprowadzone zostanie pojęcie niezawodności wraz z objaśnieniem stosowania testów jednostkowych i systemowych. Przedstawione zostaną podstawowe narzędzia programistyczne: środowisko zintegrowane, debugger, system kontroli wersji, generator dokumentacji. Praktyczna nauka podstaw programowania prowadzona będzie w oparciu o język Python. Studenci będą utrwalać wiedzę teoretyczną i zdobywać umiejętności praktyczne dzięki realizacji ciekawych zadań i projektów programistycznych.

Pełny opis:

Celem przedmiotu jest przekazanie podstawowej wiedzy dotyczącej podstaw informatyki programowania. Obejmuje ona: podstawy architektury systemów komputerowych, reprezentację bitową liczb i znaków, algorytmizację problemów, pojęcie złożoności obliczeniowej, zasady programowania strukturalnego, podstawowe struktury danych, wyjątki. Wprowadzone zostanie pojęcie niezawodności wraz z objaśnieniem stosowania testów jednostkowych i systemowych. Przedstawione zostaną podstawowe narzędzia programistyczne: środowisko zintegrowane, debugger, system kontroli wersji, generator dokumentacji. Praktyczna nauka podstaw programowania prowadzona będzie w oparciu o język Python. Studenci będą utrwalać wiedzę teoretyczną i zdobywać umiejętności praktyczne dzięki realizacji ciekawych zadań i projektów programistycznych.



Treść wykładu

  1. Wprowadzenie (2 godz.)
    Informacje o przedmiocie. Regulamin przedmiotu. Podstawowe pojęcia: program, algorytm. Pseudokod i schemat blokowy. Stworzenie pierwszego programu komputerowego. Debugger. Zintegrowane środowisko uruchomieniowe.
  2. Podstawy (2 godz.)
    Podstawy architektury systemów komputerowych. Języki maszynowe, assemblery, języki wysokopoziomowe, kompilatory i interpretery. Podstawowe typy danych i ich reprezentacje bitowe, w tym reprezentacja znaków i łańcuchów znakowych. Algorytmizacja problemów, pojęcie złożoności obliczeniowej. Specyfikacja wymagań, projektowanie, tworzenie zadań.
  3. Podstawowe elementy programu (2 godz.)
    Typy wbudowane, operatory. Podejmowanie decyzji, powtarzanie. Funkcje. Moduły i pakiety.
  4. Paradygmaty programowania (2 godz.)
    Paradygmaty programowania wspierane przez Pythona: zasady programowania strukturalnego, podstawowe struktury danych; wstęp do programowania obiektowego: klasy i instancje.
  5. Struktury danych i algorytmy (4 godz.)
    Tworzenie własnych struktur danych takich jak listy i drzewa. Podstawowe algorytmy: sortowanie, przeszukiwanie binarne.
  6. Pobieranie i zwracanie danych (4 godz.)
    Pobieranie i wypisywanie danych na strumienie standardowe. Praca z plikami (samodzielnie i z użyciem bibliotek: csv, json, xml). Wyrażenia regularne. Sprawdzanie danych wejściowych i formatu plików. Argumenty wywołania programu.
  7. Narzędzia (2 godz.)
    Środowisko zintegrowane, debugger, profiler, linter, system kontroli wersji, generator dokumentacji. Styl kodowania, PEP.
  8. Niezawodność oprogramowania (2 godz.)
    Pojęcie niezawodności oprogramowania, testy jednostkowe i systemowe. Sprawdzanie pokrycia testami. Wyjątki.
  9. Reużywalność kodu (2 godz.)
    O potrzebie tworzenia reużywalnego kodu oraz o wyższości dobrze przetestowanych modułów nad własnymi implementacjami. Przegląd możliwości biblioteki standardowej i wybranych bibliotek zewnętrznych. Generowanie liczb pseudolosowych.
  10. Rekurencja (2 godz.)
    Rekurencyjne typy danych. Rekurencyjne algorytmy: problem wież Hanoi. Przeszukiwanie z nawrotami: problem konika szachowego.
  11. Graficzny interfejs użytkownika (2 godz.)
    Prosty program z GUI.
  12. Sprawdzenie efektów uczenia się (4 godz.)
    Pierwsze kolokwium po zrealizowaniu siódmego tematu (2 godz.). Drugie kolokwium kończące przedmiot (2 godz.)


    1. Zakres projektu
      Projekt to większe zadanie do samodzielnego zrealizowania. Zadnie powinno być ciekawe, np. gra. Konsultowanie, dyskutowanie postępów i ocenianie projektu odbywa się na spotkaniach w laboratorium.

      Zakres laboratorium
      Na kilku początkowych spotkaniach studenci realizują oddzielne zadanie na każdym spotkaniu. Na pozostałych pracują nad małym zadaniem projektowym oraz konsultują duże zadanie, które realizowane jest samodzielnie w ramach Projektu.
      1. Organizacja laboratoriów. Podstawowe polecenia systemu operacyjnego Linux. Przesyłanie plików: ssh. Uruchomienie pierwszego programu. Rozdanie tematów małego zadania projektowego.
      2. Narzędzia: zintegrowane środowisko programistyczne. Debugger. Linter. Kontrola wersji. Rozdanie tematów dużego zadania projektowego, które będzie realizowane w ramach Projektu.
      3. Tworzenie prostych programów: typy danych, operatory, sterowanie przebiegiem wykonania programu, pętle.
      4. Tworzenie funkcji, tworzenie własnych typów danych.
      5. Tworzenie własnych kontenerów: listy, drzewa.
      6. Implementacja prostych algorytmów: sortowanie, przeszukiwanie binarne.
      7. Komunikacja obiektów ze światem zewnętrznym: konsola, pliki.
      8. Obsługa sytuacji wyjątkowych. Testy jednostkowe.
      9. Praca nad małym zadaniem projektowym, omówienie postępów prac nad dużym projektem. Omówienie dokumentacji.
      10. Praca nad małym zadaniem projektowym, omówienie postępów prac nad dużym projektem. Ocena przyjętych założeń, ocena szkieletu programu. Przypomnienie dobrych praktyk programistycznych.
      11. Praca nad małym zadaniem projektowym, omówienie postępów prac nad dużym projektem.
      12. Praca nad małym zadaniem projektowym, omówienie postępów prac nad dużym projektem.
      13. Praca nad małym zadaniem projektowym, omówienie postępów prac nad dużym projektem.
      14. Omówienie i ocena obu projektów.
Literatura:

  • Mark Summerfield: Python 3. Kompletne wprowadzenie do programowania, Wydanie II, Helion, 2010.
  • Niklaus Wirth: Algorytmy + struktury danych = programy, WNT, 2004.
  • David Beazley, Brian K. Jones: Python. Receptury, Wydanie III, Helion, 2014.
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;
  • ocena projektu;
  • ocenę wiedzy wykazanej na dwóch kolokwiach pisemnych.

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. letni" (w trakcie)

Okres: 2020-02-22 - 2020-09-30
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin, 30 miejsc więcej informacji
Projekt, 15 godzin, 30 miejsc więcej informacji
Wykład, 30 godzin, 30 miejsc więcej informacji
Koordynatorzy: Tomasz Śliwiński
Prowadzący grup: Witold Oleszkiewicz, Tomasz Śliwiński, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103100 - Instytut Automatyki i Informatyki Stosowanej

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

Okres: 2019-10-01 - 2020-02-21
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin, 210 miejsc więcej informacji
Projekt, 15 godzin, 210 miejsc więcej informacji
Wykład, 30 godzin, 210 miejsc więcej informacji
Koordynatorzy: Piotr Gawkowski
Prowadzący grup: Piotr Gawkowski, Konrad Grochowski, Wiktor Kuśmirek, Mateusz Modrzejewski, Łukasz Neumann, Witold Oleszkiewicz, Łukasz Skonieczny, Agnieszka Szmurło, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.