From 013a8a4efe9ee8cd2f0340f866d1b3d8975b3fdc Mon Sep 17 00:00:00 2001 From: Krzysztof Jassem Date: Thu, 7 Oct 2021 11:35:32 +0200 Subject: [PATCH] Pierwsze pliki --- ...zajęć na przedmiotach SYI oraz PBR.ipynb | 141 ++++++ laboratoria/.ipynb | 86 ++++ .../01_praca_zespolowa_lab-checkpoint.ipynb | 189 ++++++++ ...kt_badawczo-rozwojowy_lab-checkpoint.ipynb | 95 ++++ ..._koncepcji_projektuBR_lab-checkpoint.ipynb | 70 +++ ...prezentacje_publiczne_lab-checkpoint.ipynb | 67 +++ ...odologia_Prince2Agile_lab-checkpoint.ipynb | 94 ++++ ...i_ciągła_integracja_lab-checkpoint.ipynb | 86 ++++ ...jektu_informatycznego_lab-checkpoint.ipynb | 79 ++++ ...programowaniu_zwinnym_lab-checkpoint.ipynb | 56 +++ ...egracyjne_i_systemowe_lab-checkpoint.ipynb | 76 ++++ ...nienia_użyteczności_lab-checkpoint.ipynb | 75 ++++ ...spekty_użyteczności_lab-checkpoint.ipynb | 76 ++++ ...cena_jakości_systemu_lab-checkpoint.ipynb | 84 ++++ ..._badawczo-rozwojowych_lab-checkpoint.ipynb | 69 +++ ...cami_badawczo-rozwojowymi-checkpoint.ipynb | 63 +++ ...demonstracja_projektu_lab-checkpoint.ipynb | 66 +++ laboratoria/01_praca_zespolowa_lab.ipynb | 189 ++++++++ .../02_projekt_badawczo-rozwojowy_lab.ipynb | 95 ++++ ...prezentacja_koncepcji_projektuBR_lab.ipynb | 83 ++++ .../04_prezentacje_publiczne_lab.ipynb | 67 +++ .../05_metodologia_Prince2Agile_lab.ipynb | 94 ++++ ...otypowanie_i_ciągła_integracja_lab.ipynb | 86 ++++ ...fikacja_projektu_informatycznego_lab.ipynb | 79 ++++ ...stowanie_w_programowaniu_zwinnym_lab.ipynb | 56 +++ ...towanie_integracyjne_i_systemowe_lab.ipynb | 75 ++++ ...brane_zagadnienia_użyteczności_lab.ipynb | 75 ++++ .../11_aspekty_użyteczności_lab.ipynb | 76 ++++ .../12_ocena_jakości_systemu_lab.ipynb | 84 ++++ ...owanie_prac_badawczo-rozwojowych_lab.ipynb | 69 +++ ...dzanie_pracami_badawczo-rozwojowymi.ipynb | 63 +++ .../15_demonstracja_projektu_lab.ipynb | 66 +++ .../01_praca_zespolowa-checkpoint.ipynb | 274 ++++++++++++ ...rojekt_badawczo-rozwojowy-checkpoint.ipynb | 311 +++++++++++++ ...acja_koncepcji_projektuBR-checkpoint.ipynb | 414 ++++++++++++++++++ .../04_metodologia_prince2-checkpoint.ipynb | 153 +++++++ ..._metodologia Prince2Agile-checkpoint.ipynb | 66 +++ ...nie i ciągła integracja-checkpoint.ipynb | 131 ++++++ ..._projektu_informatycznego-checkpoint.ipynb | 126 ++++++ ...e_w_programowaniu_zwinnym-checkpoint.ipynb | 85 ++++ ..._integracyjne_i_systemowe-checkpoint.ipynb | 124 ++++++ ...agadnienia_użyteczności-checkpoint.ipynb | 117 +++++ ...11_aspekty_użyteczności-checkpoint.ipynb | 101 +++++ ...12_ocena_jakości_systemu-checkpoint.ipynb | 167 +++++++ ...prac badawczo-rozwojowych-checkpoint.ipynb | 223 ++++++++++ ...cami badawczo-rozwojowymi-checkpoint.ipynb | 87 ++++ .../15_demonstracja_projektu-checkpoint.ipynb | 54 +++ ...rojekt Badawczo-Rozwojowy-checkpoint.ipynb | 297 +++++++++++++ .../json_script-checkpoint.ipynb | 114 +++++ wykłady/01_praca_zespolowa.ipynb | 274 ++++++++++++ wykłady/02_projekt_badawczo-rozwojowy.ipynb | 311 +++++++++++++ .../03_prezentacja_koncepcji_projektuBR.ipynb | 414 ++++++++++++++++++ wykłady/04_metodologia_Prince2.ipynb | 406 +++++++++++++++++ wykłady/05_metodologia Prince2Agile.ipynb | 66 +++ ...prototypowanie i ciągła integracja.ipynb | 131 ++++++ ...pecyfikacja_projektu_informatycznego.ipynb | 126 ++++++ ...8_testowanie_w_programowaniu_zwinnym.ipynb | 85 ++++ ..._testowanie_integracyjne_i_systemowe.ipynb | 124 ++++++ ...0_wybrane_zagadnienia_użyteczności.ipynb | 117 +++++ wykłady/11_aspekty_użyteczności.ipynb | 101 +++++ wykłady/12_ocena_jakości_systemu.ipynb | 167 +++++++ ...planowanie prac badawczo-rozwojowych.ipynb | 223 ++++++++++ ...dzanie pracami badawczo-rozwojowymi.ipynb | 87 ++++ wykłady/15_demonstracja_projektu.ipynb | 54 +++ wykłady/json_script.ipynb | 114 +++++ wykłady/obrazy/AISearcher.png | Bin 0 -> 179460 bytes 66 files changed, 8373 insertions(+) create mode 100644 Organizacja zajęć na przedmiotach SYI oraz PBR.ipynb create mode 100644 laboratoria/.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/01_praca_zespolowa_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/04_prezentacje_publiczne_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/05_metodologia_Prince2Agile_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/06_prototypowanie_i_ciągła_integracja_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/11_aspekty_użyteczności_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/12_ocena_jakości_systemu_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/13_planowanie_prac_badawczo-rozwojowych_lab-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/14_zarządzanie_pracami_badawczo-rozwojowymi-checkpoint.ipynb create mode 100644 laboratoria/.ipynb_checkpoints/15_demonstracja_projektu_lab-checkpoint.ipynb create mode 100644 laboratoria/01_praca_zespolowa_lab.ipynb create mode 100644 laboratoria/02_projekt_badawczo-rozwojowy_lab.ipynb create mode 100644 laboratoria/03_prezentacja_koncepcji_projektuBR_lab.ipynb create mode 100644 laboratoria/04_prezentacje_publiczne_lab.ipynb create mode 100644 laboratoria/05_metodologia_Prince2Agile_lab.ipynb create mode 100644 laboratoria/06_prototypowanie_i_ciągła_integracja_lab.ipynb create mode 100644 laboratoria/07_specyfikacja_projektu_informatycznego_lab.ipynb create mode 100644 laboratoria/08_testowanie_w_programowaniu_zwinnym_lab.ipynb create mode 100644 laboratoria/09_testowanie_integracyjne_i_systemowe_lab.ipynb create mode 100644 laboratoria/10_wybrane_zagadnienia_użyteczności_lab.ipynb create mode 100644 laboratoria/11_aspekty_użyteczności_lab.ipynb create mode 100644 laboratoria/12_ocena_jakości_systemu_lab.ipynb create mode 100644 laboratoria/13_planowanie_prac_badawczo-rozwojowych_lab.ipynb create mode 100644 laboratoria/14_zarządzanie_pracami_badawczo-rozwojowymi.ipynb create mode 100644 laboratoria/15_demonstracja_projektu_lab.ipynb create mode 100644 wykłady/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/13. planowanie prac badawczo-rozwojowych-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/14_zarządzanie pracami badawczo-rozwojowymi-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/Wykład 2. Projekt Badawczo-Rozwojowy-checkpoint.ipynb create mode 100644 wykłady/.ipynb_checkpoints/json_script-checkpoint.ipynb create mode 100644 wykłady/01_praca_zespolowa.ipynb create mode 100644 wykłady/02_projekt_badawczo-rozwojowy.ipynb create mode 100644 wykłady/03_prezentacja_koncepcji_projektuBR.ipynb create mode 100644 wykłady/04_metodologia_Prince2.ipynb create mode 100644 wykłady/05_metodologia Prince2Agile.ipynb create mode 100644 wykłady/06_prototypowanie i ciągła integracja.ipynb create mode 100644 wykłady/07_specyfikacja_projektu_informatycznego.ipynb create mode 100644 wykłady/08_testowanie_w_programowaniu_zwinnym.ipynb create mode 100644 wykłady/09_testowanie_integracyjne_i_systemowe.ipynb create mode 100644 wykłady/10_wybrane_zagadnienia_użyteczności.ipynb create mode 100644 wykłady/11_aspekty_użyteczności.ipynb create mode 100644 wykłady/12_ocena_jakości_systemu.ipynb create mode 100644 wykłady/13. planowanie prac badawczo-rozwojowych.ipynb create mode 100644 wykłady/14_zarządzanie pracami badawczo-rozwojowymi.ipynb create mode 100644 wykłady/15_demonstracja_projektu.ipynb create mode 100644 wykłady/json_script.ipynb create mode 100644 wykłady/obrazy/AISearcher.png diff --git a/Organizacja zajęć na przedmiotach SYI oraz PBR.ipynb b/Organizacja zajęć na przedmiotach SYI oraz PBR.ipynb new file mode 100644 index 0000000..573e1ae --- /dev/null +++ b/Organizacja zajęć na przedmiotach SYI oraz PBR.ipynb @@ -0,0 +1,141 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Organizacja zajęć na przedmiotach PPB, SYI oraz PBR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przygotowanie do projektu badawczo-rozwojowego (PPB)\n", + "Przygotowanie do projektu badawczo-rozwojowego to przedmiot prowadzony w formie wykładów dla studentów II roku studiów magisterskich na kierunku Informatyka. \n", + "Celem przedmiotu jest zaznajomienie studentów z przebiegiem tworzenia projektu badawczo-rozwojowego. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Systemy informatyczne (SYI)\n", + "Systemy informatyczne to przedmiot prowadzony w formie wykładów i laboratoriów dla studentów III semestru studiów magisterskich na kierunku Analiza i Przetwarzanie Danych. \n", + "Celem przedmiotu jest zaznajomienie studentów z przebiegiem tworzenia systemu informatycznego - na przykładzie projektu badawczo-rozwojowego rozwijanego przez studentów studiów magisterskich na kierunku Informatyka. \n", + "W ramach laboratorium do przedmiotu SYI studenci uczestniczą w tworzeniu projektów badawczo-rozwojowych razem ze studentami Informatyki." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Projekt badawczo-rozwojowy (PBR)\n", + "## Laboratorium przedmiotu SYI\n", + "Projekt badawczo-rozwojowy to przedmiot prowadzony w formie laboratoriów dla studentów II semestru studiów magisterskich na kierunku Informatyka.\n", + "Wskazane jest, aby projekt badawczo-rozwojowy przyczyniał się do rozwoju prac magisterskich członków zespołu.\n", + "\n", + "Studenci Informatyki współpracują ze studentami Analizy i Przetwarzania Danych, tworząc razem zespoły o liczności od trzech do pięciu studentów. Aby umożliwić taką współpracę, laboratoria z przedmiotów SYI i PBR prowadzone są w ten sam dzień tygodnia i o tej samej godzinie. Studenci obu kierunków współpracują w tworzeniu wspólnego projektu badawczo-rozwojowego. \n", + "\n", + "Zespół projektowy powinien zatem składać się ze studentów obu kierunków (idealnie: dwóch studentów informatyki i dwóch studentów analizy danych). Skład zespołów może się kształtować podczas pierwszych trzech laboratoriów. Począwszy od laboratorium nr 4 studenci pracują w stałych zespołach.\n", + "\n", + "Osobą oceniającą pracę całego zespołu projektowego jest opiekun projektu badawczo-rozwojowego. \n", + "\n", + "Opiekunowie otrzymują od wykładowcy przedmiotu PPB proponowane scenariusze wszystkich laboratoriów przedmiotu PBR wraz z wytycznymi dotyczącymi oceniania pracy studentów. Opiekun projektu ma jednak prawo odstąpić od proponowanych scenariuszy - częściowo lub w całości, dostosowując przebieg laboratorium do specyfiki projektu. W każdym wypadku wymaga się jednak, aby praca projektowa była udokumentowana.\n", + "\n", + "## Ocena końcowa z przedmiotu PBR\n", + "Studentom informatyki ocenę końcową z laboratorium wystawia opiekun projektu badawczo-rozwojowego.\n", + "\n", + "## Ocena końcowa z laboratorium SYI\n", + "Studentom analizy i przetwarzania danych ocenę końcową wystawia prowadzący laboratorium na wniosek opiekuna projektu badawczo-rozwojowego.\n", + "\n", + "## Umiejętności nabywane podczas przedmiotu PBR\n", + "Student informatyki powinien nabyć następujące umiejętności:\n", + "* tworzenie koncepcji projektu badawczo-rozwojowego,\n", + "* implementacja systemu informatycznego w metodyce zwinnej,\n", + "* stosowanie praktyki ciągłej integracji w rozwoju systemu informatycznego,\n", + "* wdrożenie systemu będącego wynikiem projektu badawczo-rozwojowego w praktyce gospodarczej.\n", + "\n", + "## Umiejętności nabywane podczas laboratorium SYI\n", + "Student analizy i przetwarzania danych powinien nabyć następujące umiejętności:\n", + "* dostarczanie i analiza danych do systemu informatycznego,\n", + "* tworzenie dokumentacji projektowej,\n", + "* przygotowanie i prowadzenie testów funkcjonalnych,\n", + "* opracowanie raportów użyteczności,\n", + "* tworzenie skryptów wspomagających implementację i testowanie.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Organizacja wykładów PPB oraz SYI\n", + "Wykłady z przedmiotów SYI i PBR prowadzone są równolegle, aby umożliwić współpracę studentów obu kierunków podczas laboratoriów PRB oraz SYI.\n", + "\n", + "### Zasady zaliczenia wykładu\n", + "Wykład może być zaliczony albo na podstawie punktów uzyskanych za rozwiązywanie testów podawanych na wykładzie, albo poprzez egzamin końcowy. \n", + "\n", + "Za prawidłowe odpowiedzi na pytania testowe podawane podczas wykładu studenci otrzymują punkty (1 punkt za prawidłową odpowiedź). Testy rozwiązywane mogą być na dowolnych urządzeniach, które dysponują przeglądarką internetową. System do testów jest osiągalny pod adresem: \n", + " **cybertest2.wmi.amu.edu.pl** \n", + "Logowanie do systemu odbywa się za pomocą standardowych danych dostępowych na WMI. \n", + "\n", + "Wykładowca zobowiązuje się do przeprowadzenia testów z minimum 120 pytaniami podczas całego kursu (standardowo: 5 pytań powtórkowych na początku wykładu i 5 pytań na końcu wykładu). \n", + "\n", + "### Zwolnienia z egzaminu\n", + "Student zwolniony jest z egzaminu z oceną dostateczny plus lub wyższą, wynikającą z punktów zdobytych za rozwiązanie zadań testowych podawanych na wykładach. \n", + "\n", + "Studenci niespełniający powyższego kryterium zdają egzamin obejmujący materiał przedstawiany na wykładach. Studenci mogą zdawać egzamin również w sytuacji, gdy nie satysfakcjonuje ich ocena uzyskana na podstawie zdobytych punktów.\n", + "\n", + "### Skala ocen z wykładu \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \\n\n", + "
Liczba prawidłowych odpowiedzi Ocena
100-1205
90-994,5
80-894
70-793,5
poniżejegzamin
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb b/laboratoria/.ipynb new file mode 100644 index 0000000..297bfe2 --- /dev/null +++ b/laboratoria/.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

6. Prototypowanie i ciagła integracja[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 6\n", + "Celem laboratorium jest rozpoczęcie prac implementacyjnych z zastosowaniem ciągłej integracji." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Zorganizowanie repozytorium\n", + "Załóżcie repozytorium Git na serwerze wydziałowym. Wstawcie do niego plik Readme. \n", + "Sklonujcie repozytorium na maszynach lokalnych deweloperów. \n", + "Zintegrujcie Wasz projekt w systemie Jira z wydziałowym serwerem Git (w tym celu zgłoście takie zadania w wydziałowym systemie Helpdesk, podając nazwę repozytorium Git oraz nazwę projektu Jira). \n", + "Wykażcie, że integracja się powiodła, umieszczając w Teamsach zrzut ekranu obrazujący integrację Waszego projektu z Gitem. (Integracja przebiegła pomyślnie, jeśli informacja o commicie w systemie Git pojawia się automatycznie w systemie Jira.) \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 2. Nasz prototyp\n", + "Określ typ prototypu opracowanego na zajęciach (na skali: pionowy - poziomy). Zilustruj projektowany prototyp za pomocą zaktualizowanej w stosunku do laboratorium nr 2 makiety dynamicznej. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## 3. Serwer ciągłej integracji\n", + "Połączcie Wasze wydziałowe repozytorium Git z Jenkinsem (jenkins.wmi.amu.edu.pl). \n", + "W celu utworzenia pipeline’u dla Waszego projektu utwórzcie zgłoszenie w systemie Helpdesk, podając login osoby odpowiedzialnej za projekt (sXXXXXX), nazwę projektu, a także ewentualne loginy innych członków zespołu, którzy mają mieć dostęp do projektu w Jenkinsie. \n", + "Stwórzcie *Jenkinsfile* budujący Waszą aplikację oraz uruchamiający prosty test. \n", + "\n", + "Rozwiązaniem zadania będzie poprawnie zakończony pipeline zdefiniowany na podstawie *Jenkinsfile* (który musi zostać umieszczony w Waszym repozytorium Git). \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Pierwszy sprint!\n", + "Zalóżcie pierwszy sprint. \n", + "Przenieście wybrane elementy (\"issues\") z backloga do sprintu, podzielcie je na zadania, przypiszcie zadania ludziom i skomentujcie je (w ich opisie). \n", + "Oszacujcie w punktach pracochłonność wykonania każdego zadania." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "06. Prototypowanie i ciagła integracja[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/01_praca_zespolowa_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/01_praca_zespolowa_lab-checkpoint.ipynb new file mode 100644 index 0000000..5d54c55 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/01_praca_zespolowa_lab-checkpoint.ipynb @@ -0,0 +1,189 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

1. Organizacja pracy zespołowej[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proponowana punktacja zadań wykonywanych na przedmiocie PBR\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Typ zadania Liczba punktów
Zadania na laboratoriach13 x 30 = 390
Sprinty6 x 10 = 60
Ocena końcowa za wynik projektu150
Suma600
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proponowana skala ocen na przedmiocie PBR\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Liczba punktów Ocena
500-6005
450-4994,5
400-4494
350-3993,5
300-3493
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 1\n", + "Celem laboratorium jest zamodelowanie sytuacji, w której zespół ludzi ma do wykonania zadanie wymagające zróżnicowanych umiejętnosci. Zadanie wykonywane jest pod presją czasu. \n", + "Zadanie polega na opracowaniu założeń projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Organizacja zespółów projektowych na laboratorium nr 1\n", + "Studenci organizaują się w zespoły ok. 4-osobowe (liczba osób w zespole może się wahać) na przykład w następujący sposób: \n", + "Studenci przedmotu PBR lub przedmiotu Systemy Informatyczne ogłaszają na mediach społecznościowych swoje oczekiwania w stosunku do projektu realizowanego łącznie na przedmiotach PBR i SYI, np.\n", + "1. \"Przedstawiam krótką reklamówkę swojego projektu. Potrzebuję do zespołu...\n", + "2. \"Chcę dołączyć do zespołu z określonym projektem magisterskim\". Specjalizuję się w...\n", + "3. \"Chcę dołączyć do zespołu, który będzie dopiero definiował projekt systemu informatycznego.\"\n", + "\n", + "Na podstawie tych informacji tworzone są zespoły, które będą współpracować na laboratorium nr 1. \n", + "Idealny skład zespołu to: dwie osoby z informatyki i dwie osoby z analizy danych, ale ten warunek nie jest konieczny. Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie. \n", + "Podczas Laboratorium 1. liderem zespołu jest osoba, która uzyskała najwyższy wynik w teście na lidera podczas wykładu. (Lider może ulec zmianie do zajęć nr 3 włącznie). \n", + "Wskazane jest, aby w każdym zespole znalazły się osoby o zróznicowanych umiejętnościach:\n", + "* Wizjoner - osoba, która podejmuje decyzję o kierunku wspólnych prac: jaki projekt opracowujemy na Laboratorium 1. (Projekt może ulec zmianie do zajęć nr 3 włącznie).\n", + "* Specjalista – grafik; jego zadaniem będzie stworzenie rysunku – projektu interfejsu użytkownika - najlepiej za pomocą jakiegoś narzędzia.\n", + "* Bibliotekarz; jego zadaniem będzie opisanie wizji projektu słowami.\n", + "\n", + "Wskazane (ale nie wymagane) jest, aby w grupie znaleźli się studenci o różnych osobowościach (względem motywacji i podejścia do pracy)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proponowany plan laboratorium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie 1. Zorganizowanie zespołu projektowego.\n", + "Czas wykonania: 30 minut. \n", + "Rezultat: Dokument, zawierający informacje o liderze i pozostałych członkach zespołu oraz o opiekunie zespołu. \n", + "Dla lidera należy podać: \n", + " * Jego preferowany typ przywództwa wg charaketrystyki z wykładu,\n", + " * Typ motywacji i podejścia do zadań (np. A1) według klasyfikacji podanej na wykładzie.\n", + " \n", + "Dla pozostałych członków zespołu: \n", + " * Rola w zespole (deweloper, bibliotekarz, grafik itp.),\n", + " * Typ motywacji i podejścia do zadań (np. A1) według klasyfikacji podanej na wykładzie.\n", + " \n", + "Opiekun zespołu\n", + " * Jeśli praca związana jest z projektem mgr, to opiekunem automatycznie zostaje opiekun projektu mgr.\n", + " * Jeśli praca nie jest związana z projektem mgr, to opiekunem moze zostać dowolny pracownik WMI UAM, jeśli wyrazi zgodę.\n", + " * W pozostałych wypadkach opiekunem pozostaje wykładowca.\n", + " \n", + "Maksymalna ocena: 5 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie 2. Burza mózgów i praca indywidualna\n", + "Czas: 30 minut.\n", + "\n", + "Przebieg: Studenci dyskutują nad wizją projektu, którą chcą przedstawić jako efekt pracy na Laboratorium nr. 1. Może to być projekt, który zespół planuje implementować na przyszłych zajęciach. Jeśli takich planów nie ma, można opracować wizję systemu do prowadzenia testów na wykładach prowadzonych na WMI (lepszego od cybertest!). \n", + "\n", + "Następnie każdy student indywidualnie szkicuje wizję projektu na kartce (w postaci interfejsu użytkownika lub schematu działania) i opisuje działanie systemu za pomocą 3-5 zdań. \n", + "\n", + "Rezultat: Tyle dokumentów, ilu jest studentów w grupie. Kartki najlepiej sfotografować i umieścić w systemie ustalnym z opiekunem (np. Google Drive, Teams).\n", + " \n", + "Maksymalna ocena: 10 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Zadanie 3. Praca zespołowa\n", + "Czas: 30 minut. \n", + " \n", + "Cel: przedstawienie wspólnej wizji projektu. \n", + "\n", + "Rezultat:\n", + " * jeden szkich interfejsu lub schematu działania wykonany w dowolnym programie graficznym (np. figma);\n", + " * jeden dokument (10-15 zdań) opisujący działanie projektowanego systemu.\n", + "\n", + "Maksymalna ocena: 15 punktów " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "subtitle": "01. Praca zespołowa[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb new file mode 100644 index 0000000..2236a48 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy_lab-checkpoint.ipynb @@ -0,0 +1,95 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

2. Koncepcja projektu badawczo-rozwojowego[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium\n", + "\n", + "Celem laboratorium jest opracowanie koncepcji projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Organizacja zespółów projektowych na laboratorium nr 2\n", + "W stosunku do laboratorium nr. 1 studenci mogą zorganizować się w nowe grupy. \n", + "Można opracować koncepcję zupełnie nowego projektu badawczo-rozwojowego lub kontynuować projekt z poprzednich zajęć. Liderem zespołu może być dowolna osoba. \n", + "\n", + "W mocy pozostaje wymaganie co do składu zespołu: w zespole powinna znaleźć się co najmnniej jedna osoba z każdego kierunku. (Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie.)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium nr 2\n", + "\n", + "## Zadanie 1. Makieta dynamiczna \n", + "Skonstruujcie jeden prototyp wymarzonego systemu w postaci mockupu dynamicznego.\n", + "\n", + "Przykładowa aplikacja on-line: https://www.figma.com. \n", + "Wybór narzędzia należy jednak do Was. Omówienie bezpłatnych narzędzi do makiet dynamicznych: \n", + "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n", + "Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 2. Rozwiązania konkurencyjne \n", + "1. Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "2. Przeprowadźcie analizę porównawczą Waszego pomysłu i rozwiązań konkurencyjnych. \n", + "Wybierzcie 3-4 zasady z 9 zasad sukcesu produktu high-tech, według których wykażecie przewagę Waszego rozwiązania nad rozwiązaniami konkurecyjnymi \n", + "Maksymalna ocena: 5 punktów\n", + "\n", + "## Zadanie 3. Poziomy gotowości technologicznej\n", + "Przedstawcie, jak wyobrażacie sobie poszczególne poziomy gotowości technologicznej dla Waszego projektu. \n", + "Maksymalna ocena: 5 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "02. Projekt badawczo-rozwojowy[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR_lab-checkpoint.ipynb new file mode 100644 index 0000000..22e8996 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR_lab-checkpoint.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

3. Prezentacja koncepcji projektu B+R[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cel i efekty laboratorium\n", + "Celem laboratorium jest opracowanie koncepcji projektu B+R: (produktu HT / usługi / przedsięwzięcia), który będzie realizowany w ramach projektu zespołówego.\n", + "\n", + "Wynikami pracy będą:\n", + " * jedno-zdaniowy \"elevator pitch\" \n", + " * prezentacja w formie slajdów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadania\n", + "### Zadanie 1. Elevator pitch w jednym zdaniu - 5 punktów \n", + "Każdy członek grupy przygotowuje indywidualnie jednozdaniowy \"elevator pitch\" wg wzorca podanego na wykładzie.\n", + "Następnie grupa opracowuje jeden wzorzec jako syntezę najlepszych pomysłów indywidualnych członków.\n", + "Odpowiedź zawiera n (liczba członków zespołu) rozwiązań + jedno finalne.\n", + "\n", + "### Zadanie 2. Prezentacje dla inwestora - 15 punktów \n", + "Każdy członek grupy przygotowuje indywidualnie prezentację dla inwestora wg wzorca podanego na wykładzie. UWAGA: slajd dotyczący prognozy finansowej należy raczej pominąć. Zamiast niego obowiązkowo powinien znaleźć się slajd(y) możliwie szczegółowo wyjaśniający(e), jaka część projektu zostanie prawdopodobnie zrealizowana podczas kursu SI.\n", + "Odpowiedź zawiera n (liczba członków zespołu) rozwiązań. \n", + "Uwaga: Obowiązkowym slajdem jest analiza konkurencji (która może być wykonana wspólnie, a przedstawiona na różne sposoby).\n", + "\n", + "### Zadanie 3. Końcowa wersja prezentacji - 10 punktów\n", + "W odpowiedzi na tę misję zostawcie prezentację, która Waszym zdaniem jest syntezą najlepszych części prezentacji indywidualnych." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/04_prezentacje_publiczne_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/04_prezentacje_publiczne_lab-checkpoint.ipynb new file mode 100644 index 0000000..3bd72e3 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/04_prezentacje_publiczne_lab-checkpoint.ipynb @@ -0,0 +1,67 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

4. Publiczne prezentacje projektów[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 4\n", + "\n", + "Celem laboratorium będzie publiczne przedstawienie koncepcji projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "Podczas laboratorium poszczególne zespoły studentów przedstawiać będą: jednozdaniowy \"elevator pitch\" oraz prezentację dotyczącą swojego pomysłu. \n", + "\n", + "Widownią będą studenci wszystkich grup projektowych. Na ocenę prezentacji będą miały wpływ odczucia widowni - zebrane za pomocą ankiet.\n", + "\n", + "Maksymalna ocena: 30 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "01. Prezentacje publiczne[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/05_metodologia_Prince2Agile_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/05_metodologia_Prince2Agile_lab-checkpoint.ipynb new file mode 100644 index 0000000..4a5fcb9 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/05_metodologia_Prince2Agile_lab-checkpoint.ipynb @@ -0,0 +1,94 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

5. Metodyka Prince2Agile[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 5\n", + "Celem laboratorium jest rozpoczęcie prac w metodologii Prince2Agile." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie 1. Zadanie związane z metodologią Prince2\n", + "TO DO \n", + "Ocena maksymalna: 10 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Zadanie 2. Zaczynamy pracować zwinnie\n", + "Podzielcie się rolami w projekcie i opiszcie, jak widzicie swoje zadania w projekcie:\n", + "* zespół deweloperski, a w nim scrum master\n", + "* zespół product ownera, a w nim tester\n", + "\n", + "Opracujcie 5-punktowy manifest pracy w Waszym zespole. \n", + "Ocena maksymalna: 10 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Zadanie 3. Zakładamy backlog \n", + "* Utwórzcie projekt w systemie JIRA. \n", + "* Opracujcie profile członków grupy (zdjęcia mile widziane). \n", + "* Wpiszcie do backloga \"user stories\" związane z projektem - założcie w tym momencie, że wykonacie cały produkt high-tech.\n", + "* Sprobujcie oszacować czas realizacji każdego \"user story\" za pomocą punktów, zakładając że 10 punktów odpowiada sumie pracy całego zespołu podczas jednego tygodniowego sprintu. \n", + "Ocena maksymalna: 10 punktów " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "05. Metodologia Prince2Agile[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/06_prototypowanie_i_ciągła_integracja_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/06_prototypowanie_i_ciągła_integracja_lab-checkpoint.ipynb new file mode 100644 index 0000000..361f8b7 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/06_prototypowanie_i_ciągła_integracja_lab-checkpoint.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

6. Prototypowanie i ciagła integracja[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 6\n", + "Celem laboratorium jest rozpoczęcie prac implementacyjnych z zastosowaniem ciągłej integracji." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Zorganizowanie repozytorium\n", + "Załóżcie repozytorium Git na serwerze wydziałowym. Wstawcie do niego plik Readme. \n", + "Sklonujcie repozytorium na maszynach lokalnych deweloperów. \n", + "Zintegrujcie Wasz projekt w systemie Jira z wydziałowym serwerem Git (w tym celu zgłoście takie zadania w wydziałowym systemie Helpdesk, podając nazwę repozytorium Git oraz nazwę projektu Jira). \n", + "Wykażcie, że integracja się powiodła, umieszczając w Teamsach zrzut ekranu obrazujący integrację Waszego projektu z Gitem. (Integracja przebiegła pomyślnie, jeśli informacja o commicie w systemie Git pojawia się automatycznie w systemie Jira.) \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 2. Nasz prototyp\n", + "Określ typ prototypu opracowanego na zajęciach (na skali: pionowy - poziomy). Zilustruj projektowany prototyp za pomocą zaktualizowanej w stosunku do laboratorium nr 2 makiety dynamicznej. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## 3. Serwer ciągłej integracji\n", + "Połączcie Wasze wydziałowe repozytorium Git z Jenkinsem (jenkins.wmi.amu.edu.pl). \n", + "W celu utworzenia pipeline’u dla Waszego projektu utwórzcie zgłoszenie w systemie Helpdesk, podając login osoby odpowiedzialnej za projekt (sXXXXXX), nazwę projektu, a także ewentualne loginy innych członków zespołu, którzy mają mieć dostęp do projektu w Jenkinsie. \n", + "Stwórzcie *Jenkinsfile* budujący Waszą aplikację oraz uruchamiający prosty test. \n", + "\n", + "Rozwiązaniem zadania będzie poprawnie zakończony pipeline zdefiniowany na podstawie *Jenkinsfile* (który musi zostać umieszczony w Waszym repozytorium Git). \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Pierwszy sprint!\n", + "Zalóżcie pierwszy sprint. \n", + "Przenieście wybrane elementy (\"issues\") z backloga do sprintu, podzielcie je na zadania, przypiszcie zadania ludziom i skomentujcie je (w ich opisie). \n", + "Oszacujcie w punktach pracochłonność wykonania każdego zadania." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "06. Prototypowanie i ciagła integracja[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego_lab-checkpoint.ipynb new file mode 100644 index 0000000..de43fad --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego_lab-checkpoint.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

7. Specyfikacja projektu informatycznego[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 7\n", + "Celem laboratorium jest opracowanie specyfikacji systemu informatycznego będącego wynikiem projektu B+R.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Aktorzy i ich oczekiwania\n", + "Dla tworzonego systemu:\n", + "* Określ charakterystykę poszczególnych użytkowników systemu.\n", + "* Sporządź listę aktor - cel.\n", + "* Sporządź tabelę IN-OUT. \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + " \n", + "## Zadanie 2. Specyfikacja wymagań\n", + "Sporządź specyfikację wymagań funkcjonalnych i niefunkcjonalnych: \n", + "* każde wymaganie funckjonalne w osobnej tabelce; \n", + "* wszystkie wymagania niefunkcjonalne w jednej tabelce razem. \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 3. Przypadki użycia\n", + "Wykonaj pełną specyfikację trzech wybranych przypadków użycia swojego systemu. \n", + "\n", + "Maksymalna ocena: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "07. Specyfikacja projektu informatycznego[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym_lab-checkpoint.ipynb new file mode 100644 index 0000000..10ad52f --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym_lab-checkpoint.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

8. Testowanie w programowaniu zwinnym[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 8\n", + "Celem laboratorium jest opracowaniu testów mających zastosowanie w programowaniu zwinnnym.\n", + "\n", + "# Proponowany plan laboratorium\n", + "TO DO" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "08. Testowanie w programowaniu zwinnym[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe_lab-checkpoint.ipynb new file mode 100644 index 0000000..2a4d56b --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe_lab-checkpoint.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

9. Testowanie integracyjne i systemowe[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 9\n", + "Celem laboratorium jest opracowanie planu testów integracyjnych i systemowych oraz przeprowadzenie prostego eksperymentu z testowaniem automatycznym." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Testy integracyjne\n", + "TO DO \n", + "Maksymalna ocena: 10 punktów\n", + "\n", + " ## Zadanie 2. Testy systemowe\n", + "Opracujcie plan testów, zawierający przypadki testowe. \n", + "Należy założyć, że testy mają obejmować co najmniej 3 typy testowania. \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 3. Testy automatyczne\n", + "Korzystając z frameworku Selenium opracujcie test automatyczny, sprawdzający jakąś podstawową funkcjonalność Waszego systemu (np. logowanie.) \n", + "(W zastępstwie można opracować test automatyczny logowania do jednego z systemów: USOS, Jira lub Git.) \n", + "Jako wynik zadania umieśćcie nagranie testu. \n", + "\n", + "Maksymalna ocena: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "09. Testowanie integracyjne i systemowe[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności_lab-checkpoint.ipynb new file mode 100644 index 0000000..62d492a --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności_lab-checkpoint.ipynb @@ -0,0 +1,75 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

10. Wybrane zagadnienia użyteczności[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 10\n", + "Celem laboratorium jest nabycie umiejętności analizy systemu informatycznego pod kątem jego użyteczności.\n", + "Stworzony zostanie ponadto szablon raportu użyteczności." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "## Zadanie 1. Analiza użyteczności systemu\n", + "Przeanalizujcie treści z wykładu pod kątem Waszego projektu. Dla każdej **wskazówki do tworzenia użytecznego systemu informatycznego** określ (i omów), czy: \n", + "A) została przez Was już uwzględniona \n", + "B) nie została przez Was uwzględniona, bo nie dotyczy projektu \n", + "C) nie została przez Was uwzględniona, choć powinna, ale jest za mało czasu, by to zmienić \n", + "D) nie została przez Was uwzględniona, ale uda się to nadrobić. \n", + "\n", + "Maskymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 2. Przygotowanie raportu użyteczności\n", + "Przygotujcie raport badania użyteczności dla Waszego systemu - pozostawiając do wypełnienia przebieg badania i wnioski z badania (dokumenty te zostaną wypełnione na przyszłych zajęciach). \n", + "\n", + "Maksymalna ocena: 20 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "10. Wybrane zagadnienia użyteczności", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/11_aspekty_użyteczności_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/11_aspekty_użyteczności_lab-checkpoint.ipynb new file mode 100644 index 0000000..5bfd253 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/11_aspekty_użyteczności_lab-checkpoint.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

11. Aspekty użyteczności[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 11\n", + "Celem laboratorium jest przananalizowanie użyteczności projektowanego systemu pod różnymi aspektami." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Aspekty użyteczności\n", + "Wybierzcie z wykładu 15 pytań, które są najbardziej adekwatne do Waszej aplikacji i odpowiedzcie na nie. \n", + "Wnioskiem z analizy ma być zmiana w backlogu Waszego projektu. Omówcie tę zmianę. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 2. Diagram Venna\n", + "Opracujcie diagram Venna dla użytkowników Waszej aplikacji. \n", + "Odpowiedzcie na pytanie, jaki wpływ na zadania planowane przez Waszą grupę może mieć ten diagram. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 3. Wypełnienie raportu użyteczności\n", + "Przeprowadźcie badanie użyteczności zgodnie z szablonem raportu przygotowanym na laboratorium nr 10. Wnioski z raportu wpiszcie do szablonu.\n", + "\n", + "Ocena maksymalna: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "11. Aspekty użyteczności[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/12_ocena_jakości_systemu_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/12_ocena_jakości_systemu_lab-checkpoint.ipynb new file mode 100644 index 0000000..4314bc4 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/12_ocena_jakości_systemu_lab-checkpoint.ipynb @@ -0,0 +1,84 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

12. Ocena jakości systemu informatycznego[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 12\n", + "Celem laboratorium jest określenie funkcji, która wylicza ogólną jakość projektowanego systemu na podstawie oceny jego poszczególnych cech." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "## Zadanie 1. Metryki kodu\n", + "Zbadajcie LOC Waszego systemu i na tej podstawie obliczcie wykonane już punkty funkcyjne. \n", + "Obliczcie metryki Haelsteada dla wybranej funkcji w Waszym kodzie i porównajcie z własnym doświadczeniem. \n", + "Dla wybranej klasy zróbcie analizę metryk WMC i RFC. \n", + "\n", + "Ocena maksymalna: 10 punktów \n", + "\n", + "## Zadanie 2. Jakość podobnego systemu\n", + "Wyszukajcie istniejącą, dostępną aplikację, możliwie najbardziej zbliżoną do Waszej pod względem funkcjonalności i użyteczności. \n", + "Oceńcie punktowo (np. w skali od 1 do 10) jakość systemu - każdy członek grupy osobno:\n", + " * każdą z cech systemu podanych w schemacie FURPS, CUPRIMDA lub CUPRIMDSO (schemat do wyboru).\n", + " * ogólną satysfakcję z systemu (w przypadku CUPRIMDSO ogólna satysfakcja zawarta jest w cesze oznaczonej przez O, więc nie ma sensu jej powtarzać). \n", + " \n", + "Wyniki oceny zaprezentujcie w tabeli (Excel).\n", + "Zaproponujcie wzór dla zdefiniowania ogólnej satysfakcji z systemu jako funkcji ocen cząstkowych, tak aby korelacja wyników ze wzoru i ocen użytkowników była bliska 1. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 3. Jakość Waszego systemu.\n", + "Poddajcie Wasz system (ostatnia działająca wersja) pod ocenę pięciu osobom spoza Waszej grupy dokładnie według tych samych zasad, jak w zadaniu 2. \n", + "Sprawdżcie korelację wyników operatora agregacji z ocenami ogólnymi systemu (czy oceny wyliczane za pomocą agregacji \"zgadzają się\" z ocenami ludzkimi). \n", + "\n", + "Ocena maksymalna: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "12. Ocena jakości systemu informatycznego[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/13_planowanie_prac_badawczo-rozwojowych_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/13_planowanie_prac_badawczo-rozwojowych_lab-checkpoint.ipynb new file mode 100644 index 0000000..265ec3e --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/13_planowanie_prac_badawczo-rozwojowych_lab-checkpoint.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

13. Planowanie prac badawczo-rozwojowych[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 13\n", + "\n", + "Celem laboratorium jest opracowanie harmonogramu wstecznego dla zadań wykonanych w trakcie przedmiotu Projekt badawczo-rozwojowy. Harmonogram uwzględniać ma ponadto zadania planowane do wykonania w drugim semestrze." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "Utwórzcie harmonogram wykonania zadań utworzony w programie MS-Project. \n", + "Harmonogram powinien odtwarzać autentyczne terminy zadań już wykonanych. \n", + "Ponadto harmonogram zawierać ma zadania do wykonania do końca 1. semestru oraz w 2. semestrze przedmiotu Projekt badawczo-rozwojowy. \n", + "Dokumentację wyniku zadania będą stanowić:\n", + "* plik .mpp,\n", + "* wydruk wykresu Gantta (zawierający m.in. procent aktualnego wykonania każdego zadania),\n", + "* odpowiednie raporty potwierdzające poprawność przydzielenia zasobów,\n", + "* dotychczasową estymację kosztów wykonania projektu; ceny jednostkowe za zasoby (w tym osobogodziny) powinny opierać się na udokumentowanych źródłach." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "13. Planowanie prac badawczo-rozwojowych[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/14_zarządzanie_pracami_badawczo-rozwojowymi-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/14_zarządzanie_pracami_badawczo-rozwojowymi-checkpoint.ipynb new file mode 100644 index 0000000..3826d98 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/14_zarządzanie_pracami_badawczo-rozwojowymi-checkpoint.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

14. Zarządzanie pracami badawczo-rozwojowymi[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cel laboratorium nr 14\n", + "Celem laboratorium jest przygotowanie publicznej demonstracji projektu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plan laboratorium\n", + "Podczas laboratorium studenci demonstrują wykonany system informatyczny swojemu opiekunowi. \n", + "Opiekun podejmuje decyzję, czy system jest na 6. poziomie gotowości technicznej. \n", + "W przypadku pozytywnym wyraża zgodę na wykonanie demonstracji publicznej. " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "01. Praca zespołowa[laboratorium]", + "title": "Zarządzanie pracami badawczo-rozwojowymi", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/.ipynb_checkpoints/15_demonstracja_projektu_lab-checkpoint.ipynb b/laboratoria/.ipynb_checkpoints/15_demonstracja_projektu_lab-checkpoint.ipynb new file mode 100644 index 0000000..cae11d7 --- /dev/null +++ b/laboratoria/.ipynb_checkpoints/15_demonstracja_projektu_lab-checkpoint.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

15. Demonstracja wyników projektu badawczo-rozwojowego - wnioski[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cel laboratorium nr 15\n", + "Celem laboratorium jest wyciągnięcie wniosków z demonstracji projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Dyskusja i ocena projektu\n", + "Opiekun projektu przeprowadza z zespołem projektowym dyskusję na temat demonstracji wyników projektu badawczo-rozwojowego. Wynikiem dyskusji jest ocena projektu.\n", + "## Ocena końcowa z przedmiotu Projekt badawczo-rozwojowy.\n", + "Opiekun wystawia oceny końcowe studentom. Oceny mogą się różnić między osobami w grupie, jeśli:\n", + " * skład grupy zmieniał się na początkowych zajęciach,\n", + " * niektórzy studenci nie brali udziału we wszystkich zajęciach." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "15. Demonstracja projektu[laboratorium]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/01_praca_zespolowa_lab.ipynb b/laboratoria/01_praca_zespolowa_lab.ipynb new file mode 100644 index 0000000..5d54c55 --- /dev/null +++ b/laboratoria/01_praca_zespolowa_lab.ipynb @@ -0,0 +1,189 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

1. Organizacja pracy zespołowej[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proponowana punktacja zadań wykonywanych na przedmiocie PBR\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Typ zadania Liczba punktów
Zadania na laboratoriach13 x 30 = 390
Sprinty6 x 10 = 60
Ocena końcowa za wynik projektu150
Suma600
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proponowana skala ocen na przedmiocie PBR\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Liczba punktów Ocena
500-6005
450-4994,5
400-4494
350-3993,5
300-3493
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 1\n", + "Celem laboratorium jest zamodelowanie sytuacji, w której zespół ludzi ma do wykonania zadanie wymagające zróżnicowanych umiejętnosci. Zadanie wykonywane jest pod presją czasu. \n", + "Zadanie polega na opracowaniu założeń projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Organizacja zespółów projektowych na laboratorium nr 1\n", + "Studenci organizaują się w zespoły ok. 4-osobowe (liczba osób w zespole może się wahać) na przykład w następujący sposób: \n", + "Studenci przedmotu PBR lub przedmiotu Systemy Informatyczne ogłaszają na mediach społecznościowych swoje oczekiwania w stosunku do projektu realizowanego łącznie na przedmiotach PBR i SYI, np.\n", + "1. \"Przedstawiam krótką reklamówkę swojego projektu. Potrzebuję do zespołu...\n", + "2. \"Chcę dołączyć do zespołu z określonym projektem magisterskim\". Specjalizuję się w...\n", + "3. \"Chcę dołączyć do zespołu, który będzie dopiero definiował projekt systemu informatycznego.\"\n", + "\n", + "Na podstawie tych informacji tworzone są zespoły, które będą współpracować na laboratorium nr 1. \n", + "Idealny skład zespołu to: dwie osoby z informatyki i dwie osoby z analizy danych, ale ten warunek nie jest konieczny. Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie. \n", + "Podczas Laboratorium 1. liderem zespołu jest osoba, która uzyskała najwyższy wynik w teście na lidera podczas wykładu. (Lider może ulec zmianie do zajęć nr 3 włącznie). \n", + "Wskazane jest, aby w każdym zespole znalazły się osoby o zróznicowanych umiejętnościach:\n", + "* Wizjoner - osoba, która podejmuje decyzję o kierunku wspólnych prac: jaki projekt opracowujemy na Laboratorium 1. (Projekt może ulec zmianie do zajęć nr 3 włącznie).\n", + "* Specjalista – grafik; jego zadaniem będzie stworzenie rysunku – projektu interfejsu użytkownika - najlepiej za pomocą jakiegoś narzędzia.\n", + "* Bibliotekarz; jego zadaniem będzie opisanie wizji projektu słowami.\n", + "\n", + "Wskazane (ale nie wymagane) jest, aby w grupie znaleźli się studenci o różnych osobowościach (względem motywacji i podejścia do pracy)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Proponowany plan laboratorium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie 1. Zorganizowanie zespołu projektowego.\n", + "Czas wykonania: 30 minut. \n", + "Rezultat: Dokument, zawierający informacje o liderze i pozostałych członkach zespołu oraz o opiekunie zespołu. \n", + "Dla lidera należy podać: \n", + " * Jego preferowany typ przywództwa wg charaketrystyki z wykładu,\n", + " * Typ motywacji i podejścia do zadań (np. A1) według klasyfikacji podanej na wykładzie.\n", + " \n", + "Dla pozostałych członków zespołu: \n", + " * Rola w zespole (deweloper, bibliotekarz, grafik itp.),\n", + " * Typ motywacji i podejścia do zadań (np. A1) według klasyfikacji podanej na wykładzie.\n", + " \n", + "Opiekun zespołu\n", + " * Jeśli praca związana jest z projektem mgr, to opiekunem automatycznie zostaje opiekun projektu mgr.\n", + " * Jeśli praca nie jest związana z projektem mgr, to opiekunem moze zostać dowolny pracownik WMI UAM, jeśli wyrazi zgodę.\n", + " * W pozostałych wypadkach opiekunem pozostaje wykładowca.\n", + " \n", + "Maksymalna ocena: 5 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie 2. Burza mózgów i praca indywidualna\n", + "Czas: 30 minut.\n", + "\n", + "Przebieg: Studenci dyskutują nad wizją projektu, którą chcą przedstawić jako efekt pracy na Laboratorium nr. 1. Może to być projekt, który zespół planuje implementować na przyszłych zajęciach. Jeśli takich planów nie ma, można opracować wizję systemu do prowadzenia testów na wykładach prowadzonych na WMI (lepszego od cybertest!). \n", + "\n", + "Następnie każdy student indywidualnie szkicuje wizję projektu na kartce (w postaci interfejsu użytkownika lub schematu działania) i opisuje działanie systemu za pomocą 3-5 zdań. \n", + "\n", + "Rezultat: Tyle dokumentów, ilu jest studentów w grupie. Kartki najlepiej sfotografować i umieścić w systemie ustalnym z opiekunem (np. Google Drive, Teams).\n", + " \n", + "Maksymalna ocena: 10 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Zadanie 3. Praca zespołowa\n", + "Czas: 30 minut. \n", + " \n", + "Cel: przedstawienie wspólnej wizji projektu. \n", + "\n", + "Rezultat:\n", + " * jeden szkich interfejsu lub schematu działania wykonany w dowolnym programie graficznym (np. figma);\n", + " * jeden dokument (10-15 zdań) opisujący działanie projektowanego systemu.\n", + "\n", + "Maksymalna ocena: 15 punktów " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "subtitle": "01. Praca zespołowa[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/02_projekt_badawczo-rozwojowy_lab.ipynb b/laboratoria/02_projekt_badawczo-rozwojowy_lab.ipynb new file mode 100644 index 0000000..148a385 --- /dev/null +++ b/laboratoria/02_projekt_badawczo-rozwojowy_lab.ipynb @@ -0,0 +1,95 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

2. Pojęcie projektu badawczo-rozwojowego[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium\n", + "\n", + "Celem laboratorium jest opracowanie koncepcji projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Organizacja zespółów projektowych na laboratorium nr 2\n", + "W stosunku do laboratorium nr. 1 studenci mogą zorganizować się w nowe grupy. \n", + "Można opracować koncepcję zupełnie nowego projektu badawczo-rozwojowego lub kontynuować projekt z poprzednich zajęć. Liderem zespołu może być dowolna osoba. \n", + "\n", + "W mocy pozostaje wymaganie co do składu zespołu: w zespole powinna znaleźć się co najmnniej jedna osoba z każdego kierunku. (Składy zespołów mogą zmieniać się do zajęć nr 3 włącznie.)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium nr 2\n", + "\n", + "## Zadanie 1. Makieta dynamiczna \n", + "Skonstruujcie jeden prototyp wymarzonego systemu w postaci mockupu dynamicznego.\n", + "\n", + "Przykładowa aplikacja on-line: https://www.figma.com. \n", + "Wybór narzędzia należy jednak do Was. Omówienie bezpłatnych narzędzi do makiet dynamicznych: \n", + "https://invette.pl/blog/najlepsze-narzedzia-dla-ui-ux/. \n", + "Rezultatem zadania jest makieta zapisana jako strona HTML, czyli spakowany plik zawierający plik (np. prototyp.htm) oraz powiązany folder (np. prototyp_pliki). \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 2. Rozwiązania konkurencyjne \n", + "1. Znajdźcie dwa lub trzy rozwiązania z podobnej dziedziny do Waszego rozwiązania. Omówcie je i potencjalnie pokażcie (za pomocą zrzutów ekranu). \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "2. Przeprowadźcie analizę porównawczą Waszego pomysłu i rozwiązań konkurencyjnych. \n", + "Wybierzcie 3-4 zasady z 9 zasad sukcesu produktu high-tech, według których wykażecie przewagę Waszego rozwiązania nad rozwiązaniami konkurecyjnymi \n", + "Maksymalna ocena: 5 punktów\n", + "\n", + "## Zadanie 3. Poziomy gotowości technologicznej\n", + "Przedstawcie, jak wyobrażacie sobie poszczególne poziomy gotowości technologicznej dla Waszego projektu. \n", + "Maksymalna ocena: 5 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "02. Pojęcie projektu badawczo-rozwojowego[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/03_prezentacja_koncepcji_projektuBR_lab.ipynb b/laboratoria/03_prezentacja_koncepcji_projektuBR_lab.ipynb new file mode 100644 index 0000000..f3ede4d --- /dev/null +++ b/laboratoria/03_prezentacja_koncepcji_projektuBR_lab.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

3. Prezentacja koncepcji projektu badawczo-rozwojowego[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium\n", + "Celem laboratorium jest opracowanie koncepcji projektu B+R: (produktu HT / usługi / przedsięwzięcia), który będzie realizowany w ramach projektu zespołówego.\n", + "\n", + "Wynikami pracy będą:\n", + " * jedno-zdaniowy \"elevator pitch\" \n", + " * prezentacja w formie slajdów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "## Zadanie 1. Elevator pitch w jednym zdaniu \n", + "Każdy członek grupy przygotowuje indywidualnie jednozdaniowy \"elevator pitch\" wg wzorca podanego na wykładzie.\n", + "Następnie grupa opracowuje jeden wzorzec jako syntezę najlepszych pomysłów indywidualnych członków.\n", + "Odpowiedź zawiera n (liczba członków zespołu) rozwiązań + jedno finalne.\n", + "\n", + "Maksymalna ocena: 5 punktów\n", + "\n", + "## Zadanie 2. Prezentacje dla inwestora\n", + "Każdy członek grupy przygotowuje indywidualnie prezentację dla inwestora wg wzorca podanego na wykładzie. \n", + "UWAGA: slajd dotyczący prognozy finansowej należy raczej pominąć. Zamiast niego obowiązkowo powinien znaleźć się slajd(y) możliwie szczegółowo wyjaśniający(e), jaka część projektu zostanie prawdopodobnie zrealizowana podczas pierwszego semestru. \n", + "Odpowiedź zawiera **n** (liczba członków zespołu) rozwiązań. \n", + "\n", + "Maksymalna ocena: 15 punktów\n", + "\n", + "## Zadanie 3. Końcowa wersja prezentacji\n", + "W odpowiedzi na to zadanie przedstawcie prezentację, która Waszym zdaniem jest syntezą najlepszych części prezentacji indywidualnych.\n", + "\n", + "Maksymalna ocena: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "02. Prezentacja koncepcji projektu badawczo-rozwojowego[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/04_prezentacje_publiczne_lab.ipynb b/laboratoria/04_prezentacje_publiczne_lab.ipynb new file mode 100644 index 0000000..7e00297 --- /dev/null +++ b/laboratoria/04_prezentacje_publiczne_lab.ipynb @@ -0,0 +1,67 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

4. Publiczne prezentacje projektów[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 4\n", + "\n", + "Celem laboratorium będzie publiczne przedstawienie koncepcji projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "Podczas laboratorium poszczególne zespoły studentów przedstawiać będą: jednozdaniowy \"elevator pitch\" oraz prezentację dotyczącą swojego pomysłu. \n", + "\n", + "Widownią będą studenci wszystkich grup projektowych. Na ocenę prezentacji będą miały wpływ odczucia widowni - zebrane za pomocą ankiet.\n", + "\n", + "Maksymalna ocena: 30 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "01. Prezentacje publiczne[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/05_metodologia_Prince2Agile_lab.ipynb b/laboratoria/05_metodologia_Prince2Agile_lab.ipynb new file mode 100644 index 0000000..1a74146 --- /dev/null +++ b/laboratoria/05_metodologia_Prince2Agile_lab.ipynb @@ -0,0 +1,94 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

5. Metodyka Prince2Agile[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 5\n", + "Celem laboratorium jest rozpoczęcie prac w metodologii Prince2Agile." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie 1. Zadanie związane z metodologią Prince2\n", + "TO DO \n", + "Ocena maksymalna: 10 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Zadanie 2. Zaczynamy pracować zwinnie\n", + "Podzielcie się rolami w projekcie i opiszcie, jak widzicie swoje zadania w projekcie:\n", + "* zespół deweloperski, a w nim scrum master\n", + "* zespół product ownera, a w nim tester\n", + "\n", + "Opracujcie 5-punktowy manifest pracy w Waszym zespole. \n", + "Ocena maksymalna: 10 punktów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ## Zadanie 3. Zakładamy backlog \n", + "* Utwórzcie projekt w systemie JIRA. \n", + "* Opracujcie profile członków grupy (zdjęcia mile widziane). \n", + "* Wpiszcie do backloga \"user stories\" związane z projektem - założcie w tym momencie, że wykonacie cały produkt high-tech.\n", + "* Sprobujcie oszacować czas realizacji każdego \"user story\" za pomocą punktów, zakładając że 10 punktów odpowiada sumie pracy całego zespołu podczas jednego tygodniowego sprintu. \n", + "Ocena maksymalna: 10 punktów " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "05. Metodologia Prince2Agile[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/06_prototypowanie_i_ciągła_integracja_lab.ipynb b/laboratoria/06_prototypowanie_i_ciągła_integracja_lab.ipynb new file mode 100644 index 0000000..297bfe2 --- /dev/null +++ b/laboratoria/06_prototypowanie_i_ciągła_integracja_lab.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

6. Prototypowanie i ciagła integracja[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 6\n", + "Celem laboratorium jest rozpoczęcie prac implementacyjnych z zastosowaniem ciągłej integracji." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Zorganizowanie repozytorium\n", + "Załóżcie repozytorium Git na serwerze wydziałowym. Wstawcie do niego plik Readme. \n", + "Sklonujcie repozytorium na maszynach lokalnych deweloperów. \n", + "Zintegrujcie Wasz projekt w systemie Jira z wydziałowym serwerem Git (w tym celu zgłoście takie zadania w wydziałowym systemie Helpdesk, podając nazwę repozytorium Git oraz nazwę projektu Jira). \n", + "Wykażcie, że integracja się powiodła, umieszczając w Teamsach zrzut ekranu obrazujący integrację Waszego projektu z Gitem. (Integracja przebiegła pomyślnie, jeśli informacja o commicie w systemie Git pojawia się automatycznie w systemie Jira.) \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 2. Nasz prototyp\n", + "Określ typ prototypu opracowanego na zajęciach (na skali: pionowy - poziomy). Zilustruj projektowany prototyp za pomocą zaktualizowanej w stosunku do laboratorium nr 2 makiety dynamicznej. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## 3. Serwer ciągłej integracji\n", + "Połączcie Wasze wydziałowe repozytorium Git z Jenkinsem (jenkins.wmi.amu.edu.pl). \n", + "W celu utworzenia pipeline’u dla Waszego projektu utwórzcie zgłoszenie w systemie Helpdesk, podając login osoby odpowiedzialnej za projekt (sXXXXXX), nazwę projektu, a także ewentualne loginy innych członków zespołu, którzy mają mieć dostęp do projektu w Jenkinsie. \n", + "Stwórzcie *Jenkinsfile* budujący Waszą aplikację oraz uruchamiający prosty test. \n", + "\n", + "Rozwiązaniem zadania będzie poprawnie zakończony pipeline zdefiniowany na podstawie *Jenkinsfile* (który musi zostać umieszczony w Waszym repozytorium Git). \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Pierwszy sprint!\n", + "Zalóżcie pierwszy sprint. \n", + "Przenieście wybrane elementy (\"issues\") z backloga do sprintu, podzielcie je na zadania, przypiszcie zadania ludziom i skomentujcie je (w ich opisie). \n", + "Oszacujcie w punktach pracochłonność wykonania każdego zadania." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "06. Prototypowanie i ciagła integracja[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/07_specyfikacja_projektu_informatycznego_lab.ipynb b/laboratoria/07_specyfikacja_projektu_informatycznego_lab.ipynb new file mode 100644 index 0000000..48d8fc5 --- /dev/null +++ b/laboratoria/07_specyfikacja_projektu_informatycznego_lab.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

7. Specyfikacja projektu informatycznego[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 7\n", + "Celem laboratorium jest opracowanie specyfikacji systemu informatycznego będącego wynikiem projektu B+R.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Aktorzy i ich oczekiwania\n", + "Dla tworzonego systemu:\n", + "* Określ charakterystykę poszczególnych użytkowników systemu.\n", + "* Sporządź listę aktor - cel.\n", + "* Sporządź tabelę IN-OUT. \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + " \n", + "## Zadanie 2. Specyfikacja wymagań\n", + "Sporządź specyfikację wymagań funkcjonalnych i niefunkcjonalnych: \n", + "* każde wymaganie funckjonalne w osobnej tabelce; \n", + "* wszystkie wymagania niefunkcjonalne w jednej tabelce razem. \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 3. Przypadki użycia\n", + "Wykonaj pełną specyfikację trzech wybranych przypadków użycia swojego systemu. \n", + "\n", + "Maksymalna ocena: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "07. Specyfikacja projektu informatycznego[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/08_testowanie_w_programowaniu_zwinnym_lab.ipynb b/laboratoria/08_testowanie_w_programowaniu_zwinnym_lab.ipynb new file mode 100644 index 0000000..d0c61ba --- /dev/null +++ b/laboratoria/08_testowanie_w_programowaniu_zwinnym_lab.ipynb @@ -0,0 +1,56 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

8. Testowanie w programowaniu zwinnym[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 8\n", + "Celem laboratorium jest opracowaniu testów mających zastosowanie w programowaniu zwinnnym.\n", + "\n", + "# Proponowany plan laboratorium\n", + "TO DO" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "08. Testowanie w programowaniu zwinnym[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/09_testowanie_integracyjne_i_systemowe_lab.ipynb b/laboratoria/09_testowanie_integracyjne_i_systemowe_lab.ipynb new file mode 100644 index 0000000..9e3d7c3 --- /dev/null +++ b/laboratoria/09_testowanie_integracyjne_i_systemowe_lab.ipynb @@ -0,0 +1,75 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

9. Testowanie integracyjne i systemowe[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 9\n", + "Celem laboratorium jest opracowanie planu testów integracyjnych i systemowych oraz przeprowadzenie prostego eksperymentu z testowaniem automatycznym." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Testy integracyjne\n", + "TO DO \n", + "Maksymalna ocena: 10 punktów\n", + "\n", + " ## Zadanie 2. Testy systemowe\n", + "Opracujcie plan testów, zawierający przypadki testowe. \n", + "Należy założyć, że testy mają obejmować co najmniej 3 typy testowania. \n", + "\n", + "Maksymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 3. Testy automatyczne\n", + "Korzystając z frameworku Selenium opracujcie test automatyczny, sprawdzający jakąś podstawową funkcjonalność Waszego systemu (np. logowanie.) \n", + "(W zastępstwie można opracować test automatyczny logowania do jednego z systemów: USOS, Jira lub Git.) \n", + "Jako wynik zadania umieśćcie nagranie testu. \n", + "\n", + "Maksymalna ocena: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "09. Testowanie integracyjne i systemowe[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/10_wybrane_zagadnienia_użyteczności_lab.ipynb b/laboratoria/10_wybrane_zagadnienia_użyteczności_lab.ipynb new file mode 100644 index 0000000..ae1ca7b --- /dev/null +++ b/laboratoria/10_wybrane_zagadnienia_użyteczności_lab.ipynb @@ -0,0 +1,75 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

10. Wybrane zagadnienia użyteczności[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 10\n", + "Celem laboratorium jest nabycie umiejętności analizy systemu informatycznego pod kątem jego użyteczności.\n", + "Stworzony zostanie ponadto szablon raportu użyteczności." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "## Zadanie 1. Analiza użyteczności systemu\n", + "Przeanalizujcie treści z wykładu pod kątem Waszego projektu. Dla każdej **wskazówki do tworzenia użytecznego systemu informatycznego** określ (i omów), czy: \n", + "A) została przez Was już uwzględniona \n", + "B) nie została przez Was uwzględniona, bo nie dotyczy projektu \n", + "C) nie została przez Was uwzględniona, choć powinna, ale jest za mało czasu, by to zmienić \n", + "D) nie została przez Was uwzględniona, ale uda się to nadrobić. \n", + "\n", + "Maskymalna ocena: 10 punktów\n", + "\n", + "## Zadanie 2. Przygotowanie raportu użyteczności\n", + "Przygotujcie raport badania użyteczności dla Waszego systemu - pozostawiając do wypełnienia przebieg badania i wnioski z badania (dokumenty te zostaną wypełnione na przyszłych zajęciach). \n", + "\n", + "Maksymalna ocena: 20 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "10. Wybrane zagadnienia użyteczności", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/11_aspekty_użyteczności_lab.ipynb b/laboratoria/11_aspekty_użyteczności_lab.ipynb new file mode 100644 index 0000000..8f31827 --- /dev/null +++ b/laboratoria/11_aspekty_użyteczności_lab.ipynb @@ -0,0 +1,76 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

11. Aspekty użyteczności[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 11\n", + "Celem laboratorium jest przananalizowanie użyteczności projektowanego systemu pod różnymi aspektami." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Zadanie 1. Aspekty użyteczności\n", + "Wybierzcie z wykładu 15 pytań, które są najbardziej adekwatne do Waszej aplikacji i odpowiedzcie na nie. \n", + "Wnioskiem z analizy ma być zmiana w backlogu Waszego projektu. Omówcie tę zmianę. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 2. Diagram Venna\n", + "Opracujcie diagram Venna dla użytkowników Waszej aplikacji. \n", + "Odpowiedzcie na pytanie, jaki wpływ na zadania planowane przez Waszą grupę może mieć ten diagram. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 3. Wypełnienie raportu użyteczności\n", + "Przeprowadźcie badanie użyteczności zgodnie z szablonem raportu przygotowanym na laboratorium nr 10. Wnioski z raportu wpiszcie do szablonu.\n", + "\n", + "Ocena maksymalna: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "11. Aspekty użyteczności[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/12_ocena_jakości_systemu_lab.ipynb b/laboratoria/12_ocena_jakości_systemu_lab.ipynb new file mode 100644 index 0000000..4314bc4 --- /dev/null +++ b/laboratoria/12_ocena_jakości_systemu_lab.ipynb @@ -0,0 +1,84 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

12. Ocena jakości systemu informatycznego[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 12\n", + "Celem laboratorium jest określenie funkcji, która wylicza ogólną jakość projektowanego systemu na podstawie oceny jego poszczególnych cech." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "\n", + "## Zadanie 1. Metryki kodu\n", + "Zbadajcie LOC Waszego systemu i na tej podstawie obliczcie wykonane już punkty funkcyjne. \n", + "Obliczcie metryki Haelsteada dla wybranej funkcji w Waszym kodzie i porównajcie z własnym doświadczeniem. \n", + "Dla wybranej klasy zróbcie analizę metryk WMC i RFC. \n", + "\n", + "Ocena maksymalna: 10 punktów \n", + "\n", + "## Zadanie 2. Jakość podobnego systemu\n", + "Wyszukajcie istniejącą, dostępną aplikację, możliwie najbardziej zbliżoną do Waszej pod względem funkcjonalności i użyteczności. \n", + "Oceńcie punktowo (np. w skali od 1 do 10) jakość systemu - każdy członek grupy osobno:\n", + " * każdą z cech systemu podanych w schemacie FURPS, CUPRIMDA lub CUPRIMDSO (schemat do wyboru).\n", + " * ogólną satysfakcję z systemu (w przypadku CUPRIMDSO ogólna satysfakcja zawarta jest w cesze oznaczonej przez O, więc nie ma sensu jej powtarzać). \n", + " \n", + "Wyniki oceny zaprezentujcie w tabeli (Excel).\n", + "Zaproponujcie wzór dla zdefiniowania ogólnej satysfakcji z systemu jako funkcji ocen cząstkowych, tak aby korelacja wyników ze wzoru i ocen użytkowników była bliska 1. \n", + "\n", + "Ocena maksymalna: 10 punktów\n", + "\n", + "## Zadanie 3. Jakość Waszego systemu.\n", + "Poddajcie Wasz system (ostatnia działająca wersja) pod ocenę pięciu osobom spoza Waszej grupy dokładnie według tych samych zasad, jak w zadaniu 2. \n", + "Sprawdżcie korelację wyników operatora agregacji z ocenami ogólnymi systemu (czy oceny wyliczane za pomocą agregacji \"zgadzają się\" z ocenami ludzkimi). \n", + "\n", + "Ocena maksymalna: 10 punktów" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "12. Ocena jakości systemu informatycznego[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/13_planowanie_prac_badawczo-rozwojowych_lab.ipynb b/laboratoria/13_planowanie_prac_badawczo-rozwojowych_lab.ipynb new file mode 100644 index 0000000..ed5a9c8 --- /dev/null +++ b/laboratoria/13_planowanie_prac_badawczo-rozwojowych_lab.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

13. Planowanie prac badawczo-rozwojowych[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Cel laboratorium nr 13\n", + "\n", + "Celem laboratorium jest opracowanie harmonogramu wstecznego dla zadań wykonanych w trakcie przedmiotu Projekt badawczo-rozwojowy. Harmonogram uwzględniać ma ponadto zadania planowane do wykonania w drugim semestrze." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "Utwórzcie harmonogram wykonania zadań utworzony w programie MS-Project. \n", + "Harmonogram powinien odtwarzać autentyczne terminy zadań już wykonanych. \n", + "Ponadto harmonogram zawierać ma zadania do wykonania do końca 1. semestru oraz w 2. semestrze przedmiotu Projekt badawczo-rozwojowy. \n", + "Dokumentację wyniku zadania będą stanowić:\n", + "* plik .mpp,\n", + "* wydruk wykresu Gantta (zawierający m.in. procent aktualnego wykonania każdego zadania),\n", + "* odpowiednie raporty potwierdzające poprawność przydzielenia zasobów,\n", + "* dotychczasową estymację kosztów wykonania projektu; ceny jednostkowe za zasoby (w tym osobogodziny) powinny opierać się na udokumentowanych źródłach." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "13. Planowanie prac badawczo-rozwojowych[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/14_zarządzanie_pracami_badawczo-rozwojowymi.ipynb b/laboratoria/14_zarządzanie_pracami_badawczo-rozwojowymi.ipynb new file mode 100644 index 0000000..21eba2b --- /dev/null +++ b/laboratoria/14_zarządzanie_pracami_badawczo-rozwojowymi.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

14. Zarządzanie pracami badawczo-rozwojowymi[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cel laboratorium nr 14\n", + "Celem laboratorium jest przygotowanie publicznej demonstracji projektu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plan laboratorium\n", + "Podczas laboratorium studenci demonstrują wykonany system informatyczny swojemu opiekunowi. \n", + "Opiekun podejmuje decyzję, czy system jest na 6. poziomie gotowości technicznej. \n", + "W przypadku pozytywnym wyraża zgodę na wykonanie demonstracji publicznej. " + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "14. Zarządzanie pracami badawczo-rozwojowymi[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/laboratoria/15_demonstracja_projektu_lab.ipynb b/laboratoria/15_demonstracja_projektu_lab.ipynb new file mode 100644 index 0000000..f66737b --- /dev/null +++ b/laboratoria/15_demonstracja_projektu_lab.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Projekt badawczo-rozwojowy

\n", + "

15. Demonstracja wyników projektu badawczo-rozwojowego - wnioski[laboratorium]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cel laboratorium nr 15\n", + "Celem laboratorium jest wyciągnięcie wniosków z demonstracji projektu badawczo-rozwojowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plan laboratorium\n", + "## Dyskusja i ocena projektu\n", + "Opiekun projektu przeprowadza z zespołem projektowym dyskusję na temat demonstracji wyników projektu badawczo-rozwojowego. Wynikiem dyskusji jest ocena projektu.\n", + "## Ocena końcowa z przedmiotu Projekt badawczo-rozwojowy.\n", + "Opiekun wystawia oceny końcowe studentom. Oceny mogą się różnić między osobami w grupie, jeśli:\n", + " * skład grupy zmieniał się na początkowych zajęciach,\n", + " * niektórzy studenci nie brali udziału we wszystkich zajęciach." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "15. Demonstracja projektu[laboratorium]", + "title": "Projekt badawczo-rozwojowy", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb new file mode 100644 index 0000000..6100c9d --- /dev/null +++ b/wykłady/.ipynb_checkpoints/01_praca_zespolowa-checkpoint.ipynb @@ -0,0 +1,274 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

1. Praca zespołowa[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Praca zespołowa w projekcie badawczo-rozwojowym\n", + "## Cele wykładu\n", + "1. Stworzenie zespołów projektowych\n", + "2. Zapewnienie dobrej współpracy w zespołach\n", + "3. Wybór liderów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Jak działa nasza pamięć?\n", + "## Rodzaje pamięci\n", + "### Pamięć sensoryczna\n", + "Pamięć sensoryczna to inaczej pamięć zmysłów.\n", + "#### Charaterystyka pamięci sensorycznej\n", + "* krótki czas trwania (do ok. 0,5 s),\n", + "* duża pojemność (ok. 99% nadchodzących informacji),\n", + "* powiązanie ze zmysłami (węch, wzrok, dotych, słuch, smak)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Przykład

\n", + " \n", + "Dźwięk słyszymy przez pewien czas (min. 0,5 sek. - nawet gdy trwa krócej)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Interakcje pamięci sensorycznej\n", + "Informacje z pamięci sensorycznej przekazywane są do pamięci krótkotrwałej.\n", + "\n", + "### Pamięć krótkotrwała\n", + "Przechowuje niewielkie ilości informacji przez krótki okres (bez dokonywania powtórek: kilka do kilkunastu sekund).\n", + "\n", + "#### Interakcje pamięci krótkotrwałej\n", + "Pobiera informacje z pamięci sensorycznej, z pamięci krótkotrwałej oraz z pamięci długotrwałej.\n", + "Przekazuje informacje do pamięci krótkotrwałej i długotrwałej.\n", + "\n", + "#### Liczba Millera\n", + "Jest to liczba ustalona przez George'a Millera (1920 - 2012), amerykańskiego psychologa, uważanego za twórzę psychologii poznawczej, w roku 1956 na podstawie badań psychologicznych nad zapamiętywaniem informacji. Liczba ta waha się w zależności od rodzaju informacji do zapamiętania (dźwięk, smak, obraz, liczba), ale zawsze jest to około 7 (±2).\n", + "\n", + "##### Wnioski w pracy zespołowej\n", + "* Nie warto zasypywać kolegi z zespołu nadmiarem informacji zo zapamiętania (bo i tak nie zapamięta).\n", + "* Pozycje do zapamiętania lepiej jest podzielić na kategorie, (między 5-9). \n", + "* Można dokonać kolejnego podziału pozycji na podkategorie. Takich podziałów można dokonać wgłąb do poziomu 7 :)\n", + "\n", + "### Pamięć długotrwała\n", + "* W pamięci długotrwałej tworzony jest wynik przetwarzania informacji - trwały ślad pamięciowy. \n", + "* Pamięć długotrwała zawiera całą naszą wiedzę na temat świata, wszystkie wspomnienia i umiejętności. \n", + "* Jest to pamięć o największej pojemności i najdłuższym czasie przechowywania informacji.\n", + "\n", + "#### Interakcje pamięci długotrwałej\n", + "* Pobiera informacje z pamięci krótkotrwałej.\n", + "* Przekazuje informacje do pamięci krótkotrwałej." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Motywacja do pracy\n", + ">Motywowanie do pracy to proces świadomego i celowego oddziaływania na pracowników poprzez dostarczanie środków i możliwości spełnienia ich oczekiwań w taki sposób, aby obie strony (pracodawca i pracownik) odniosły korzyści (Encyklopedia zarządzania)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Piramida potrzeb Maslova

\n", + "
    \n", + "
  1. Potrzeby fizjologiczne (najniższy rząd potrzeb)
  2. \n", + "
  3. Potrzeby bezpieczeństwa
  4. \n", + "
  5. Potrzeby przynależności
  6. \n", + "
  7. Potrzeby uznania
  8. \n", + "
  9. Potrzeby samorealizacji
  10. \n", + "
\n", + "\n", + "

Teoria Maslova

\n", + "
    \n", + "
  • Motywacja to chęć zaspokojenie potrzeby najsilniej odczuwanej.
  • \n", + "
  • Zaspokojenie potrzeby wyższego rzędu może nastąpić nie wcześniej niż po zaspokojeniu potrzeby niższego rzędu.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Typy pracowników\n", + "W rzeczywistości po zaspokojeniu potrzeb najniższych kolejność potrzeb wyższego rzędu zależy od osobowości pracownika. Pracownicy różnią się bowiem w aspektach motywacji do pracy (co motywuje najbardziej) i podejścia do pracy (sposób realizacji pracy).\n", + "\n", + "### Typy pracowników pod względem motywacji\n", + "A. Pracownik nastawiony na wykonanie zadania \n", + "B. Pracownik nastawiony na siebie (własny rozwój; satysfakcję) \n", + "C. Pracownik nastawiony na interakcję (komunikację w grupie)\n", + "\n", + "### Typy pracowników pod względem podejścia do pracy\n", + "1. Posuwający pracę do przodu\n", + "2. Wybitny technik; specjalista w dziedzinie\n", + "3. Uznający priorytet komunikacji, współpracy między wykonawcami projektu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. Zespół projektowy\n", + "> Zespół projektowy to niewielka liczba ludzi posiadających komplementarne umiejętności, zaangażowanych w realizację wspólnego celu ogólnego oraz celów cząstkowych, których podejście opiera się na współodpowiedzialności” (J.Katzenach, D.Smith 2001, Siła zespołów. Wpływ pracy zespołowej na efektywność organizacji\", s. 26).\n", + "\n", + "Na skuteczność pracy w zespole mają wpływ 4 główne czynniki:\n", + "* Skład zespołu\n", + "* Spójność grupy\n", + "* Komunikacja w zespole\n", + "* Organizacja zespołu\n", + "\n", + "## Skład zespołu\n", + "### Członkowie zespołu\n", + "Grupa powinna zawierać uzupełniające się osobowości:\n", + "* ludzi mających własne pomysły - wybitnych techników (B2)\n", + "* ludzi nastawionych na komunikację z innymi (C3)\n", + "* ludzi nastawionych na posuwanie pracy do przodu (A1) \n", + "\n", + "### Lider zespołu\n", + "* Lider odgrywa najważniejszą rolę w zespole.\n", + "* Liderzy z reguły są mianowani i odpowiadają przed menedżerem przedsięwzięcia.\n", + "* Liderzy muszą codziennie śledzić pracę swojej grupy i blisko współpracować z menedżerami przedsięwzięcia.\n", + "* Lider musi być akceptowany przez zespół.\n", + "\n", + "## Spójność grupy\n", + "Grupa spójna (inaczej: zgrana) to grupa, w której:\n", + "* członkowie mają wspólne cele,\n", + "* nie występują kliki (podgrupy).\n", + "\n", + "### Zalety grupy spójnej\n", + "* Można wypracować grupowy standard jakości.\n", + "* Bliska współpraca – członkowie uczą się od siebie nawzajem.\n", + "* Członkowie grupy znają nawzajem swoje prace. Opuszczenie grupy przez jej członka nie powoduje utracenie ciągłości pracy.\n", + "* Programowanie jest pozbawione indywidualizmu (program uważany jest za własność grupy).\n", + "\n", + "### Wady grupy spójnej\n", + "* Nieracjonalny opór przed zmianą lidera;\n", + "* Myślenie grupowe – krytyczne umiejętności członków grupy osłabione są przez lojalność wobec grupy.\n", + "\n", + "## Komunikacja w zespole\n", + "Proces skutecznej komunikacji to przekazywanie informacji w sposób powodujący realizację celów. \n", + "Skutkiem efektywnej komunikacji jest zwiększenie motywacji do pracy oraz zmniejszenie oporu wobec zmian. \n", + "\n", + "### Zasady skutecznej komunikacji\n", + "* Dostosowanie klarowności wypowiedzi do odbiorcy\n", + "* Dostosowanie *metod komunikacji* do zespołu\n", + "\n", + "### Metody komunikacji\n", + "* Pionowa lub pozioma\n", + "* Jednostronna lub dwustronna\n", + "* Werbalna lub pisemna\n", + "* Formalna lub nieformalna\n", + "\n", + "## Organizacja zespołu\n", + "Organizacja zespołu to hierarchia ról przypisanych członkom zespołu.\n", + "\n", + "### Rodzaje organizacji zespołu\n", + "#### Organizacja formalna (hierachiczna)\n", + "Formalna, hierarchiczna organizacja zespołu jest niezbędna w przypadku pracowników niedoświadczonych.\n", + "\n", + "#### Organizacja nieformalna\n", + "Organizacja nieformalna sprawdza się, gdy większość członków to ludzie doświadczeni i kompetentni.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. Lider zespołu\n", + "Lider zespołu to w ogólności osoba zarządzająca członkami zespołu w celu realizacji celów powierzonego projektu. \n", + "W prezentowanym NA TYM WYKŁADZIE podejściu lider to osoba zapewniająca motywację do pracy członkom zespołu.\n", + "\n", + "## Typy lidera (wg Daniela Goldmana)\n", + "\n", + "> Daniel Goleman (ur. 7 marca 1946 w Stockton) – amerykański psycholog żydowskiego pochodzenia, publicysta naukowy. Autor bestselleru Inteligencja emocjonalna (1995). (Wikipedia)\n", + "\n", + "### Wizjoner: \"Chodź ze mną\"\n", + "* Pokazuje kierunek działania.\n", + "* Motywuje do osiągania wspólnych celów.\n", + "* Pozwala ludziom samodzielnie poszukiwać nowych rozwiązań.\n", + "* Przyciąga ludzi do siebie, docenia i promuje rolę poszczególnych osób w zespole.\n", + "\n", + "### Trener: \"Rozwijaj się\"\n", + "* Motywuje ludzi do lepszej pracy poprzez rozpoznawanie ich mocnych i słabych stron.\n", + "* Zachęca ludzi, aby walczyli z przeciwnościami i rozwijali się.\n", + "* Zachęca, by korzystali ze swoich mocnych, pozytywnych cech i czerpali z nich napęd do pracy.\n", + "\n", + "### Lider afiliacyjny: \"Porozmawiajmy\"\n", + "* Szanuje każdą osobę pracującą w organizacji.\n", + "* „Ludzie to nie roboty” – odczuwają radość i zmęczenie.\n", + "* Szczerze interesuje się życiem swoich pracowników.\n", + "* Dba o dobrą atmosferę pracy.\n", + "* Posiada wysoką empatię, czyli umiejętność odczytywania uczuć i dostrzegania punktu widzenia innych osób.\n", + "\n", + "### Demokrata: \"Każdy głos jest ważny\"\n", + "* Liczy się zdanie każdego pracownika.\n", + "* Potrafi słuchać ludzi i wykorzystywać ich pomysły.\n", + "* Potrafi przyjmować również krytykę.\n", + "* Pracownicy mają poczucie, że uczestniczą w decyzjach podejmowanych w firmie, przez co bardziej angażują się w pracę.\n", + "\n", + "### Poganiacz: \"Zrób to natychmiast\"\n", + "* Ustawia wysokie standardy pracy zarówno dla siebie jak i dla swoich pracowników\n", + "* Jest bardzo mocno nastawiony na sukces, koncentruje się na nieustannym poprawianiu wyników. \n", + "* Jego popularne powiedzenie to: „rób to, co ja – natychmiast!”.\n", + "\n", + "### Dyktator: \"Rób, co każę\"\n", + "* Nazywany „zarządzaniem przez strach”.\n", + "* Polega na ciągłym kontrolowaniu pracowników, wydawaniu im poleceń i oczekiwaniu, że zostaną one wypełnione dokładnie tak, jak wymaga tego przywódca. \n", + "* To on podejmuje decyzje, a polecenia wydaje w sposób zdecydowany, stanowczy i nie znoszący sprzeciwu.\n" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "01. Praca zespołowa[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy-checkpoint.ipynb new file mode 100644 index 0000000..377e9c2 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/02_projekt_badawczo-rozwojowy-checkpoint.ipynb @@ -0,0 +1,311 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

2. Projekt badawczo-rozwojowy[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Działalność badawczo-rozwojowa\n", + "> Działalność badawczo-rozwojowa to działalność **twórcza** \n", + "obejmująca **badania naukowe** lub **prace rozwojowe**, \n", + "podejmowana w **sposób systematyczny** \n", + "w celu **zwiększenia zasobów wiedzy** \n", + "oraz wykorzystania zasobów do **tworzenia nowych zastosowań**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definicja projektu badawczo-rozwojowego\n", + "Projekt badawczo-rozwojowy to system działań składający się z: \n", + "- zakresu projektu, \n", + "- terminu realizacji, \n", + "- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n", + "\n", + "Projekt badawczo-rowojowy charakteryzuje się następującymi cechami: \n", + " - niepowtarzalność,\n", + " - złożoność,\n", + " - identyfikowalność." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład projektu badawczo-rozwojowego: AI Searcher\n", + "\n", + "### Definicja projektu:\n", + "System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n", + "\n", + "\n", + "### Zakres projektu: \n", + "System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n", + "System realizuje następujący scenariusz działania:\n", + " 1. Pracownik Straży Granicznej wpisuje zapytanie.\n", + " 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych.\n", + " 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n", + " 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n", + " 5. Translator tłumaczy znalezione teksty na język polski. \n", + " 6. Klasyfikator wybiera teksty potencjalnie przestępcze.\n", + " 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n", + " \n", + "### Termin realizacji: \n", + "grudzień 2018 - grudzień 2021\n", + "\n", + "### Zasoby:\n", + " * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n", + " * Kapitał: dotacja z NCBR\n", + " * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n", + " * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Poglądowy widok systemu AI Searcher\n", + "\"Zrzut" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poziomy gotowości technologicznej projektu B+R\n", + "\n", + "### Poziom 1.\n", + "Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n", + "### Poziom 2.\n", + "Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n", + "### Poziom 3.\n", + "Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n", + "\n", + "### Poziom 4.\n", + "Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n", + "### Poziom 5.\n", + "Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n", + "### Poziom 6.\n", + "Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\n", + "\n", + "### Poziom 7.\n", + "Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n", + "\n", + "### Poziom 8.\n", + "Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n", + "\n", + "### Poziom 9.\n", + "Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n", + "\n", + "[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Produkt High-Tech\n", + "Oczekuje się, że wynikiem projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n", + "\n", + "## Czym jest produkt High-Tech?\n", + "\n", + "### Definicja produktu\n", + "Produkt = \n", + "Zawartość + \n", + "Funkcjonalność + \n", + "Konstrukcja + \n", + "Monetyzacja \n", + "Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Wyraz \"technologia\" pochodzi z języka greckiego:\n", + "
    \n", + "
  • techne: sztuka, umiejętność
  • \n", + "
  • logia: nauka (czegoś)
  • \n", + "
\n", + "\n", + "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Czym jest produkt \"high-tech\"?\n", + "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n", + "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n", + "\n", + "R&D Investments a wartość produktu:\n", + "* Low-tech (< 1.0%);\n", + "* Medium-low-tech (1.0%-2.5%);\n", + "* Medium-high-tech (2.5%-8%); \n", + "* High-tech (>8.0%)\n", + "\n", + "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n", + "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n", + "* złożoność technologiczna,\n", + "* krótki cykl życia (spowodowany wyścigiem technologicznym),\n", + "* szybkie starzenie się,\n", + "* niewielka liczba klientów w początkowym stadium sprzedaży,\n", + "* duże nakłady na R&D,\n", + "* niepewności technologiczne.\n", + "\n", + "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n", + "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n", + "* dezorientacja klienta (np. jak działa produkt),\n", + "* niespełnianie oczekiwań (przez pierwsze wersje),\n", + "* duża konkurencja,\n", + "* możliwość błyskawicznego upadku rynku,\n", + "* spadająca cena produktu,\n", + "* szybki wzrost stosunku jakości do ceny.\n", + "\n", + "### Ocena ryzyka\n", + "Na 7 zaawansowanych pomysłów produktu high-tech: \n", + "* 4 wchodzą w fazę realizacji,\n", + "* 1.5 są uruchamiane,\n", + "* 1 odnosi sukces." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# \"Golden Rules\" na odniesienie sukcesu\n", + "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n", + "\n", + "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n", + "* Pomysł musi być nowatorski - a nie skopiowany.\n", + "* Taki produkt wymaga R&D...\n", + " * A to jest kosztowne i...\n", + " * Trudne w konstrukcji.\n", + "* Często pomysły chronione są przez patenty.\n", + "\n", + "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n", + "\n", + "## 2. \"Popraw wydajność użytkownika\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Wykonuj wszystko szybciej i taniej:\n", + " * Skróć czas nauki\n", + " * Automatycznie poprawiaj błędy\n", + " * Automatyzuj niektóre kroki\n", + "* Dbaj o wygodę użytkowania\n", + "* Unikaj:\n", + " * Reklam\n", + " * Przestojów na płacenie (np. bramek)\n", + " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n", + "\n", + "## 3. \"Chroń inwestycje użytkownika\"\n", + "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n", + "* hardware'u\n", + "* software'u\n", + "* danych\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Minimalizuj koszty zmian\n", + "* Wydłużaj czas życia produktów\n", + "* Twórz rozwiązania przenośne\n", + "\n", + "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Unikaj przerw w działaniu\n", + "* Skracaj czas i zmniejszaj koszty przywrócenia:\n", + " * działania\n", + " * danych\n", + "\n", + "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Dostarczaj więcej za mniej\n", + " * Podwyższaj jakość\n", + " * Zmniejszaj cenę\n", + " * A najlepiej - obie czynności naraz\n", + " \n", + "* Jakość (wydajność) przedstawiaj w liczbach\n", + " * Gb, 100-punktowa miara jakości\n", + " * sekundy...\n", + "\n", + "## 6. \"Zapewnij elastyczność i skalowalność\"\n", + "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n", + "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Umożliwiaj dodawanie / usuwanie funkcji\n", + "* Zapewnij użycie w różnych środowiskach\n", + "* Zapewnij możliwość stosowania dla większych zbiorów danych\n", + "\n", + "## 7. \"Zadbaj o atrakcyjny wygląd\"\n", + "Rozwiązanie powinno być ładne i ...modne.\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Weź pod uwagę:\n", + " * kolorystykę\n", + " * kształt\n", + " * wykończenie\n", + " * prostotę\n", + " \n", + "## 8. \"Dostarczaj rozrywkę\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n", + "* Ludzie lubią wyzwania - dostarczaj wyzwania\n", + "* Ludzie lubią rywalizację...\n", + "* Ludzie mają swoje hobby i upodobania...\n", + "* Wszyscy wolą wakacje od pracy... \n", + " \n", + "## 9. \"Stwórz nową modę\"\n", + "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n", + "Wskazówki:\n", + "* Produkt musi być \"osobisty\".\n", + "* Musi mieć wygląd określany jako \"cool\".\n", + "* Trzeba sprzedawać go drogo...\n", + "* ... w niewielkich ilościach...\n", + "* ... ale za to robić wokół niego sporo szumu." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "02. Projekt badawczo-rozwojowy[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR-checkpoint.ipynb new file mode 100644 index 0000000..2511404 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/03_prezentacja_koncepcji_projektuBR-checkpoint.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

3. Prezentacja koncepcji projektu B+R[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inwestorzy\n", + "\n", + "Opracowanie i rozwój projektu B+R wymaga środków finansowych. Środki finansowe zapewnia *inwestor*, któremu trzeba odpowiednio zaprezentować koncepcję projektu B+R, czyli przekonać go, że poświęcone środki finansowe się zwrócą. \n", + "\n", + "**Inwestor** to osoba lub instytucja, która przekazuje środki finansowe na przedsięwzięcie, oczekując zwrotu i zysku. \n", + "\n", + "**Anioł biznesu** to inwestor, który dostarcza początkowe środki finansowe (seed money) na rozpoczęcie biznesu w zamian za część udziałów lub *dług zamienny*. **Dług zamienny** to papier wartościowy, który może zostać wymienony na akcje lub udziały firmy. \n", + "\n", + "**Kapitał wysokiego ryzyka (ang. venture capital)** to kapitał dostarczony dla istniejącej firmy typu start-up, zwykle w przemyśle HT. Kapitał wysokiego ryzyka liczy na zwrot w przypadku wyjścia firmy na giełdę lub jej sprzedaży." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Główne atrybuty produktu HT\n", + "Produkt ma wnosić **wartość dodaną**, która spełni **potrzeby klienta** dzięki dobrze przemyślanej **konstrukcji**.\n", + "1. Wartość dodana to zestaw korzyści z punktu widzenia klienta. \n", + "Korzyść może być:\n", + " 1. Funkcjonalna (produkt wykonuje pracę dla klienta)\n", + " 2. Emocjonalna (produkt wpływa pozytywnie na samopoczucie klienta\n", + " 3. Rozwijająca osobowość klienta\n", + " 4. Społeczna (produkt wpływa na poprawę pozycji społecznej klienta)\n", + "\n", + "2. Spełnienie potrzeby użytkowników\n", + ">“You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.” (Steve Jobs)\n", + "\n", + "Potrzeby użytkowników:\n", + " * Wypowiedziane (odczuwane dziś i świadome) - spełniają je przeciętne produkty;\n", + " * Ukryte (odczuwane dziś, ale nieświadome) - spełniają je produkty HT;\n", + " * Oczekiwane (odczuwane w przyszłości w sposób świadomy) - spełniają je wybitne produkty HT;\n", + " * Mające się pojawić (odczuwane w przyszłości w sposób nieświadomy) - spełniają je wizjonerskie produkty HT.\n", + "\n", + "3. Odpowiednia konstrukcja (design)\n", + "Produkt jest odpowiednio skonstruowany, jeśli ma następujące cechy:\n", + "* pożyteczny (rozwiązuje problem lub wykonuje zadania), \n", + "* użyteczny (łatwy w użytku, intuicyjny),\n", + "* pożądany (wywołuje pozytywne emocje, sprawia przyjemność)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elevator pitch\n", + "**Elevator pitch** to krótka prezentacja, ktorej celem jest zwięzłe i proste omówienie produktu lub przedsięwzięcia. Oczekuje się, że trwa niedłużej niż 2 minuty. \n", + "**Jednozdaniowy elevator pitch** to najkrótsza charakterystyka planowanego przedsięwzięcia. Ma postać: " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

DLA (określenie klienta docelowego)

\n", + "

KTÓRY (ma potrzebę)

\n", + "

NAZWA NASZEGO PRODUKTU (PRZEDSIĘWZIĘCIA)

\n", + "

TO (typ produktu / przedsięwzięcia)

\n", + "

KTÓRY (ma unikalną cechę)

\n", + "

W PRZECIWIEŃSTWIE (nazwa znanej konkurencji)

\n", + "

MA PRZEWAGĘ (typ przewagi)

\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Przykład jednozdaniowego \"elevator pitch\"

\n", + " \n", + "

(DLA) Dla każdej osoby biorącej leki lub suplementy,

\n", + "

(KTÓRA) zwłaszcza dla tych którzy mają tendencje zapominać.

\n", + "

(NAZWA PRODUKTU) Take Your Meds

\n", + "

(TO) to aplikacja mobilna,

\n", + "

(KTÓRA) która zapewni, że bez pomyłek weźmiemy wszystkie leki.

\n", + "

(W PRZECIWIEŃSTWIE) w przeciwieństwie do standardowych powiadomień na telefonie i notatek na kartce,

\n", + "

(MA PRZEWAGĘ) Take Your Meds zapewnia szczegółowe informacje i nie pozwala się pomylić.

\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prezentacja dla inwestora\n", + "### Reguła 30 / 20 / 10 (Czcionka / Minuty / Slajdy)\n", + "Reguła mówi o standardowych oczekiwaniach w stosunku do prezentacji (czyli: stosuj dużą czcionkę, nie gadaj dłużej ani krócej niż 2 minuty na slajd).\n", + "### Wzorzec 10 slajdów prezentacji dla inwestora\n", + "#### 1. Chwyć za gardło (ang. \\\"Grab\\\")\n", + " * Jaki masz pomysł?\n", + " * Czym się wyróżniasz pod względem korzyści: \n", + " * funkcjonalność, \n", + " * spełnienie potrzeby, \n", + " * konstrukcja?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki

\n", + "\n", + "
    \n", + " \n", + "
  • Nie bądź gadatliwy!
  • \n", + "
  • Uchwyć uwagę widza!
  • \n", + "
  • Jeśli tutaj nie chwycisz widza za gardło, to przepadłeś.
  • \n", + " \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2. Przedstaw problem\n", + " * Dlaczego\n", + " * Wasz produkt jest niezbędny?\n", + " * ludzie go potrzebują?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówka:

\n", + " \n", + "
    \n", + "
  • Pamiętaj: nie chodzi o Twój problem, tylko o problem potencjalnego użytkownika!
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3. Przedstaw rozwiązanie problemu\n", + " * Jak rozwiążecie problem ?\n", + " * Kto będzie korzystać z Waszego rozwiązania?\n", + " * I jakie będzie miał z tego korzyści?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + " \n", + "
    \n", + "
  • Bądź konkretny!
  • \n", + "
  • Nie zalewaj!
  • \n", + "
  • Nie czaruj!
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 4. Przedstaw sposób działania\n", + "* Jak działa nasze rozwiązanie?\n", + "* Co w działaniu jest takiego wyjątkowego? (\\\"magic souce\\\")?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + "\n", + "
    \n", + "
  • Przekonaj, że Wasze rozwiązanie jest\n", + "
      \n", + "
    • użyteczne,\n", + "
    • funkcjonalne\n", + "
    \n", + "
  • Najlepiej przedstaw działanie wizulanie - np. na schemacie, rysunku, filmie.\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 5. Omów technologię\n", + " * Jaka jest konstrukcja (architektura) rozwiązania?\n", + " * Co w niej jest takiego wyjątkowego?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + " \n", + "
    \n", + "
  • Ponownie możesz przedstawić schemat...
  • \n", + "
  • Ale uważaj, żeby nie przesadzić ze szczegółami technicznymi!
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 6. Przedstaw konkurencję\n", + " * Jakie produkty / firmy są Waszą konkurencją?\n", + " * Co robią inaczej?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówka:

\n", + " \n", + "Wykaż, że jesteście lepsi:\n", + "
    \n", + "
  • jakość,
  • \n", + "
  • cena,
  • \n", + "
  • funkcjonalność,
  • \n", + "
  • użyteczność,
  • \n", + "
  • elastyczność.
  • \n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 7. Określ Wasz rynek\n", + "**Rynek** to ogół transakcji kupna–sprzedaży danego dobra lub czynnika produkcji. \n", + " * Na jaki rynek kierujecie Wasz produkt?\n", + " * Jaka jest wartość finansowa rynku dla Waszego produktu?\n", + " * Total Available Market - wartość ogólnoświatowego popytu na dany produkt usługę\\,\n", + " * Served Available Market - wartość rynku, na którym chcecie działać,\n", + " * Target Market - przewidywana wartość rynku Waszych prawdopodobnych nabywców." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + "\n", + "
    \n", + "
  • Możecie interpretować powyższe pojęcia w sposób potoczny:
  • \n", + "
      \n", + "
    • TAM - Jak duży jest cały tort?
    • \n", + "
    • SAM - Jak duży kawałek tortu jestem w stanie uciąć dla siebie?
    • \n", + "
    • TM - Ile jestem w stanie zjeść?
    • \n", + "
    \n", + "
  • Inwestor oczekuje, że potraficie oszacować wartość każdego zasięgu rynku na podstawie wiarygodnych źródeł.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8. Zdefiniuj model biznesowy\n", + "**Model biznesowy** to unikatowy przepis na sprzedawanie produktu lub usługi.\n", + " * W jaki sposób Wasz pomysł zarobi pieniądze?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Wskazówka:

\n", + "\n", + "Wyjaśnij swój pomysł na sprzedaż, np.\n", + "
    \n", + "
  • licencje / sprzedaż jednorazowa,
  • \n", + "
  • sprzedaż bezpośrednia / dystrybutorzy,
  • \n", + "
  • dochody z reklam,
  • \n", + "
  • mechanizmy przyciągnięcia klienta, np. programy lojalnościowe, grywalizacja.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 9. Przedstaw prognozę finansową przedsięwzięcia\n", + "**Prognoza finansowa** to przewidywana wartość przyszłych wyników finansowych przesięwzięcia uwzględniająca przychody i koszty.\n", + " * Jaka jest prognoza finansowa na okres 18 miesięcy - 5 lat?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Wskazówki:

\n", + "
    \n", + "
  • Udowodnij, że znasz realia lub...dostosuj się do oczekiwań inwestora.
  • \n", + "
  • Kiedyś prognozę układało się na 5 lat, a dzisiaj... 5 lat to dłużej niż wieczność.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 10. Pochwal się zespołem\n", + " * Jakie są kluczowe osoby w Twoim zespole?,\n", + " * Skąd pochodzą?\n", + " * Jaką wartość wnoszą?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Wskazówki:

\n", + " \n", + "
    \n", + "
  • Można pokazać zdjęcia, jeśli ludzie się na to zgadzają.
  • \n", + "
  • Jeśli w zespole jest gwiazda, pozwól jej lśnić.
  • \n", + "
\n", + " \n", + "
" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "03. Prezentacja koncepcji projektu B+R[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb new file mode 100644 index 0000000..45777da --- /dev/null +++ b/wykłady/.ipynb_checkpoints/04_metodologia_prince2-checkpoint.ipynb @@ -0,0 +1,153 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

4. Metodologia Prince2[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodologia Prince2\n", + "Prince2 (PRojects IN Controlled Environments) to metoda **zarządzania** *projektami*\n", + "niezależna od zmiennych projektu, takich jak: środowisko, skala, typ, organizacjakultura, położenie geograficzne." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Projekt

\n", + "Projekt to organizacja założona:\n", + " \n", + "

na określony czas

\n", + "

w celu dostarczenia rozwiązania

\n", + "

dla określonej potrzeby biznesowej

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Przykład projektu

\n", + " \n", + "

Potrzeba biznesowa: Oszczędzenie 70% czasu biura obsługi klienta.

\n", + "

Rozwiązanie: System automatycznego obiegu dokumentów.

\n", + "

Czas: 6 miesięcy

\n", + "

Projekt: Zespół ludzi wydelegowanych na 6 miesięcy dla dostarczenia systemu automatycznego obiegu dokumentów w celu zaoszczędzenia 70\\% czasu biura obsługi klienta.

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cechy charakterystyczne projektu\n", + "Projekt jest przeciwieństwiem pojęcia \"buiseness as usual\" (działanie rutynowe). Projekt od rutyny odróżniają następujące cechy\n", + "\n", + " * Zmiana - projekt to środek do przeprowadzenia zmiany.\n", + " * Tymczasowość - projekt ma swoją datę początku i końca.\n", + " * Wielofukcyjność - przy projektach zaangażowani są ludzie o różnych kompetencjach.\n", + " * Wyjątkowość - każdy projekt jest wyjątkowy (nawet jak jest jakiś wzorzec projektu, to każdy projekt się czymś wyróżnia: albo zespołem, albo klientem, albo położeniem geograficznym, itp.\n", + " * Niepewność - projekty ze swojej natury są ryzykowne, bo mają wprowadzić zmianę.\n", + " ### Zarządzanie projektem\n", + " Zarządzanie projektem to:\n", + " - planowanie zadań\n", + " - delegowanie ludzi do zadań\n", + " - monitorowanie wykonywania zadań\n", + " - kontrolowanie\n", + " aby:\n", + " - osiągnąć cel projektu\n", + " - w wyznaczonym czasie\n", + " - przy zachowaniu przeznaczonych kosztów\n", + " \n", + " ### Aspekty kontroli w zarządzaniu projektem\n", + " Projekt należy kontrolować pod następującymi apektami:\n", + " - koszty (czy przestrzegamy kosztów projektu?)\n", + " - czas (kiedy skończymy?)\n", + " - jakość (czy produkt działa zgodnie z oczekiwaniami?)\n", + " - zakres (czy zakres działania projektu będzie pokrywa się z oczekiwaniami?)\n", + " - korzyści dla klienta (czy użytkownik naszego produktu uzyskuje planowaną korzyść?)\n", + " - ryzyko (jakie jest ryzyko niepowodzenia lub niepożądanych skutków projektu i czy potrafimy to ryzyko zminimalizować?)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zasady Prince2\n", + "### Dostosowywanie do potrzeb (tailoring)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Motywy przewodnie Prince2 (themes)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Procesy Prince2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artefakty w Prince2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Role w Prince2" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "04. Metodologia Prince 2[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb new file mode 100644 index 0000000..2912a1e --- /dev/null +++ b/wykłady/.ipynb_checkpoints/05_metodologia Prince2Agile-checkpoint.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

5. Metodologia Prince2Agile[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Podstawowe koncepcje metodyk zwinnych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodyka SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czym jest Prince2Agile?" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "05. Metodologia Prince2Agile[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb new file mode 100644 index 0000000..240d1ad --- /dev/null +++ b/wykłady/.ipynb_checkpoints/06_prototypowanie i ciągła integracja-checkpoint.ipynb @@ -0,0 +1,131 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

6. Prototypowanie i ciągła integracja[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Prototyp

\n", + "Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cele prototypowania\n", + " * Zademonstrowanie umiejętności wykonania produktu końcowego\n", + " * Określenie realistycznych wymagań końcowych\n", + " * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n", + " * Sprawdzenie implementacji kluczowych funkcji\n", + "\n", + "## Potencjalne efekty prototypowania\n", + "* Wykrycie nieporozumień między klientem i wykonawcą \n", + "* Określenie brakujących funkcji \n", + "* Wykrycie błędów w specyfikacji\n", + "* Przewidywanie przyszłych trudności\n", + "\n", + "## Prototyp poziomy a pionowy\n", + "\n", + "## Prototypowanie z porzuceniem a prototypowanie ewolucyjne\n", + " \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Ciągła integracja

\n", + " \n", + "Ciągła integracja (CI) to praktyka rozwoju oprorgamowania, w której:\n", + "
    \n", + "
  • zmiany w kodzie są regularnie przesyłane do repozytorium,
  • \n", + "
  • po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Workflow w Ciągłej Integracji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dobre praktyki Ciągłej Integracji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kompilacja automatyczna" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Narzędzia Ciągłej Integracji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Korzyści z Ciągłej Integracji" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "06. Prototypowanie i ciągła integracja[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb new file mode 100644 index 0000000..779640f --- /dev/null +++ b/wykłady/.ipynb_checkpoints/07_specyfikacja_projektu_informatycznego-checkpoint.ipynb @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

7. Specyfikacja projektu informatycznego[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Zakres systemu informatycznego

\n", + " \n", + "Zakres systemu to precyzyjne określony obszar tego, co projektujemy – precyzyjnie odgraniczony od tego, co jest zadaniem projektowym kogoś innego, lub tego, co leży poza projektem.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reprezentacje zakresu projektu\n", + "\n", + "* Określenie wizji\n", + "* Diagram zakresu projektowego (rysunek)\n", + "* Lista „aktor-cel”\n", + "* Lista „in-out”" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Specyfikacja wymagań

\n", + " \n", + "Specyfikacja wymagań to dokument, w którym zebrano wszystkie oczekiwania stawiane przyszłemu systemowi (np. wymagania funkcjonalne i niefunkcjonalne aplikacji).\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wymagania użytkownika a wymagania systemowe\n", + "\n", + "### Wymagania funkcjonalne a wymagania niefunkcjonalne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Przypadek użycia

\n", + " \n", + "Przypadek użycia określa umowę między uczestnikami systemu względem jego zachowania.\n", + "\n", + "
    \n", + "
  • W przypadku użycia opisuje zachowanie się systemu w różnych warunkach – w odpowiedzi na żądanie jednego z uczestników, zwanego aktorem głównym.
  • \n", + "
  • Przypadek użycia reprezentowany jest przez sekwencję akcji realizowanych przez system analizowany, które dają zauważalny efekt. Akcja to operacja atomowa, czyli taka, której nie można przerwać podczas wykonywania.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elementy składowe opisu przypadku użycia\n", + "1. Aktor główny\n", + "2. Zakres \n", + "3. Poziom celu\n", + "4. Uczestnicy i interesy\n", + "5. Warunek początkowy\n", + "6. Wyzwalacz\n", + "7. Gwarancje minimalne\n", + "8. Gwarancja powodzenia\n", + "9. Scenariusz powodzenia\n", + "10. Rozszerzenia scenariusza" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "07. Specyfikacja projektu informatycznego[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb new file mode 100644 index 0000000..f1decd7 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/08_testowanie_w_programowaniu_zwinnym-checkpoint.ipynb @@ -0,0 +1,85 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

8. Testowanie w programowaniu zwinnym[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zarządzanie testowaniem w metodyce SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poziomy testowania w metodyce SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie jednostkowe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie metodą „Test First”" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Typy wstawek testowych\n", + " * stub\n", + " * spy\n", + " * mock\n", + " * fake\n", + " * dummy" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "08. Testowanie w programowaniu zwinnym[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe-checkpoint.ipynb new file mode 100644 index 0000000..f24ad8b --- /dev/null +++ b/wykłady/.ipynb_checkpoints/09_testowanie_integracyjne_i_systemowe-checkpoint.ipynb @@ -0,0 +1,124 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

9. Testowanie integracyjne i systemowe[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Błąd

\n", + " \n", + "Błąd to objaw nieoczekiwanego działania programu ujawniony podczas testów.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Defekt

\n", + " \n", + "Defekt to niedoskonałość w kodzie programu.\n", + "Błąd ujawniony w czasie testów świadczy o defekcie w testowanym kodzie.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Testowanie

\n", + " \n", + "Testowanie to proces, który ma na celu wykazanie istnienia defektów w kodzie programu \n", + "poprzez wywołanie błędów w działaniu.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Opracowywanie przypadków testowych dla testowania integracyjnego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Strategie testowania integracyjnego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Środowisko testowania systemowego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie manualne: \n", + "### Testowanie eksploracyjne\n", + "### Testowanie sesyjne\n", + "### Testowanie akceptacyjne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie automatyczne\n", + "### Testowanie oparte na nagrywaniu\n", + "### Testowanie oparte na słowach kluczowych\n", + "### Testowanie oparte na zachowaniu" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "09. Testowanie integracyjne i systemowe[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności-checkpoint.ipynb new file mode 100644 index 0000000..28cb6c0 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/10_wybrane_zagadnienia_użyteczności-checkpoint.ipynb @@ -0,0 +1,117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

10. Wybrane zagadnienia użyteczności[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Użyteczność

\n", + "\n", + "Użyteczność narzędzia: łatwość, z jaką ludzie potrafią korzystać z pewnego narzędzia w celu osiągnięcia określonego celu.\n", + "\n", + "

Cechy aplikacji użytecznej

\n", + " \n", + "
    \n", + "
  • Łatwa do nauki: Jak łatwo jest użytkownikom wykonać dane zadanie po raz pierwszy?\n", + "
  • Wydajna w pracy: Jak szybko użytkownicy wykonują zadania, gdy już się nauczyli programu?\n", + "
  • Satysfakcja: Czy korzystanie z programu daje satysfakcję?\n", + "
  • Odporna na błędy: Ile błędów robią użytkownicy, jak poważne są to błędy i jak łatwo z nich się wydostać?\n", + "
  • Zapamiętywalna po czasie: Jak łatwo powrócić do biegłości użytkowania po pewnym okresie nieużytkowania programu?\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki do tworzenia użytecznego systemu informatycznego

\n", + "\n", + "
    \n", + "
  1. Autorze: Poznaj użytkownika, a TY nie jesteś użytkownikiem.
  2. \n", + "
  3. Użytkownik powinien mieć kontrolę nad systemem, a nie odwrotnie: to użytkownik jest szefem i system powinien to okazywać.
  4. \n", + "
  5. System musi ułatwiać użytkownikowi życie:
  6. \n", + "
      \n", + "
    • Elementy, które wyglądają tak samo, powinny działać tak samo, a akcje, które nie działają tak samo powinny być inaczej reprezentowane.
    • \n", + "
    • Każda akcja użytkownika powinna mieć reakcję programu.
    • \n", + "
    • Kiedy użytkownik ma do podjęcia decyzję, system podaje mu całą dostępną informację.
    • \n", + "
    \n", + "
  7. System musi być \"idioto-odporny\":
  8. \n", + "
      \n", + "
    • Każdy robi błędy, więc każdy błąd powinien dać się naprawić.
    • \n", + "
    • Gdy użytkownik zrobi błąd, System daje mu o tym znać, zanim … wpadnie w PRAWDZIWE kłopoty.
    • \n", + "
    • Informacje o błędach powinny być zrozumiałe dla użytkownika i mówić mu, jak naprawić problem.
    • \n", + "
    \n", + "
  9. Wczuj się w użytkownika
  10. \n", + "
      \n", + "
    • Eliminuj niepotrzebne decyzje (nie pytaj, jak nie musisz).
    • \n", + "
    • Im mniej kroków do celu, tym lepiej.
    • \n", + "
    • Użytkownik powinien zawsze móc dowiedzieć się, co robić dalej.
    • \n", + "
    • Użytkownik powinien zawsze wiedzieć, co się dzieje.\n", + "
    \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Użyteczność portali internetowych\n", + "### 10 heurystyk Jakoba Nielsena i Rolfa Molicha\n", + "### Zasady dobrej nawigacji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tworzenie raportu użyteczności" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "10. Wybrane zagadnienia użyteczności[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb new file mode 100644 index 0000000..496c5c5 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/11_aspekty_użyteczności-checkpoint.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

11. Aspekty użyteczności[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aspekty użyteczności\n", + "Użyteczność aplikacji powinna być analizowana pod kątem sześciu aspektów:\n", + "* kontekst, \n", + "* wprowadzanie danych, \n", + "* wyprowadzanie danych, \n", + "* responsywność, \n", + "* łączność z siecią, \n", + "* zasoby." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kontekst" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wprowadzanie danych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wyprowadzanie danych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Responsywność" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Łączność z siecią" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zasoby" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "11. Aspekty użyteczności[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb new file mode 100644 index 0000000..3210b7b --- /dev/null +++ b/wykłady/.ipynb_checkpoints/12_ocena_jakości_systemu-checkpoint.ipynb @@ -0,0 +1,167 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

12. Ocena jakości systemu informatycznego[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czym jest jakość produktu?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Toma de Marco

\n", + " \n", + "Jakość produktu to funkcja tego, jak bardzo zmienia on świat na lepsze.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Geralda Weinberga

\n", + " \n", + "Jakość to subiektywnie pojmowana wartość dla kogoś.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Josepha Jurana

\n", + " \n", + "1. Jakość składa się z tych cech produktu, które spełniają potrzeby klientów i dostarczają im satysfakcji. \n", + "2. Jakość to brak braków.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Armanda Feigenbauma

\n", + " \n", + "Jakość to coś, co określa tylko i wyłącznie klient - a nie inżynier, dział marketiingu, czy też kierownictwo.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Williama Edwardsa Deminga

\n", + " \n", + "Cała trudność w zdefiniowaniu jakości polega na przełożeniu przyszłych potrzeb użytkownika na wymierne cechy w taki sposób, aby produkt dawał klientowi satysfakcję za akceptowalną cenę.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definicja jakości oprogramowania" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Jakość oprogramowania

\n", + " \n", + "Jakość oprogramowania to funkcja cech oprogramowania, które spełniają oczekiwania użytkownika: znane i przewidywane.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jakość kodu źródłowego\n", + "### Metryki oceny rozmiaru kodu źródłowego\n", + "### Metryki oceny złożoności kodu źródłowego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cechy oprogramowania wpływające na ocenę jakości\n", + "### Funkcjonalność\n", + "### Niezawodność\n", + "### Użyteczność\n", + "### Wydajność\n", + "### Łatwość konserwacji\n", + "### Przenośność\n", + "### Dostępność\n", + "### Bezpieczeństwo\n", + "### Kompatybilność" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Schematy oceny jakości\n", + "### CUPRIMDSO\n", + "### FURPS\n", + "### CUPRIMDA" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "12. Ocena jakości systemu informatycznego[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/13. planowanie prac badawczo-rozwojowych-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/13. planowanie prac badawczo-rozwojowych-checkpoint.ipynb new file mode 100644 index 0000000..ca228c3 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/13. planowanie prac badawczo-rozwojowych-checkpoint.ipynb @@ -0,0 +1,223 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

13. Planowanie prac badawczo-rozwojowych[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Harmonogram projektu

\n", + " \n", + "Harmonogram projektu to plan uzyskania celów projektu uwzględniający:\n", + "
    \n", + "
  • podział pracy na etapy i zadania,
  • \n", + "
  • przydział zasobów do zadań,
  • \n", + "
  • terminy wykonania zadań.
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Ograniczenia

\n", + " \n", + "Ograniczenia to czynniki, które wpływają na realizację harmonogramu.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rodzaje ograniczeń\n", + " * Ograniczenia czasowe\n", + " * Ograniczenia techniczne\n", + " * Ograniczenia organizacyjne " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Prawo Parkinsona

\n", + " \n", + "Praca będzie się rozrastać, aby wypełnić cały czas na nią przewidziany.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Struktura Podziału Pracy

\n", + " \n", + "Struktura Podziału Pracy to hierarchiczna reprezentacja podziału pracy w projekcie.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tworzenie harmonogramu projektu w programie MS-Project" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie daty początku projektu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie struktury podziału pracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie trybów zadań" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie kamieni milowych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie tygodniowego kalendarza czasu pracy dla zespołu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustalenie zależności między zadaniami" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie odstępów między zadaniami" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie zasobów w projekcie: \n", + " * Praca (ludzie + komputery), \n", + " * Materiały, \n", + " * Inne koszty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie tygodniowego kalendarza czasu pracy dla zasobów typu \"praca\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Przydzielenie zasobów do zadań" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sprawdzenie poprawności alokacji zasobów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wyeliminowanie przeciążeń zasobów\n", + " * manualne bilansowanie zasobów\n", + " * automatyczne bilansowanie zasobów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analiza ścieżki krytycznej" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sporządzanie raportów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modyfikacja harmonogramu podczas trwania projektu" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "13. Planowanie prac badawczo-rozwojowych[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/14_zarządzanie pracami badawczo-rozwojowymi-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/14_zarządzanie pracami badawczo-rozwojowymi-checkpoint.ipynb new file mode 100644 index 0000000..35efcf6 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/14_zarządzanie pracami badawczo-rozwojowymi-checkpoint.ipynb @@ -0,0 +1,87 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

14. Zarządzanie projektami badawczo-rozowjowymi[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Produkuj hamburgery, sprzedawaj hamburgery...\n", + "## ... czyli czym różni się zarządzanie projektem B+R od kierowania barem szybkiej obsługi\n", + "Różnice w zarządzaniu można zobrazować w kilku aspektach:\n", + " * Podejście do popełniania błędów przez pracowników\n", + " * Sposób motywowania: bodźce negatywne i pozytywne\n", + " * Podejście do indywidualistów\n", + " * Podejście do kreatywności i samodoskonalenia się pracowników" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czy ludzie pracują lepiej pod presją?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prawo Parkinsona - mit czy rzeczywistość?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7 syrenich śpiewów...\n", + "## ...czyli o pokusach w zarządzaniu, które prowadzą na manowce" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jakie czynniki faktycznie wpływają na lepszą pracę informatyków?" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "14. Zarządzanie pracami badawczo-rozwojowymi[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb new file mode 100644 index 0000000..473c78b --- /dev/null +++ b/wykłady/.ipynb_checkpoints/15_demonstracja_projektu-checkpoint.ipynb @@ -0,0 +1,54 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

15. Demonstracja wyników projektu badawczo-rozwojowego [wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Demonstrowane projekty powinny być na 6. poziomie gotowości technologicznej.\n", + "
" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "15. Demonstracja projektu[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/Wykład 2. Projekt Badawczo-Rozwojowy-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/Wykład 2. Projekt Badawczo-Rozwojowy-checkpoint.ipynb new file mode 100644 index 0000000..c075cc1 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/Wykład 2. Projekt Badawczo-Rozwojowy-checkpoint.ipynb @@ -0,0 +1,297 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Projekt badawczo-rozwojowy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Działalność badawczo-rozwojowa\n", + "> Działalność badawczo-rozwojowa to działalność **twórcza** \n", + "obejmująca **badania naukowe** lub **prace rozwojowe**, \n", + "podejmowana w **sposób systematyczny** \n", + "w celu **zwiększenia zasobów wiedzy** \n", + "oraz wykorzystania zasobów do **tworzenia nowych zastosowań**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definicja projektu badawczo-rozwojowego\n", + "Projekt badawczo-rozwojowy to system działań składający się z: \n", + "- zakresu projektu, \n", + "- terminu realizacji, \n", + "- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n", + "\n", + "Projekt badawczo-rowojowy charakteryzuje się następującymi cechami: \n", + " - niepowtarzalność,\n", + " - złożoność,\n", + " - identyfikowalność." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład projektu badawczo-rozwojowego: AI Searcher\n", + "\n", + "### Definicja projektu:\n", + "System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n", + "\n", + "\n", + "### Zakres projektu: \n", + "System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n", + "System realizuje następujący scenariusz działania:\n", + " 1. Pracownik Straży Granicznej wpisuje zapytanie\n", + " 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych\n", + " 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n", + " 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n", + " 5. Translator tłumaczy znalezione teksty na język polski. \n", + " 6. Klasyfikator wybiera teksty potencjalnie przestępcze:\n", + " 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n", + " \n", + "### Termin realizacji: \n", + "grudzień 2018 - grudzień 2021\n", + "\n", + "### Zasoby:\n", + " * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n", + " * Kapitał: dotacja z NCBR\n", + " * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n", + " * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poziomy gotowości technologicznej projektu B+R\n", + "\n", + "### Poziom 1.\n", + "Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n", + "### Poziom 2.\n", + "Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n", + "### Poziom 3.\n", + "Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n", + "\n", + "### Poziom 4.\n", + "Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n", + "### Poziom 5.\n", + "Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n", + "### Poziom 6.\n", + "Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożóny prototyp z interakcją użytkowników).\n", + "\n", + "### Poziom 7.\n", + "Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n", + "\n", + "### Poziom 8.\n", + "Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n", + "\n", + "### Poziom 9.\n", + "Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n", + "\n", + "[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Produkt High-Tech\n", + "Oczekuje się, że wynikiem projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n", + "\n", + "## Czym jest produkt High-Tech?\n", + "\n", + "### Definicja produktu\n", + "Produkt =\n", + "Zawartość + \n", + "Funkcjonalność +\n", + "Konstrukcja +\n", + "Monetyzacja \n", + "Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Wyraz \"technologia\" pochodzi z języka greckiego:\n", + "* techne: sztuka, umiejętność,\n", + "* logia: nauka (czegoś) \n", + "\n", + "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Czym jest produkt \"high-tech\"?\n", + "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n", + "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n", + "\n", + "R&D Investments a wartość produktu:\n", + "* Low-tech (< 1.0%);\n", + "* Medium-low-tech (1.0%-2.5%);\n", + "* Medium-high-tech (2.5%-8%); \n", + "* High-tech (>8.0%)\n", + "\n", + "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n", + "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n", + "* złożoność technologiczna\n", + "* krótki cykl życia (spowodowany wyścigiem technologicznym)\n", + "* szybkie starzenie się\n", + "* niewielka liczba klientów w początkowym stadium sprzedaży\n", + "* duże nakłady na R&D\n", + "* niepewności technologiczne\n", + "\n", + "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n", + "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n", + "* dezorientacja klienta (np. jak działa produkt)\n", + "* niespełnianie oczekiwań (przez pierwsze wersje)\n", + "* duża konkurencja\n", + "* możliwość błyskawicznego upadku rynku \n", + "* spadająca cena produktu\n", + "* szybki wzrost stosunku jakości do ceny\n", + "\n", + "### Ocena ryzyka\n", + "Na 7 zaawansowanych pomysłów produktu high-tech: \n", + "* 4 wchodzą w fazę realizacji,\n", + "* 1.5 są uruchamiane,\n", + "* 1 odnosi sukces." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# \"Golden Rules\" na odniesienie sukcesu\n", + "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n", + "\n", + "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n", + "* Pomysł musi być nowatorski - a nie skopiowany\n", + "* Taki produkt wymaga R&D...\n", + " * A to jest kosztowne i\n", + " * Trudne w konstrukcji\n", + "* Często pomysły chronione są przez patenty.\n", + "\n", + "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n", + "\n", + "## 2. \"Popraw wydajność użytkownika\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Wykonuj wszystko szybciej i taniej\n", + " * Skróć czas nauki\n", + " * Automatycznie poprawiaj błędy\n", + " * Automatyzuj niektóre kroki\n", + "* Dbaj o wygodę użytkowania\n", + "* Unikaj\n", + " * Reklam\n", + " * Przestojów na płacenie (np. bramek)\n", + " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n", + "\n", + "## 3. \"Chroń inwestycje użytkownika\"\n", + "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n", + "* hardware'u\n", + "* software'u\n", + "* danych\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Minimalizuj koszty zmian\n", + "* Wydłużaj czas życia produktów\n", + "* Twórz rozwiązania przenośne\n", + "\n", + "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Unikaj przerw w działaniu\n", + "* Skracaj czas i zmniejszaj koszty przywrócenia:\n", + " * działania\n", + " * danych\n", + "\n", + "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Dostarczaj więcej za mniej\n", + " * Podwyższaj jakość\n", + " * Zmniejszaj cenę\n", + " * A najlepiej - obie czynności\n", + " \n", + "* Jakość (wydajność) przedstawiaj w liczbach\n", + " * Gb, 100-punktowa miara jakości\n", + " * sekundy...\n", + "\n", + "## 6. \"Zapewnij elastyczność i skalowalność\"\n", + "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n", + "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Umożliwiaj dodawanie / usuwanie funkcji\n", + "* Zapewnij użycie w różnych środowiskach\n", + "* Zapewnij możliwość stosowania dla większych zbiorów danych\n", + "\n", + "## 7. \"Zadbaj o atrakcyjny wygląd\"\n", + "Rozwiązanie powinno być ładne i ...modne.\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Weź pod uwagę:\n", + " * kolorystykę\n", + " * kształt\n", + " * wykończenie\n", + " * prostotę\n", + " \n", + "## 8. \"Dostarczaj rozrywkę\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n", + "* Ludzie lubią wyzwania - dostarczaj wyzwania\n", + "* Ludzie lubią rywalizację...\n", + "* Ludzie mają swoje hobby i upodobania...\n", + "* Wszyscy wolą wakacje od pracy... \n", + " \n", + "## 9. \"Stwórz nową modę\"\n", + "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n", + "Wskazówki:\n", + "* Produkt musi być \"osobisty\".\n", + "* Musi mieć wygląd określany jako \"cool\".\n", + "* Trzeba sprzedawać go drogo...\n", + "* ... w niewielkich ilościach...\n", + "* ... ale za to robić wokół niego sporo szumu.\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/.ipynb_checkpoints/json_script-checkpoint.ipynb b/wykłady/.ipynb_checkpoints/json_script-checkpoint.ipynb new file mode 100644 index 0000000..01ec379 --- /dev/null +++ b/wykłady/.ipynb_checkpoints/json_script-checkpoint.ipynb @@ -0,0 +1,114 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#procedura napisywania plików ipynb (generowanie nagłówka i metadanych)\n", + "import json\n", + "\n", + "def modjup(filen,numer,tytul,typ,author,email,lang,title,year):\n", + " zerocell=['![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\\n',\n", + " '
\\n', \n", + " '

%s

\\n'%(title),\n", + " '

%s. %s [%s]

\\n'%(numer,tytul,typ),\n", + " '

%s (%s)

\\n'%(author,year),\n", + " '
\\n',\n", + " '\\n',\n", + " '![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)']\n", + " zerodict={'cell_type': 'markdown','metadata': {'collapsed': False},'source': zerocell}\n", + " with open(filen, 'r+') as f:\n", + " ll=json.load(f)\n", + " ll[\"metadata\"][\"author\"]=author\n", + " ll[\"metadata\"][\"email\"]=email\n", + " ll[\"metadata\"][\"lang\"]=lang\n", + " subtitle=\"%s.%s[%s]\"%(numer,tytul,typ)\n", + " ll[\"metadata\"][\"subtitle\"]=subtitle\n", + " ll[\"metadata\"][\"title\"]=title\n", + " ll[\"metadata\"][\"year\"]=year\n", + " \n", + " if not(ll['cells'][0]['source'][0]==zerocell[0]):\n", + " ll['cells'].insert(0,zerodict)\n", + " else:\n", + " ll['cells'][0]=zerodict\n", + " f.seek(0)\n", + " json.dump(ll,f,indent=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "UnicodeDecodeError", + "evalue": "'charmap' codec can't decode byte 0x81 in position 8350: character maps to ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mUnicodeDecodeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[1;31m#uruchom procedurę\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[0mmodjup\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilen\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnumer\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtytul\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtyp\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mauthor\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0memail\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlang\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtitle\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0myear\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36mmodjup\u001b[1;34m(filen, numer, tytul, typ, author, email, lang, title, year)\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[0mzerodict\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'cell_type'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m'markdown'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'metadata'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;34m'collapsed'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'source'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mzerocell\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'r+'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[0mll\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[0mll\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"metadata\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"author\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mauthor\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[0mll\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"metadata\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"email\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0memail\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\json\\__init__.py\u001b[0m in \u001b[0;36mload\u001b[1;34m(fp, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[0mkwarg\u001b[0m\u001b[1;33m;\u001b[0m \u001b[0motherwise\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mJSONDecoder\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;31m`\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mused\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 292\u001b[0m \"\"\"\n\u001b[1;32m--> 293\u001b[1;33m return loads(fp.read(),\n\u001b[0m\u001b[0;32m 294\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobject_hook\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobject_hook\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 295\u001b[0m \u001b[0mparse_float\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparse_float\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparse_int\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparse_int\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\encodings\\cp1250.py\u001b[0m in \u001b[0;36mdecode\u001b[1;34m(self, input, final)\u001b[0m\n\u001b[0;32m 21\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 23\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcharmap_decode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdecoding_table\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 25\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mStreamWriter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCodec\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mStreamWriter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mUnicodeDecodeError\u001b[0m: 'charmap' codec can't decode byte 0x81 in position 8350: character maps to " + ] + } + ], + "source": [ + "#zmodyfikuj te dane\n", + "filen=\"01_praca_zespolowa.ipynb\"\n", + "\n", + "numer=\"1\"\n", + "tytul=\"\"\n", + "typ=\"wyklad\"\n", + "\n", + "author=\"Krzysztof Jassem\"\n", + "email=\"jassem@amu.edu.pl\"\n", + "lang= \"pl\"\n", + "title=\"Przygotowanie do projektu badawczo-rozwojowego\"\n", + "year=\"2021\"\n", + "\n", + "#uruchom procedurę\n", + "modjup(filen,numer,tytul,typ,author,email,lang,title,year)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/01_praca_zespolowa.ipynb b/wykłady/01_praca_zespolowa.ipynb new file mode 100644 index 0000000..6100c9d --- /dev/null +++ b/wykłady/01_praca_zespolowa.ipynb @@ -0,0 +1,274 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

1. Praca zespołowa[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Praca zespołowa w projekcie badawczo-rozwojowym\n", + "## Cele wykładu\n", + "1. Stworzenie zespołów projektowych\n", + "2. Zapewnienie dobrej współpracy w zespołach\n", + "3. Wybór liderów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. Jak działa nasza pamięć?\n", + "## Rodzaje pamięci\n", + "### Pamięć sensoryczna\n", + "Pamięć sensoryczna to inaczej pamięć zmysłów.\n", + "#### Charaterystyka pamięci sensorycznej\n", + "* krótki czas trwania (do ok. 0,5 s),\n", + "* duża pojemność (ok. 99% nadchodzących informacji),\n", + "* powiązanie ze zmysłami (węch, wzrok, dotych, słuch, smak)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Przykład

\n", + " \n", + "Dźwięk słyszymy przez pewien czas (min. 0,5 sek. - nawet gdy trwa krócej)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Interakcje pamięci sensorycznej\n", + "Informacje z pamięci sensorycznej przekazywane są do pamięci krótkotrwałej.\n", + "\n", + "### Pamięć krótkotrwała\n", + "Przechowuje niewielkie ilości informacji przez krótki okres (bez dokonywania powtórek: kilka do kilkunastu sekund).\n", + "\n", + "#### Interakcje pamięci krótkotrwałej\n", + "Pobiera informacje z pamięci sensorycznej, z pamięci krótkotrwałej oraz z pamięci długotrwałej.\n", + "Przekazuje informacje do pamięci krótkotrwałej i długotrwałej.\n", + "\n", + "#### Liczba Millera\n", + "Jest to liczba ustalona przez George'a Millera (1920 - 2012), amerykańskiego psychologa, uważanego za twórzę psychologii poznawczej, w roku 1956 na podstawie badań psychologicznych nad zapamiętywaniem informacji. Liczba ta waha się w zależności od rodzaju informacji do zapamiętania (dźwięk, smak, obraz, liczba), ale zawsze jest to około 7 (±2).\n", + "\n", + "##### Wnioski w pracy zespołowej\n", + "* Nie warto zasypywać kolegi z zespołu nadmiarem informacji zo zapamiętania (bo i tak nie zapamięta).\n", + "* Pozycje do zapamiętania lepiej jest podzielić na kategorie, (między 5-9). \n", + "* Można dokonać kolejnego podziału pozycji na podkategorie. Takich podziałów można dokonać wgłąb do poziomu 7 :)\n", + "\n", + "### Pamięć długotrwała\n", + "* W pamięci długotrwałej tworzony jest wynik przetwarzania informacji - trwały ślad pamięciowy. \n", + "* Pamięć długotrwała zawiera całą naszą wiedzę na temat świata, wszystkie wspomnienia i umiejętności. \n", + "* Jest to pamięć o największej pojemności i najdłuższym czasie przechowywania informacji.\n", + "\n", + "#### Interakcje pamięci długotrwałej\n", + "* Pobiera informacje z pamięci krótkotrwałej.\n", + "* Przekazuje informacje do pamięci krótkotrwałej." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Motywacja do pracy\n", + ">Motywowanie do pracy to proces świadomego i celowego oddziaływania na pracowników poprzez dostarczanie środków i możliwości spełnienia ich oczekiwań w taki sposób, aby obie strony (pracodawca i pracownik) odniosły korzyści (Encyklopedia zarządzania)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Piramida potrzeb Maslova

\n", + "
    \n", + "
  1. Potrzeby fizjologiczne (najniższy rząd potrzeb)
  2. \n", + "
  3. Potrzeby bezpieczeństwa
  4. \n", + "
  5. Potrzeby przynależności
  6. \n", + "
  7. Potrzeby uznania
  8. \n", + "
  9. Potrzeby samorealizacji
  10. \n", + "
\n", + "\n", + "

Teoria Maslova

\n", + "
    \n", + "
  • Motywacja to chęć zaspokojenie potrzeby najsilniej odczuwanej.
  • \n", + "
  • Zaspokojenie potrzeby wyższego rzędu może nastąpić nie wcześniej niż po zaspokojeniu potrzeby niższego rzędu.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Typy pracowników\n", + "W rzeczywistości po zaspokojeniu potrzeb najniższych kolejność potrzeb wyższego rzędu zależy od osobowości pracownika. Pracownicy różnią się bowiem w aspektach motywacji do pracy (co motywuje najbardziej) i podejścia do pracy (sposób realizacji pracy).\n", + "\n", + "### Typy pracowników pod względem motywacji\n", + "A. Pracownik nastawiony na wykonanie zadania \n", + "B. Pracownik nastawiony na siebie (własny rozwój; satysfakcję) \n", + "C. Pracownik nastawiony na interakcję (komunikację w grupie)\n", + "\n", + "### Typy pracowników pod względem podejścia do pracy\n", + "1. Posuwający pracę do przodu\n", + "2. Wybitny technik; specjalista w dziedzinie\n", + "3. Uznający priorytet komunikacji, współpracy między wykonawcami projektu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. Zespół projektowy\n", + "> Zespół projektowy to niewielka liczba ludzi posiadających komplementarne umiejętności, zaangażowanych w realizację wspólnego celu ogólnego oraz celów cząstkowych, których podejście opiera się na współodpowiedzialności” (J.Katzenach, D.Smith 2001, Siła zespołów. Wpływ pracy zespołowej na efektywność organizacji\", s. 26).\n", + "\n", + "Na skuteczność pracy w zespole mają wpływ 4 główne czynniki:\n", + "* Skład zespołu\n", + "* Spójność grupy\n", + "* Komunikacja w zespole\n", + "* Organizacja zespołu\n", + "\n", + "## Skład zespołu\n", + "### Członkowie zespołu\n", + "Grupa powinna zawierać uzupełniające się osobowości:\n", + "* ludzi mających własne pomysły - wybitnych techników (B2)\n", + "* ludzi nastawionych na komunikację z innymi (C3)\n", + "* ludzi nastawionych na posuwanie pracy do przodu (A1) \n", + "\n", + "### Lider zespołu\n", + "* Lider odgrywa najważniejszą rolę w zespole.\n", + "* Liderzy z reguły są mianowani i odpowiadają przed menedżerem przedsięwzięcia.\n", + "* Liderzy muszą codziennie śledzić pracę swojej grupy i blisko współpracować z menedżerami przedsięwzięcia.\n", + "* Lider musi być akceptowany przez zespół.\n", + "\n", + "## Spójność grupy\n", + "Grupa spójna (inaczej: zgrana) to grupa, w której:\n", + "* członkowie mają wspólne cele,\n", + "* nie występują kliki (podgrupy).\n", + "\n", + "### Zalety grupy spójnej\n", + "* Można wypracować grupowy standard jakości.\n", + "* Bliska współpraca – członkowie uczą się od siebie nawzajem.\n", + "* Członkowie grupy znają nawzajem swoje prace. Opuszczenie grupy przez jej członka nie powoduje utracenie ciągłości pracy.\n", + "* Programowanie jest pozbawione indywidualizmu (program uważany jest za własność grupy).\n", + "\n", + "### Wady grupy spójnej\n", + "* Nieracjonalny opór przed zmianą lidera;\n", + "* Myślenie grupowe – krytyczne umiejętności członków grupy osłabione są przez lojalność wobec grupy.\n", + "\n", + "## Komunikacja w zespole\n", + "Proces skutecznej komunikacji to przekazywanie informacji w sposób powodujący realizację celów. \n", + "Skutkiem efektywnej komunikacji jest zwiększenie motywacji do pracy oraz zmniejszenie oporu wobec zmian. \n", + "\n", + "### Zasady skutecznej komunikacji\n", + "* Dostosowanie klarowności wypowiedzi do odbiorcy\n", + "* Dostosowanie *metod komunikacji* do zespołu\n", + "\n", + "### Metody komunikacji\n", + "* Pionowa lub pozioma\n", + "* Jednostronna lub dwustronna\n", + "* Werbalna lub pisemna\n", + "* Formalna lub nieformalna\n", + "\n", + "## Organizacja zespołu\n", + "Organizacja zespołu to hierarchia ról przypisanych członkom zespołu.\n", + "\n", + "### Rodzaje organizacji zespołu\n", + "#### Organizacja formalna (hierachiczna)\n", + "Formalna, hierarchiczna organizacja zespołu jest niezbędna w przypadku pracowników niedoświadczonych.\n", + "\n", + "#### Organizacja nieformalna\n", + "Organizacja nieformalna sprawdza się, gdy większość członków to ludzie doświadczeni i kompetentni.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. Lider zespołu\n", + "Lider zespołu to w ogólności osoba zarządzająca członkami zespołu w celu realizacji celów powierzonego projektu. \n", + "W prezentowanym NA TYM WYKŁADZIE podejściu lider to osoba zapewniająca motywację do pracy członkom zespołu.\n", + "\n", + "## Typy lidera (wg Daniela Goldmana)\n", + "\n", + "> Daniel Goleman (ur. 7 marca 1946 w Stockton) – amerykański psycholog żydowskiego pochodzenia, publicysta naukowy. Autor bestselleru Inteligencja emocjonalna (1995). (Wikipedia)\n", + "\n", + "### Wizjoner: \"Chodź ze mną\"\n", + "* Pokazuje kierunek działania.\n", + "* Motywuje do osiągania wspólnych celów.\n", + "* Pozwala ludziom samodzielnie poszukiwać nowych rozwiązań.\n", + "* Przyciąga ludzi do siebie, docenia i promuje rolę poszczególnych osób w zespole.\n", + "\n", + "### Trener: \"Rozwijaj się\"\n", + "* Motywuje ludzi do lepszej pracy poprzez rozpoznawanie ich mocnych i słabych stron.\n", + "* Zachęca ludzi, aby walczyli z przeciwnościami i rozwijali się.\n", + "* Zachęca, by korzystali ze swoich mocnych, pozytywnych cech i czerpali z nich napęd do pracy.\n", + "\n", + "### Lider afiliacyjny: \"Porozmawiajmy\"\n", + "* Szanuje każdą osobę pracującą w organizacji.\n", + "* „Ludzie to nie roboty” – odczuwają radość i zmęczenie.\n", + "* Szczerze interesuje się życiem swoich pracowników.\n", + "* Dba o dobrą atmosferę pracy.\n", + "* Posiada wysoką empatię, czyli umiejętność odczytywania uczuć i dostrzegania punktu widzenia innych osób.\n", + "\n", + "### Demokrata: \"Każdy głos jest ważny\"\n", + "* Liczy się zdanie każdego pracownika.\n", + "* Potrafi słuchać ludzi i wykorzystywać ich pomysły.\n", + "* Potrafi przyjmować również krytykę.\n", + "* Pracownicy mają poczucie, że uczestniczą w decyzjach podejmowanych w firmie, przez co bardziej angażują się w pracę.\n", + "\n", + "### Poganiacz: \"Zrób to natychmiast\"\n", + "* Ustawia wysokie standardy pracy zarówno dla siebie jak i dla swoich pracowników\n", + "* Jest bardzo mocno nastawiony na sukces, koncentruje się na nieustannym poprawianiu wyników. \n", + "* Jego popularne powiedzenie to: „rób to, co ja – natychmiast!”.\n", + "\n", + "### Dyktator: \"Rób, co każę\"\n", + "* Nazywany „zarządzaniem przez strach”.\n", + "* Polega na ciągłym kontrolowaniu pracowników, wydawaniu im poleceń i oczekiwaniu, że zostaną one wypełnione dokładnie tak, jak wymaga tego przywódca. \n", + "* To on podejmuje decyzje, a polecenia wydaje w sposób zdecydowany, stanowczy i nie znoszący sprzeciwu.\n" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "01. Praca zespołowa[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/02_projekt_badawczo-rozwojowy.ipynb b/wykłady/02_projekt_badawczo-rozwojowy.ipynb new file mode 100644 index 0000000..377e9c2 --- /dev/null +++ b/wykłady/02_projekt_badawczo-rozwojowy.ipynb @@ -0,0 +1,311 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

2. Projekt badawczo-rozwojowy[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Działalność badawczo-rozwojowa\n", + "> Działalność badawczo-rozwojowa to działalność **twórcza** \n", + "obejmująca **badania naukowe** lub **prace rozwojowe**, \n", + "podejmowana w **sposób systematyczny** \n", + "w celu **zwiększenia zasobów wiedzy** \n", + "oraz wykorzystania zasobów do **tworzenia nowych zastosowań**." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definicja projektu badawczo-rozwojowego\n", + "Projekt badawczo-rozwojowy to system działań składający się z: \n", + "- zakresu projektu, \n", + "- terminu realizacji, \n", + "- zasobów potrzebnych do realizacji projektu (ludzie, kapitał, wiedza, technologia).\n", + "\n", + "Projekt badawczo-rowojowy charakteryzuje się następującymi cechami: \n", + " - niepowtarzalność,\n", + " - złożoność,\n", + " - identyfikowalność." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przykład projektu badawczo-rozwojowego: AI Searcher\n", + "\n", + "### Definicja projektu:\n", + "System działań mających na celu stworzenie systemu informatycznego wspomagającego pracowników Polskiej Straży Granicznej. \n", + "\n", + "\n", + "### Zakres projektu: \n", + "System informatyczny wdrożony w siedzibie Straży Granicznej, który ma pomagać w znajdowaniu treści przestępczych w Internecie. \n", + "System realizuje następujący scenariusz działania:\n", + " 1. Pracownik Straży Granicznej wpisuje zapytanie.\n", + " 2. Moduł Rozszerzania Zapytań rozszerza zapytanie na zestaw kwerned do wyszukiwarek internetowych.\n", + " 3. Translator tłumaczy kwerendy na języki: rosyjski, ukraiński i białoruski.\n", + " 4. Crawler wyszukuje dokumentów w trzech językach przygranicznych i języku polskim.\n", + " 5. Translator tłumaczy znalezione teksty na język polski. \n", + " 6. Klasyfikator wybiera teksty potencjalnie przestępcze.\n", + " 7. Analizator Lingwistyczny oznacza informację dodatkową w dokumentach:\n", + " \n", + "### Termin realizacji: \n", + "grudzień 2018 - grudzień 2021\n", + "\n", + "### Zasoby:\n", + " * Ludzie: Wojskowa Akademia Techniczna, UAM, Ken-Bit https://www.kenbit.pl/\n", + " * Kapitał: dotacja z NCBR\n", + " * Wiedza: Najnowsze badania z klasyfikacji tekstu, uczenia automatycznego itp.\n", + " * Technologia: Framework do tworzenia interfejsu użytkownika, algorytmy do klasyfikacji tekstu, modele języka" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Poglądowy widok systemu AI Searcher\n", + "\"Zrzut" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poziomy gotowości technologicznej projektu B+R\n", + "\n", + "### Poziom 1.\n", + "Rozpoczęto badania naukowe (np. zdefiniowano tematu pracy mgr).\n", + "### Poziom 2.\n", + "Znaleziono zastosowania badań naukowych (np. określono, na czym będzie polegał projekt mgr).\n", + "### Poziom 3.\n", + "Przeprowadzono pierwsze eksperymenty na krytycznych technologiach (np. wykonano proof-of-concept).\n", + "\n", + "### Poziom 4.\n", + "Zintegrowano podstawowe komponenty prototypu w warunkach laboratoryjnych (np. zrealizowano \"user-stories\" na komputerze dewelopera).\n", + "### Poziom 5.\n", + "Zweryfikowano działanie w warunkach zbliżónych do rzeczywistego (np. przeprowadzono testowanie prototypu wdrożónego na serwerze WMI).\n", + "### Poziom 6.\n", + "Dokonano demonstracji działania w warunkach zbliżónych do rzeczywistych (np. zademonstrowano wdrożony prototyp z interakcją użytkowników).\n", + "\n", + "### Poziom 7.\n", + "Dokonano demonstracji systemu w warunkach operacyjnych (np. zademonstrowano prototyp wdrożony u użytkownika / klienta).\n", + "\n", + "### Poziom 8.\n", + "Potwierdzono zamierzony poziom technologii w warunkach operacyjnych (np. pomyślnie zakończono testowanie akceptacyjne).\n", + "\n", + "### Poziom 9.\n", + "Stwierdzono, że wypracowana technologia odniosła zamierzony efekt (np. stwierdzono, że stosowanie rozwiązania przynosi wymierne korzyści). \n", + "\n", + "[Formalny opis poziomów gotowości technologicznej](https://archiwum.ncbr.gov.pl/fileadmin/zalewska/5_1_1_1_2018/13_poziomy_gotowosci_technologicznej.pdf)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Produkt High-Tech\n", + "Oczekuje się, że wynikiem projektu badawczo-rozwojowego w informatyce jest produkt High-Tech.\n", + "\n", + "## Czym jest produkt High-Tech?\n", + "\n", + "### Definicja produktu\n", + "Produkt = \n", + "Zawartość + \n", + "Funkcjonalność + \n", + "Konstrukcja + \n", + "Monetyzacja \n", + "Oczekuje się zatem, że z produkt posiada jakąś zawartość (Zawartość), z której kożna korzystać (Funkcjonalność), gdyż został odpowiednio skonstruowany (Konstrukcja), ale trzeba za to płacić (Monetyzacja)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "Wyraz \"technologia\" pochodzi z języka greckiego:\n", + "
    \n", + "
  • techne: sztuka, umiejętność
  • \n", + "
  • logia: nauka (czegoś)
  • \n", + "
\n", + "\n", + "Technologia w dzisiejszym rozumieniu to zastosowanie wiedzy naukowej do stworzenia czegoś pożytecznego dla człowieka." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Czym jest produkt \"high-tech\"?\n", + "Produkt \"high tech\" to taki produkt, który wykorzystuje najnowszą wiedzę naukową i techniczną. \n", + "Produkt \"high tech\" wymaga nakładów na badania (*R&D investments*). \n", + "\n", + "R&D Investments a wartość produktu:\n", + "* Low-tech (< 1.0%);\n", + "* Medium-low-tech (1.0%-2.5%);\n", + "* Medium-high-tech (2.5%-8%); \n", + "* High-tech (>8.0%)\n", + "\n", + "### Cechy produktu \"high-tech\" z punktu widzenia inwestora\n", + "Dcydując się na wytworzenie produktu high-tech\", inwestor powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n", + "* złożoność technologiczna,\n", + "* krótki cykl życia (spowodowany wyścigiem technologicznym),\n", + "* szybkie starzenie się,\n", + "* niewielka liczba klientów w początkowym stadium sprzedaży,\n", + "* duże nakłady na R&D,\n", + "* niepewności technologiczne.\n", + "\n", + "### Cechy produktu \"high-tech\" z punktu widzenia klienta\n", + "Dcydując się na zakup produktu high-tech\", klient powinien brać pod uwagę ryzyko wynikające z następujących cech produktów tej kategorii:\n", + "* dezorientacja klienta (np. jak działa produkt),\n", + "* niespełnianie oczekiwań (przez pierwsze wersje),\n", + "* duża konkurencja,\n", + "* możliwość błyskawicznego upadku rynku,\n", + "* spadająca cena produktu,\n", + "* szybki wzrost stosunku jakości do ceny.\n", + "\n", + "### Ocena ryzyka\n", + "Na 7 zaawansowanych pomysłów produktu high-tech: \n", + "* 4 wchodzą w fazę realizacji,\n", + "* 1.5 są uruchamiane,\n", + "* 1 odnosi sukces." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# \"Golden Rules\" na odniesienie sukcesu\n", + "Aby produkt high-tech miał szanse odnieść sukces na rynku, powinien spełniać przynajmniej kilka z wymienionych poniżej postulatów:\n", + "\n", + "## 1. \"Zapewnij nowatorską / wyjątkową (\"unique\") funkcję lub cechę\"\n", + "* Pomysł musi być nowatorski - a nie skopiowany.\n", + "* Taki produkt wymaga R&D...\n", + " * A to jest kosztowne i...\n", + " * Trudne w konstrukcji.\n", + "* Często pomysły chronione są przez patenty.\n", + "\n", + "\"Nowatorski\" może oznaczać \"nowy model sprzedaży\"\n", + "\n", + "## 2. \"Popraw wydajność użytkownika\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Wykonuj wszystko szybciej i taniej:\n", + " * Skróć czas nauki\n", + " * Automatycznie poprawiaj błędy\n", + " * Automatyzuj niektóre kroki\n", + "* Dbaj o wygodę użytkowania\n", + "* Unikaj:\n", + " * Reklam\n", + " * Przestojów na płacenie (np. bramek)\n", + " * Ogólnie: czynności, ktore pochłaniają czas użytkownika\n", + "\n", + "## 3. \"Chroń inwestycje użytkownika\"\n", + "Zasada ta mówi o tym, aby szanować pieniądze wydane przez użytkownika przed wprowadzeniem naszego rozwiązania. Dotyczy to:\n", + "* hardware'u\n", + "* software'u\n", + "* danych\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Minimalizuj koszty zmian\n", + "* Wydłużaj czas życia produktów\n", + "* Twórz rozwiązania przenośne\n", + "\n", + "## 4. \"Minimalizuj koszty awarii lub utraty danych\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Unikaj przerw w działaniu\n", + "* Skracaj czas i zmniejszaj koszty przywrócenia:\n", + " * działania\n", + " * danych\n", + "\n", + "## 5. \"Poprawiaj wspólczynnik jakości do ceny\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Dostarczaj więcej za mniej\n", + " * Podwyższaj jakość\n", + " * Zmniejszaj cenę\n", + " * A najlepiej - obie czynności naraz\n", + " \n", + "* Jakość (wydajność) przedstawiaj w liczbach\n", + " * Gb, 100-punktowa miara jakości\n", + " * sekundy...\n", + "\n", + "## 6. \"Zapewnij elastyczność i skalowalność\"\n", + "Rozwiązanie jest **elastyczne**, jeśłi może być stosowane w różnych scenariuszach. \n", + "Rozwiązanie jest **skalowalne**, jeśli można je stsosować zarówno dla małych, jak i dużych wielkości danych.\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Umożliwiaj dodawanie / usuwanie funkcji\n", + "* Zapewnij użycie w różnych środowiskach\n", + "* Zapewnij możliwość stosowania dla większych zbiorów danych\n", + "\n", + "## 7. \"Zadbaj o atrakcyjny wygląd\"\n", + "Rozwiązanie powinno być ładne i ...modne.\n", + "\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* Weź pod uwagę:\n", + " * kolorystykę\n", + " * kształt\n", + " * wykończenie\n", + " * prostotę\n", + " \n", + "## 8. \"Dostarczaj rozrywkę\"\n", + "Czego oczekujemy od systemu informatycznego:\n", + "* \"Dzieci\" lubią się bawić - dostarczaj zabawę\n", + "* Ludzie lubią wyzwania - dostarczaj wyzwania\n", + "* Ludzie lubią rywalizację...\n", + "* Ludzie mają swoje hobby i upodobania...\n", + "* Wszyscy wolą wakacje od pracy... \n", + " \n", + "## 9. \"Stwórz nową modę\"\n", + "Stworzenie nowej mody jest niezwykle trudne i kosztowne. Ale kilku producentom się udało.\n", + "Wskazówki:\n", + "* Produkt musi być \"osobisty\".\n", + "* Musi mieć wygląd określany jako \"cool\".\n", + "* Trzeba sprzedawać go drogo...\n", + "* ... w niewielkich ilościach...\n", + "* ... ale za to robić wokół niego sporo szumu." + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "02. Projekt badawczo-rozwojowy[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/03_prezentacja_koncepcji_projektuBR.ipynb b/wykłady/03_prezentacja_koncepcji_projektuBR.ipynb new file mode 100644 index 0000000..2511404 --- /dev/null +++ b/wykłady/03_prezentacja_koncepcji_projektuBR.ipynb @@ -0,0 +1,414 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

3. Prezentacja koncepcji projektu B+R[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Inwestorzy\n", + "\n", + "Opracowanie i rozwój projektu B+R wymaga środków finansowych. Środki finansowe zapewnia *inwestor*, któremu trzeba odpowiednio zaprezentować koncepcję projektu B+R, czyli przekonać go, że poświęcone środki finansowe się zwrócą. \n", + "\n", + "**Inwestor** to osoba lub instytucja, która przekazuje środki finansowe na przedsięwzięcie, oczekując zwrotu i zysku. \n", + "\n", + "**Anioł biznesu** to inwestor, który dostarcza początkowe środki finansowe (seed money) na rozpoczęcie biznesu w zamian za część udziałów lub *dług zamienny*. **Dług zamienny** to papier wartościowy, który może zostać wymienony na akcje lub udziały firmy. \n", + "\n", + "**Kapitał wysokiego ryzyka (ang. venture capital)** to kapitał dostarczony dla istniejącej firmy typu start-up, zwykle w przemyśle HT. Kapitał wysokiego ryzyka liczy na zwrot w przypadku wyjścia firmy na giełdę lub jej sprzedaży." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Główne atrybuty produktu HT\n", + "Produkt ma wnosić **wartość dodaną**, która spełni **potrzeby klienta** dzięki dobrze przemyślanej **konstrukcji**.\n", + "1. Wartość dodana to zestaw korzyści z punktu widzenia klienta. \n", + "Korzyść może być:\n", + " 1. Funkcjonalna (produkt wykonuje pracę dla klienta)\n", + " 2. Emocjonalna (produkt wpływa pozytywnie na samopoczucie klienta\n", + " 3. Rozwijająca osobowość klienta\n", + " 4. Społeczna (produkt wpływa na poprawę pozycji społecznej klienta)\n", + "\n", + "2. Spełnienie potrzeby użytkowników\n", + ">“You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.” (Steve Jobs)\n", + "\n", + "Potrzeby użytkowników:\n", + " * Wypowiedziane (odczuwane dziś i świadome) - spełniają je przeciętne produkty;\n", + " * Ukryte (odczuwane dziś, ale nieświadome) - spełniają je produkty HT;\n", + " * Oczekiwane (odczuwane w przyszłości w sposób świadomy) - spełniają je wybitne produkty HT;\n", + " * Mające się pojawić (odczuwane w przyszłości w sposób nieświadomy) - spełniają je wizjonerskie produkty HT.\n", + "\n", + "3. Odpowiednia konstrukcja (design)\n", + "Produkt jest odpowiednio skonstruowany, jeśli ma następujące cechy:\n", + "* pożyteczny (rozwiązuje problem lub wykonuje zadania), \n", + "* użyteczny (łatwy w użytku, intuicyjny),\n", + "* pożądany (wywołuje pozytywne emocje, sprawia przyjemność)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elevator pitch\n", + "**Elevator pitch** to krótka prezentacja, ktorej celem jest zwięzłe i proste omówienie produktu lub przedsięwzięcia. Oczekuje się, że trwa niedłużej niż 2 minuty. \n", + "**Jednozdaniowy elevator pitch** to najkrótsza charakterystyka planowanego przedsięwzięcia. Ma postać: " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

DLA (określenie klienta docelowego)

\n", + "

KTÓRY (ma potrzebę)

\n", + "

NAZWA NASZEGO PRODUKTU (PRZEDSIĘWZIĘCIA)

\n", + "

TO (typ produktu / przedsięwzięcia)

\n", + "

KTÓRY (ma unikalną cechę)

\n", + "

W PRZECIWIEŃSTWIE (nazwa znanej konkurencji)

\n", + "

MA PRZEWAGĘ (typ przewagi)

\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Przykład jednozdaniowego \"elevator pitch\"

\n", + " \n", + "

(DLA) Dla każdej osoby biorącej leki lub suplementy,

\n", + "

(KTÓRA) zwłaszcza dla tych którzy mają tendencje zapominać.

\n", + "

(NAZWA PRODUKTU) Take Your Meds

\n", + "

(TO) to aplikacja mobilna,

\n", + "

(KTÓRA) która zapewni, że bez pomyłek weźmiemy wszystkie leki.

\n", + "

(W PRZECIWIEŃSTWIE) w przeciwieństwie do standardowych powiadomień na telefonie i notatek na kartce,

\n", + "

(MA PRZEWAGĘ) Take Your Meds zapewnia szczegółowe informacje i nie pozwala się pomylić.

\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prezentacja dla inwestora\n", + "### Reguła 30 / 20 / 10 (Czcionka / Minuty / Slajdy)\n", + "Reguła mówi o standardowych oczekiwaniach w stosunku do prezentacji (czyli: stosuj dużą czcionkę, nie gadaj dłużej ani krócej niż 2 minuty na slajd).\n", + "### Wzorzec 10 slajdów prezentacji dla inwestora\n", + "#### 1. Chwyć za gardło (ang. \\\"Grab\\\")\n", + " * Jaki masz pomysł?\n", + " * Czym się wyróżniasz pod względem korzyści: \n", + " * funkcjonalność, \n", + " * spełnienie potrzeby, \n", + " * konstrukcja?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki

\n", + "\n", + "
    \n", + " \n", + "
  • Nie bądź gadatliwy!
  • \n", + "
  • Uchwyć uwagę widza!
  • \n", + "
  • Jeśli tutaj nie chwycisz widza za gardło, to przepadłeś.
  • \n", + " \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 2. Przedstaw problem\n", + " * Dlaczego\n", + " * Wasz produkt jest niezbędny?\n", + " * ludzie go potrzebują?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówka:

\n", + " \n", + "
    \n", + "
  • Pamiętaj: nie chodzi o Twój problem, tylko o problem potencjalnego użytkownika!
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 3. Przedstaw rozwiązanie problemu\n", + " * Jak rozwiążecie problem ?\n", + " * Kto będzie korzystać z Waszego rozwiązania?\n", + " * I jakie będzie miał z tego korzyści?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + " \n", + "
    \n", + "
  • Bądź konkretny!
  • \n", + "
  • Nie zalewaj!
  • \n", + "
  • Nie czaruj!
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 4. Przedstaw sposób działania\n", + "* Jak działa nasze rozwiązanie?\n", + "* Co w działaniu jest takiego wyjątkowego? (\\\"magic souce\\\")?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + "\n", + "
    \n", + "
  • Przekonaj, że Wasze rozwiązanie jest\n", + "
      \n", + "
    • użyteczne,\n", + "
    • funkcjonalne\n", + "
    \n", + "
  • Najlepiej przedstaw działanie wizulanie - np. na schemacie, rysunku, filmie.\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 5. Omów technologię\n", + " * Jaka jest konstrukcja (architektura) rozwiązania?\n", + " * Co w niej jest takiego wyjątkowego?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + " \n", + "
    \n", + "
  • Ponownie możesz przedstawić schemat...
  • \n", + "
  • Ale uważaj, żeby nie przesadzić ze szczegółami technicznymi!
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 6. Przedstaw konkurencję\n", + " * Jakie produkty / firmy są Waszą konkurencją?\n", + " * Co robią inaczej?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówka:

\n", + " \n", + "Wykaż, że jesteście lepsi:\n", + "
    \n", + "
  • jakość,
  • \n", + "
  • cena,
  • \n", + "
  • funkcjonalność,
  • \n", + "
  • użyteczność,
  • \n", + "
  • elastyczność.
  • \n", + "
\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 7. Określ Wasz rynek\n", + "**Rynek** to ogół transakcji kupna–sprzedaży danego dobra lub czynnika produkcji. \n", + " * Na jaki rynek kierujecie Wasz produkt?\n", + " * Jaka jest wartość finansowa rynku dla Waszego produktu?\n", + " * Total Available Market - wartość ogólnoświatowego popytu na dany produkt usługę\\,\n", + " * Served Available Market - wartość rynku, na którym chcecie działać,\n", + " * Target Market - przewidywana wartość rynku Waszych prawdopodobnych nabywców." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki:

\n", + "\n", + "
    \n", + "
  • Możecie interpretować powyższe pojęcia w sposób potoczny:
  • \n", + "
      \n", + "
    • TAM - Jak duży jest cały tort?
    • \n", + "
    • SAM - Jak duży kawałek tortu jestem w stanie uciąć dla siebie?
    • \n", + "
    • TM - Ile jestem w stanie zjeść?
    • \n", + "
    \n", + "
  • Inwestor oczekuje, że potraficie oszacować wartość każdego zasięgu rynku na podstawie wiarygodnych źródeł.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 8. Zdefiniuj model biznesowy\n", + "**Model biznesowy** to unikatowy przepis na sprzedawanie produktu lub usługi.\n", + " * W jaki sposób Wasz pomysł zarobi pieniądze?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Wskazówka:

\n", + "\n", + "Wyjaśnij swój pomysł na sprzedaż, np.\n", + "
    \n", + "
  • licencje / sprzedaż jednorazowa,
  • \n", + "
  • sprzedaż bezpośrednia / dystrybutorzy,
  • \n", + "
  • dochody z reklam,
  • \n", + "
  • mechanizmy przyciągnięcia klienta, np. programy lojalnościowe, grywalizacja.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 9. Przedstaw prognozę finansową przedsięwzięcia\n", + "**Prognoza finansowa** to przewidywana wartość przyszłych wyników finansowych przesięwzięcia uwzględniająca przychody i koszty.\n", + " * Jaka jest prognoza finansowa na okres 18 miesięcy - 5 lat?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Wskazówki:

\n", + "
    \n", + "
  • Udowodnij, że znasz realia lub...dostosuj się do oczekiwań inwestora.
  • \n", + "
  • Kiedyś prognozę układało się na 5 lat, a dzisiaj... 5 lat to dłużej niż wieczność.
  • \n", + "
\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 10. Pochwal się zespołem\n", + " * Jakie są kluczowe osoby w Twoim zespole?,\n", + " * Skąd pochodzą?\n", + " * Jaką wartość wnoszą?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + "

Wskazówki:

\n", + " \n", + "
    \n", + "
  • Można pokazać zdjęcia, jeśli ludzie się na to zgadzają.
  • \n", + "
  • Jeśli w zespole jest gwiazda, pozwól jej lśnić.
  • \n", + "
\n", + " \n", + "
" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "03. Prezentacja koncepcji projektu B+R[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/04_metodologia_Prince2.ipynb b/wykłady/04_metodologia_Prince2.ipynb new file mode 100644 index 0000000..a06169b --- /dev/null +++ b/wykłady/04_metodologia_Prince2.ipynb @@ -0,0 +1,406 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

4. Metodologia Prince2[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodologia Prince2\n", + "Prince2 (PRojects IN Controlled Environments) to metoda **zarządzania** *projektami*\n", + "niezależna od zmiennych projektu, takich jak: środowisko, skala, typ, organizacjakultura, położenie geograficzne." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Projekt

\n", + "Projekt to organizacja założona:\n", + " \n", + "

na określony czas

\n", + "

w celu dostarczenia rozwiązania

\n", + "

dla określonej potrzeby biznesowej

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Przykład projektu

\n", + " \n", + "

Potrzeba biznesowa: Oszczędzenie 70% czasu biura obsługi klienta.

\n", + "

Rozwiązanie: System automatycznego obiegu dokumentów.

\n", + "

Czas: 6 miesięcy

\n", + "

Projekt: Zespół ludzi wydelegowanych na 6 miesięcy dla dostarczenia systemu automatycznego obiegu dokumentów w celu zaoszczędzenia 70\\% czasu biura obsługi klienta.

\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cechy charakterystyczne projektu\n", + "Projekt jest przeciwieństwiem pojęcia \"buiseness as usual\" (działanie rutynowe). Projekt od rutyny odróżniają następujące cechy\n", + "\n", + " * Zmiana - projekt to środek do przeprowadzenia zmiany.\n", + " * Tymczasowość - projekt ma swoją datę początku i końca.\n", + " * Wielofukcyjność - przy projektach zaangażowani są ludzie o różnych kompetencjach.\n", + " * Wyjątkowość - każdy projekt jest wyjątkowy (nawet jak jest jakiś wzorzec projektu, to każdy projekt się czymś wyróżnia: albo zespołem, albo klientem, albo położeniem geograficznym, itp.\n", + " * Niepewność - projekty ze swojej natury są ryzykowne, bo mają wprowadzić zmianę.\n", + " ### Zarządzanie projektem\n", + " Zarządzanie projektem to:\n", + " - planowanie zadań\n", + " - delegowanie ludzi do zadań\n", + " - monitorowanie wykonywania zadań\n", + " - kontrolowanie\n", + " aby:\n", + " - osiągnąć cel projektu\n", + " - w wyznaczonym czasie\n", + " - przy zachowaniu przeznaczonych kosztów\n", + " \n", + " ### Aspekty kontroli w zarządzaniu projektem\n", + " Projekt należy kontrolować pod następującymi apektami:\n", + " - koszty (czy przestrzegamy kosztów projektu?)\n", + " - czas (kiedy skończymy?)\n", + " - jakość (czy produkt działa zgodnie z oczekiwaniami?)\n", + " - zakres (czy zakres działania projektu będzie pokrywa się z oczekiwaniami?)\n", + " - korzyści dla klienta (czy użytkownik naszego produktu uzyskuje planowaną korzyść?)\n", + " - ryzyko (jakie jest ryzyko niepowodzenia lub niepożądanych skutków projektu i czy potrafimy to ryzyko zminimalizować?)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodologie zarządzania projektem \n", + "(por. https://startnearshoring.com/knowledge/it-project-management-a-quick-guide-to-tools-and-methodologies/)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Metodologie tradycyjne\n", + "Metodologie tradycyjne charakteryzują się działaniem \"krok po kroku\". Kładą nacisk na:\n", + " * skrupulatne zbieranie wymagań\n", + " * dokładną analizę\n", + " * istotność dokumentacji.\n", + "Sprawdzają się w projektach z dobrze określonymi wymaganiami już od początku. \n", + "Produkt ma być realizowany i dostarczony zgodnie z określonym planem. W planowaniu nie analizuje się szczegółowo, w jaki sposób produkt ma być wykonany. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Waterfall (model kaskadowy) (wg Wikipedia)\n", + "> Model polega on na wykonywaniu podstawowych czynności jako odrębnych faz projektowych, kolejno po sobie. Jeśli któraś z faz nie powodzi się, to następuje nawrót do poprzedniej fazy. Każda czynność to schodek (kaskady):\n", + "> * Planowanie systemu (w tym specyfikacja wymagań).\n", + "> * Analiza systemu (w tym analiza wymagań i studium wykonalności).\n", + "> * Projekt systemu (poszczególnych struktur itp.).\n", + "> * Implementacja (wytworzenie kodu).\n", + "> * Testowanie (poszczególnych elementów systemu oraz elementów połączonych w całość).\n", + "> * Wdrożenie i pielęgnacja powstałego systemu.\n", + "\n", + "Model kaskadowy sprawdza się dla małych, krótkich projektów z ustalonymi wymaganiami, które nie mogą zmienić się w trakcie realizacji projektu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Plusy modelu kaskadowego
\n", + "
    \n", + "
  1. Projekty są dobrze określone, a zatem łatwe w zarządzaniu.
  2. \n", + "
  3. Przebieg projektu opisany jest liniowo (sekwencyjnie), przez co łatwiej go zrozumieć.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Minusy modelu kaskadowego
\n", + "
    \n", + "
  1. Dokonanie wszelkich zmian w projekcie jest kosztowne.
  2. \n", + "
  3. Jakikolwiek namacalny efekt działań jest wdoczny dopiero po dłuższym czasie.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Prince 2\n", + "W metodyce Prince2 projekt dzielony jest na etapy. Po każdym etapie następuje uszczegółowienie planu najbliższych etapów.\n", + "\n", + "W Prince 2 nacisk kładzie się na osiągnięcie założonych produktów biznesowych. \n", + "Struktura organizacyjna jest precyzyjnie określona - każdy członek teamu ma przypisaną rolę. \n", + "Ważną rolę odgrywają procedury raportowania." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Plusy modelu Prince2
\n", + "
    \n", + "
  1. Podział projektu na etapy ułatwia kontrolę nad projektem (sprawdzamy, czy na końcu etapu mamy planowany rezultat).
  2. \n", + "
  3. Dobrze dokumentuje przebieg projektu.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Minusy modelu Prince2
\n", + "
    \n", + "
  1. Każda zmiana wymaga \"łańcucha akceptacji\" i wymusza zmiany w dokumentacji.
  2. \n", + "
  3. Tworzenie obszernej dokumentacji jest pracochłonne.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### PMBOX (wg Wikipedia)\n", + "Projekt składa się z ciągu etapów lub faz w których od inicjacji do zamknięcia.\n", + "Grupy procesów\n", + "* procesy rozpoczęcia (inicjowania) - zdefiniowanie nowego projektu (lub nowej fazy w istniejącym projekcie)\n", + "* procesy planowania - \n", + " * określenie zakresu i celu projektu \n", + " * zdefiniowanie akcji prowadzących do realizacji celu,\n", + " * procesy realizacji - realizacja wymagań projektowych\n", + " * procesy monitorowania i kontroli - śledzenie, przeglądanie postępu oraz wydajności prac projektowych; ewentualnie inicjacja zmian w planie,\n", + " * procesy zakończenia (zamknięcia) - formalne zakończenie projektu.\n", + "\n", + "Procesy połączone są ze sobą wkładami i rezultatami. Rezultaty z jednego procesu mogą być wkładem do następnych. \n", + "\n", + "PMBOX oferuje wiele różnych procesów do wyboru. Zadaniem menadżera projektu jest wybór procesów odpowiednich do projektu. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Plusy modelu PMBOX
\n", + "
    \n", + "
  1. Podczas trwania projektu można dodawać nowe narzędzia i techniki działania (ze względu na różnorodność dostępnych procesów)
  2. \n", + "
  3. Kierownik projektu ma dostęp do pełnej informacji o zachodzących procesach.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Minusy modelu PMBOX
\n", + "
    \n", + "
  1. Mała elastyczność
  2. \n", + "
  3. Centralizacja władzy
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Metodologie zwinne\n", + "Metodologie zwinne przeciwstawiają się metodologiom tradycyjnym w czterech płaszczyznach:\n", + " * Inteakcje między ludźmi podczas pracy są ważniejsze niż procesy i narzędzia.\n", + " * Działające oprogramowanie (choćby prototyp) jest ważniejsze niż rozbudowana dokumentacja.\n", + " * Współpraca z klientem / uzytkownikiem podczas pracy jest ważniejsza niż negocjowanie umowy.\n", + " * Reakcja na zmiany jest ważniejsza niż stosowanie się do planu." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Scrum\n", + "Scrum jest moetodologią, w której kluczowym elementem jest **sprint** - faza, która kończy się działającym prototypem. Po każdym sprincie następuje planowanie działań w kolejnym sprincie - biorące pod uwagę dotychczasowe doświadczenia." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Plusy modelu Scrum
\n", + "
    \n", + "
  1. Szybkie dostarczanie działającego systemu - również w wersji końcowej (na rynek).
  2. \n", + "
  3. Elastyczne dostosowywanie się do zmieniających się potrzeb biznesowych.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Minusy modelu Scrum
\n", + "
    \n", + "
  1. Wymagana jest współpraca ze strony klienta (użytkownika) - a o to niełatwo!
  2. \n", + "
  3. Konieczne jest zaangażowanie i zrozumienie koncepcji ze strony całego zespołu wykonawców.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Kanban\n", + "Kanban jest metodologią, w której kluczowym elementem jest **wizualizacja** przebiegu projektu - najczęściej za pomocą tablicy, na której przesuwane są zadania wraz z postępem ich wykonania (od początku do zakończenia)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "
Plusy modelu Kanban
\n", + "
    \n", + "
  1. Motywujący wpływ na pracę zespołową
  2. \n", + "
  3. Wysoka wydajność poprzez zapobieganie zatorom w pracy
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
Minusy modelu Kanban
\n", + "
    \n", + "
  1. Wysoko wskazane jest doświadczenie przynajmniej jednego członka zespołu.
  2. \n", + "
  3. Istotne dla sukcesu jest ustawienie zadań w odpowiedniej kolejności.
  4. \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zasady Prince2\n", + "### Ciągłe uzasadnienie biznesowe\n", + "* Musi istnieć jakiś biznesowy (przeliczalny na pieniądze) powód do rozpoczęcia projektu. \n", + "* Uzasadnienie biznesowe musi mieć miejsce podczas całego projektu - trzeba to cały czas sprawdzać.\n", + "\n", + "### Nauka przez doświadczenie\n", + "* Podczas wykonywania projektu należy wyciągać wnioski - uczyć się lekcji.\n", + "* Lekcje te powinny być zapisywane.\n", + "\n", + "### Określone role i odpowiedzialności\n", + "W projekcie wykonawcy mają określone role i określone zakresy odpowiedzialności. Dotyczy to również przedstawicieli klienta.\n", + "\n", + "### Praca etapami\n", + "Projekt jest planowany i monitorowany etap po etapie.\n", + "\n", + "### Zarządzanie wyjątkami\n", + "Jeśli przebieg projektu mieści się w granicach tolerancji (czas, pieniądze itp.), to nie ma potrzeby alarmować przełożonych. W przypadku **wyjątku** (wyjście poza granicę tolerancji), trzeba powiadomić przełożonych.\n", + "\n", + "### Koncentracja na produkcie\n", + "Najważniejsza w projekcie jest jakość dostarczanego produktu.\n", + "\n", + "### Dostrajanie\n", + "Metodyka zarządzania powinna być dostrojona do specyfiki projektu: środowisko, złożoność, zespół, ryzyko itp." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Motywy przewodnie Prince2 (themes)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Procesy Prince2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artefakty w Prince2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Role w Prince2" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "04. Metodologia Prince 2[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/05_metodologia Prince2Agile.ipynb b/wykłady/05_metodologia Prince2Agile.ipynb new file mode 100644 index 0000000..2912a1e --- /dev/null +++ b/wykłady/05_metodologia Prince2Agile.ipynb @@ -0,0 +1,66 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

5. Metodologia Prince2Agile[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Podstawowe koncepcje metodyk zwinnych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metodyka SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czym jest Prince2Agile?" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "05. Metodologia Prince2Agile[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/06_prototypowanie i ciągła integracja.ipynb b/wykłady/06_prototypowanie i ciągła integracja.ipynb new file mode 100644 index 0000000..240d1ad --- /dev/null +++ b/wykłady/06_prototypowanie i ciągła integracja.ipynb @@ -0,0 +1,131 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

6. Prototypowanie i ciągła integracja[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Prototyp

\n", + "Prototyp to wynik częściowej implementacji, posiadający wybrane cechy produktu końcowego.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cele prototypowania\n", + " * Zademonstrowanie umiejętności wykonania produktu końcowego\n", + " * Określenie realistycznych wymagań końcowych\n", + " * Przekonanie się o wpływie innych systemów, środowisk na produkt. \n", + " * Sprawdzenie implementacji kluczowych funkcji\n", + "\n", + "## Potencjalne efekty prototypowania\n", + "* Wykrycie nieporozumień między klientem i wykonawcą \n", + "* Określenie brakujących funkcji \n", + "* Wykrycie błędów w specyfikacji\n", + "* Przewidywanie przyszłych trudności\n", + "\n", + "## Prototyp poziomy a pionowy\n", + "\n", + "## Prototypowanie z porzuceniem a prototypowanie ewolucyjne\n", + " \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Ciągła integracja

\n", + " \n", + "Ciągła integracja (CI) to praktyka rozwoju oprorgamowania, w której:\n", + "
    \n", + "
  • zmiany w kodzie są regularnie przesyłane do repozytorium,
  • \n", + "
  • po każdym dołączeniu nowego kodu wykonywane są (automatycznie): kompilacja kodu i testy.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Workflow w Ciągłej Integracji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dobre praktyki Ciągłej Integracji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kompilacja automatyczna" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Narzędzia Ciągłej Integracji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Korzyści z Ciągłej Integracji" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "06. Prototypowanie i ciągła integracja[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/07_specyfikacja_projektu_informatycznego.ipynb b/wykłady/07_specyfikacja_projektu_informatycznego.ipynb new file mode 100644 index 0000000..779640f --- /dev/null +++ b/wykłady/07_specyfikacja_projektu_informatycznego.ipynb @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

7. Specyfikacja projektu informatycznego[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Zakres systemu informatycznego

\n", + " \n", + "Zakres systemu to precyzyjne określony obszar tego, co projektujemy – precyzyjnie odgraniczony od tego, co jest zadaniem projektowym kogoś innego, lub tego, co leży poza projektem.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reprezentacje zakresu projektu\n", + "\n", + "* Określenie wizji\n", + "* Diagram zakresu projektowego (rysunek)\n", + "* Lista „aktor-cel”\n", + "* Lista „in-out”" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Specyfikacja wymagań

\n", + " \n", + "Specyfikacja wymagań to dokument, w którym zebrano wszystkie oczekiwania stawiane przyszłemu systemowi (np. wymagania funkcjonalne i niefunkcjonalne aplikacji).\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wymagania użytkownika a wymagania systemowe\n", + "\n", + "### Wymagania funkcjonalne a wymagania niefunkcjonalne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Przypadek użycia

\n", + " \n", + "Przypadek użycia określa umowę między uczestnikami systemu względem jego zachowania.\n", + "\n", + "
    \n", + "
  • W przypadku użycia opisuje zachowanie się systemu w różnych warunkach – w odpowiedzi na żądanie jednego z uczestników, zwanego aktorem głównym.
  • \n", + "
  • Przypadek użycia reprezentowany jest przez sekwencję akcji realizowanych przez system analizowany, które dają zauważalny efekt. Akcja to operacja atomowa, czyli taka, której nie można przerwać podczas wykonywania.
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Elementy składowe opisu przypadku użycia\n", + "1. Aktor główny\n", + "2. Zakres \n", + "3. Poziom celu\n", + "4. Uczestnicy i interesy\n", + "5. Warunek początkowy\n", + "6. Wyzwalacz\n", + "7. Gwarancje minimalne\n", + "8. Gwarancja powodzenia\n", + "9. Scenariusz powodzenia\n", + "10. Rozszerzenia scenariusza" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "07. Specyfikacja projektu informatycznego[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/08_testowanie_w_programowaniu_zwinnym.ipynb b/wykłady/08_testowanie_w_programowaniu_zwinnym.ipynb new file mode 100644 index 0000000..f1decd7 --- /dev/null +++ b/wykłady/08_testowanie_w_programowaniu_zwinnym.ipynb @@ -0,0 +1,85 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

8. Testowanie w programowaniu zwinnym[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zarządzanie testowaniem w metodyce SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poziomy testowania w metodyce SCRUM" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie jednostkowe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie metodą „Test First”" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Typy wstawek testowych\n", + " * stub\n", + " * spy\n", + " * mock\n", + " * fake\n", + " * dummy" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "08. Testowanie w programowaniu zwinnym[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/09_testowanie_integracyjne_i_systemowe.ipynb b/wykłady/09_testowanie_integracyjne_i_systemowe.ipynb new file mode 100644 index 0000000..f24ad8b --- /dev/null +++ b/wykłady/09_testowanie_integracyjne_i_systemowe.ipynb @@ -0,0 +1,124 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

9. Testowanie integracyjne i systemowe[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Błąd

\n", + " \n", + "Błąd to objaw nieoczekiwanego działania programu ujawniony podczas testów.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Defekt

\n", + " \n", + "Defekt to niedoskonałość w kodzie programu.\n", + "Błąd ujawniony w czasie testów świadczy o defekcie w testowanym kodzie.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Testowanie

\n", + " \n", + "Testowanie to proces, który ma na celu wykazanie istnienia defektów w kodzie programu \n", + "poprzez wywołanie błędów w działaniu.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Opracowywanie przypadków testowych dla testowania integracyjnego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Strategie testowania integracyjnego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Środowisko testowania systemowego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie manualne: \n", + "### Testowanie eksploracyjne\n", + "### Testowanie sesyjne\n", + "### Testowanie akceptacyjne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Testowanie automatyczne\n", + "### Testowanie oparte na nagrywaniu\n", + "### Testowanie oparte na słowach kluczowych\n", + "### Testowanie oparte na zachowaniu" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "09. Testowanie integracyjne i systemowe[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/10_wybrane_zagadnienia_użyteczności.ipynb b/wykłady/10_wybrane_zagadnienia_użyteczności.ipynb new file mode 100644 index 0000000..28cb6c0 --- /dev/null +++ b/wykłady/10_wybrane_zagadnienia_użyteczności.ipynb @@ -0,0 +1,117 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

10. Wybrane zagadnienia użyteczności[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Użyteczność

\n", + "\n", + "Użyteczność narzędzia: łatwość, z jaką ludzie potrafią korzystać z pewnego narzędzia w celu osiągnięcia określonego celu.\n", + "\n", + "

Cechy aplikacji użytecznej

\n", + " \n", + "
    \n", + "
  • Łatwa do nauki: Jak łatwo jest użytkownikom wykonać dane zadanie po raz pierwszy?\n", + "
  • Wydajna w pracy: Jak szybko użytkownicy wykonują zadania, gdy już się nauczyli programu?\n", + "
  • Satysfakcja: Czy korzystanie z programu daje satysfakcję?\n", + "
  • Odporna na błędy: Ile błędów robią użytkownicy, jak poważne są to błędy i jak łatwo z nich się wydostać?\n", + "
  • Zapamiętywalna po czasie: Jak łatwo powrócić do biegłości użytkowania po pewnym okresie nieużytkowania programu?\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Wskazówki do tworzenia użytecznego systemu informatycznego

\n", + "\n", + "
    \n", + "
  1. Autorze: Poznaj użytkownika, a TY nie jesteś użytkownikiem.
  2. \n", + "
  3. Użytkownik powinien mieć kontrolę nad systemem, a nie odwrotnie: to użytkownik jest szefem i system powinien to okazywać.
  4. \n", + "
  5. System musi ułatwiać użytkownikowi życie:
  6. \n", + "
      \n", + "
    • Elementy, które wyglądają tak samo, powinny działać tak samo, a akcje, które nie działają tak samo powinny być inaczej reprezentowane.
    • \n", + "
    • Każda akcja użytkownika powinna mieć reakcję programu.
    • \n", + "
    • Kiedy użytkownik ma do podjęcia decyzję, system podaje mu całą dostępną informację.
    • \n", + "
    \n", + "
  7. System musi być \"idioto-odporny\":
  8. \n", + "
      \n", + "
    • Każdy robi błędy, więc każdy błąd powinien dać się naprawić.
    • \n", + "
    • Gdy użytkownik zrobi błąd, System daje mu o tym znać, zanim … wpadnie w PRAWDZIWE kłopoty.
    • \n", + "
    • Informacje o błędach powinny być zrozumiałe dla użytkownika i mówić mu, jak naprawić problem.
    • \n", + "
    \n", + "
  9. Wczuj się w użytkownika
  10. \n", + "
      \n", + "
    • Eliminuj niepotrzebne decyzje (nie pytaj, jak nie musisz).
    • \n", + "
    • Im mniej kroków do celu, tym lepiej.
    • \n", + "
    • Użytkownik powinien zawsze móc dowiedzieć się, co robić dalej.
    • \n", + "
    • Użytkownik powinien zawsze wiedzieć, co się dzieje.\n", + "
    \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Użyteczność portali internetowych\n", + "### 10 heurystyk Jakoba Nielsena i Rolfa Molicha\n", + "### Zasady dobrej nawigacji" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tworzenie raportu użyteczności" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "10. Wybrane zagadnienia użyteczności[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/11_aspekty_użyteczności.ipynb b/wykłady/11_aspekty_użyteczności.ipynb new file mode 100644 index 0000000..496c5c5 --- /dev/null +++ b/wykłady/11_aspekty_użyteczności.ipynb @@ -0,0 +1,101 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

11. Aspekty użyteczności[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aspekty użyteczności\n", + "Użyteczność aplikacji powinna być analizowana pod kątem sześciu aspektów:\n", + "* kontekst, \n", + "* wprowadzanie danych, \n", + "* wyprowadzanie danych, \n", + "* responsywność, \n", + "* łączność z siecią, \n", + "* zasoby." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kontekst" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wprowadzanie danych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wyprowadzanie danych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Responsywność" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Łączność z siecią" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zasoby" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "11. Aspekty użyteczności[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/12_ocena_jakości_systemu.ipynb b/wykłady/12_ocena_jakości_systemu.ipynb new file mode 100644 index 0000000..3210b7b --- /dev/null +++ b/wykłady/12_ocena_jakości_systemu.ipynb @@ -0,0 +1,167 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

12. Ocena jakości systemu informatycznego[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czym jest jakość produktu?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Toma de Marco

\n", + " \n", + "Jakość produktu to funkcja tego, jak bardzo zmienia on świat na lepsze.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Geralda Weinberga

\n", + " \n", + "Jakość to subiektywnie pojmowana wartość dla kogoś.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Josepha Jurana

\n", + " \n", + "1. Jakość składa się z tych cech produktu, które spełniają potrzeby klientów i dostarczają im satysfakcji. \n", + "2. Jakość to brak braków.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Armanda Feigenbauma

\n", + " \n", + "Jakość to coś, co określa tylko i wyłącznie klient - a nie inżynier, dział marketiingu, czy też kierownictwo.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Definicja wg Williama Edwardsa Deminga

\n", + " \n", + "Cała trudność w zdefiniowaniu jakości polega na przełożeniu przyszłych potrzeb użytkownika na wymierne cechy w taki sposób, aby produkt dawał klientowi satysfakcję za akceptowalną cenę.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Definicja jakości oprogramowania" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Jakość oprogramowania

\n", + " \n", + "Jakość oprogramowania to funkcja cech oprogramowania, które spełniają oczekiwania użytkownika: znane i przewidywane.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jakość kodu źródłowego\n", + "### Metryki oceny rozmiaru kodu źródłowego\n", + "### Metryki oceny złożoności kodu źródłowego" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cechy oprogramowania wpływające na ocenę jakości\n", + "### Funkcjonalność\n", + "### Niezawodność\n", + "### Użyteczność\n", + "### Wydajność\n", + "### Łatwość konserwacji\n", + "### Przenośność\n", + "### Dostępność\n", + "### Bezpieczeństwo\n", + "### Kompatybilność" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Schematy oceny jakości\n", + "### CUPRIMDSO\n", + "### FURPS\n", + "### CUPRIMDA" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "12. Ocena jakości systemu informatycznego[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/13. planowanie prac badawczo-rozwojowych.ipynb b/wykłady/13. planowanie prac badawczo-rozwojowych.ipynb new file mode 100644 index 0000000..ca228c3 --- /dev/null +++ b/wykłady/13. planowanie prac badawczo-rozwojowych.ipynb @@ -0,0 +1,223 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

13. Planowanie prac badawczo-rozwojowych[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + " \n", + "

Harmonogram projektu

\n", + " \n", + "Harmonogram projektu to plan uzyskania celów projektu uwzględniający:\n", + "
    \n", + "
  • podział pracy na etapy i zadania,
  • \n", + "
  • przydział zasobów do zadań,
  • \n", + "
  • terminy wykonania zadań.
  • \n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Ograniczenia

\n", + " \n", + "Ograniczenia to czynniki, które wpływają na realizację harmonogramu.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rodzaje ograniczeń\n", + " * Ograniczenia czasowe\n", + " * Ograniczenia techniczne\n", + " * Ograniczenia organizacyjne " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Prawo Parkinsona

\n", + " \n", + "Praca będzie się rozrastać, aby wypełnić cały czas na nią przewidziany.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "

Struktura Podziału Pracy

\n", + " \n", + "Struktura Podziału Pracy to hierarchiczna reprezentacja podziału pracy w projekcie.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tworzenie harmonogramu projektu w programie MS-Project" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie daty początku projektu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie struktury podziału pracy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie trybów zadań" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie kamieni milowych" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie tygodniowego kalendarza czasu pracy dla zespołu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustalenie zależności między zadaniami" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie odstępów między zadaniami" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Określenie zasobów w projekcie: \n", + " * Praca (ludzie + komputery), \n", + " * Materiały, \n", + " * Inne koszty" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ustawienie tygodniowego kalendarza czasu pracy dla zasobów typu \"praca\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Przydzielenie zasobów do zadań" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sprawdzenie poprawności alokacji zasobów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Wyeliminowanie przeciążeń zasobów\n", + " * manualne bilansowanie zasobów\n", + " * automatyczne bilansowanie zasobów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Analiza ścieżki krytycznej" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sporządzanie raportów" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modyfikacja harmonogramu podczas trwania projektu" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "13. Planowanie prac badawczo-rozwojowych[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/14_zarządzanie pracami badawczo-rozwojowymi.ipynb b/wykłady/14_zarządzanie pracami badawczo-rozwojowymi.ipynb new file mode 100644 index 0000000..35efcf6 --- /dev/null +++ b/wykłady/14_zarządzanie pracami badawczo-rozwojowymi.ipynb @@ -0,0 +1,87 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

14. Zarządzanie projektami badawczo-rozowjowymi[wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Produkuj hamburgery, sprzedawaj hamburgery...\n", + "## ... czyli czym różni się zarządzanie projektem B+R od kierowania barem szybkiej obsługi\n", + "Różnice w zarządzaniu można zobrazować w kilku aspektach:\n", + " * Podejście do popełniania błędów przez pracowników\n", + " * Sposób motywowania: bodźce negatywne i pozytywne\n", + " * Podejście do indywidualistów\n", + " * Podejście do kreatywności i samodoskonalenia się pracowników" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czy ludzie pracują lepiej pod presją?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prawo Parkinsona - mit czy rzeczywistość?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7 syrenich śpiewów...\n", + "## ...czyli o pokusach w zarządzaniu, które prowadzą na manowce" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jakie czynniki faktycznie wpływają na lepszą pracę informatyków?" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "14. Zarządzanie pracami badawczo-rozwojowymi[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/15_demonstracja_projektu.ipynb b/wykłady/15_demonstracja_projektu.ipynb new file mode 100644 index 0000000..473c78b --- /dev/null +++ b/wykłady/15_demonstracja_projektu.ipynb @@ -0,0 +1,54 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Przygotowanie do projektu badawczo-rozwojowego

\n", + "

15. Demonstracja wyników projektu badawczo-rozwojowego [wykład]

\n", + "

Krzysztof Jassem (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Demonstrowane projekty powinny być na 6. poziomie gotowości technologicznej.\n", + "
" + ] + } + ], + "metadata": { + "author": "Krzysztof Jassem", + "email": "jassem@amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "subtitle": "15. Demonstracja projektu[wykład]", + "title": "Przygotowanie do projektu badawczo-rozwojowego", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/json_script.ipynb b/wykłady/json_script.ipynb new file mode 100644 index 0000000..442e952 --- /dev/null +++ b/wykłady/json_script.ipynb @@ -0,0 +1,114 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#procedura napisywania plików ipynb (generowanie nagłówka i metadanych)\n", + "import json\n", + "\n", + "def modjup(filen,numer,tytul,typ,author,email,lang,title,year):\n", + " zerocell=['![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\\n',\n", + " '
\\n', \n", + " '

%s

\\n'%(title),\n", + " '

%s. %s [%s]

\\n'%(numer,tytul,typ),\n", + " '

%s (%s)

\\n'%(author,year),\n", + " '
\\n',\n", + " '\\n',\n", + " '![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)']\n", + " zerodict={'cell_type': 'markdown','metadata': {'collapsed': False},'source': zerocell}\n", + " with open(filen, 'r+') as f:\n", + " ll=json.load(f)\n", + " ll[\"metadata\"][\"author\"]=author\n", + " ll[\"metadata\"][\"email\"]=email\n", + " ll[\"metadata\"][\"lang\"]=lang\n", + " subtitle=\"%s.%s[%s]\"%(numer,tytul,typ)\n", + " ll[\"metadata\"][\"subtitle\"]=subtitle\n", + " ll[\"metadata\"][\"title\"]=title\n", + " ll[\"metadata\"][\"year\"]=year\n", + " \n", + " if not(ll['cells'][0]['source'][0]==zerocell[0]):\n", + " ll['cells'].insert(0,zerodict)\n", + " else:\n", + " ll['cells'][0]=zerodict\n", + " f.seek(0)\n", + " json.dump(ll,f,indent=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "UnicodeDecodeError", + "evalue": "'charmap' codec can't decode byte 0x81 in position 8350: character maps to ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mUnicodeDecodeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[1;31m#uruchom procedurę\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[0mmodjup\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilen\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnumer\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtytul\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtyp\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mauthor\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0memail\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mlang\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtitle\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0myear\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36mmodjup\u001b[1;34m(filen, numer, tytul, typ, author, email, lang, title, year)\u001b[0m\n\u001b[0;32m 13\u001b[0m \u001b[0mzerodict\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'cell_type'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34m'markdown'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'metadata'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;34m'collapsed'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'source'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mzerocell\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilen\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'r+'\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 15\u001b[1;33m \u001b[0mll\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mjson\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mload\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 16\u001b[0m \u001b[0mll\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"metadata\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"author\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mauthor\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[0mll\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"metadata\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"email\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0memail\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\json\\__init__.py\u001b[0m in \u001b[0;36mload\u001b[1;34m(fp, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[0mkwarg\u001b[0m\u001b[1;33m;\u001b[0m \u001b[0motherwise\u001b[0m\u001b[0;31m \u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mJSONDecoder\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;31m`\u001b[0m \u001b[1;32mis\u001b[0m \u001b[0mused\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 292\u001b[0m \"\"\"\n\u001b[1;32m--> 293\u001b[1;33m return loads(fp.read(),\n\u001b[0m\u001b[0;32m 294\u001b[0m \u001b[0mcls\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobject_hook\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mobject_hook\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 295\u001b[0m \u001b[0mparse_float\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparse_float\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mparse_int\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mparse_int\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\encodings\\cp1250.py\u001b[0m in \u001b[0;36mdecode\u001b[1;34m(self, input, final)\u001b[0m\n\u001b[0;32m 21\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIncrementalDecoder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdecode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 23\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcharmap_decode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0merrors\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdecoding_table\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 24\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 25\u001b[0m \u001b[1;32mclass\u001b[0m \u001b[0mStreamWriter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mCodec\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mcodecs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mStreamWriter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mUnicodeDecodeError\u001b[0m: 'charmap' codec can't decode byte 0x81 in position 8350: character maps to " + ] + } + ], + "source": [ + "#zmodyfikuj te dane\n", + "filen=\"01_praca_zespolowa.ipynb\"\n", + "\n", + "numer=\"1\"\n", + "tytul=\"\"\n", + "typ=\"wyklad\"\n", + "\n", + "author=\"Krzysztof Jassem\"\n", + "email=\"jassem@amu.edu.pl\"\n", + "lang= \"pl\"\n", + "title=\"\"\n", + "year=\"2021\"\n", + "\n", + "#uruchom procedurę\n", + "modjup(filen,numer,tytul,typ,author,email,lang,title,year)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/wykłady/obrazy/AISearcher.png b/wykłady/obrazy/AISearcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a8bba4bc9b77144bf63d0bb4c396467e91c950c2 GIT binary patch literal 179460 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 LILQJazv(Qjp*F%@eG!kjUVzpvmohpMcv6H3N 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
    b=^Vtq{Cv zwOoEDP+;fy)nVt!7WH|U(g!=sw!PiwyGC4QZBvP`9yS9SnmXB1{!gFcLT(9EV6Cnv8dN|v2#=4?rkz5oBP_myu|ZtcF(B_XABBa;ScqzaX(1fg9pt6hNF(Qy1nl`(U$deI_MU zMG|5#8Zx&AR!P$h%{LMA#;B_)wOq5W1#R$BSEKPKQVnIw9>X0;G0Pc0ziQ{EOZ!}J z+!thh(USS&VgN^N0~st;=jds)B<=1`(sZ$C_f#rQGYwoM*CB%Z6F$oj**hNM^`T6@ z1E=taf4rZY?EJZ)S=yk(eQZ5aQ?Qzd85i)hSep+fuB~%0;_a?@6A=#JlNpMBZl&Db zJX{VdvYg62lJ`T@W6Fsud^HwW=>0_ISZAo>SA8|8v0E#1SAuvRJEeb4ks`^(YC~?x*LT5N}&|a<`(%-;@5PsL% zqdF}FlJYOaPy`rdispaOvcCoIOgXmF2d7QLK$O5AaCbEYAakm$;PW#?wHpvb8v5N| zxMXh1_xymH^_t zwRe2exqW%MfmBJR5N_&3+$93xd5fKLko0|CXTGPN>JL%yB}w#iHmuEgQ%CQ-Gw*=M z8ulBg_vxDFL>kLLc)MMk>5v0J_Q3=OvUIX9Ux6(fB&J4pvw3MJU;(nh^e86!CTRHA zj0{E2-%7a!4*vFEI{Y$E6duh^vz;0?(|<`y@v)=;2;pP2#tr?iBo+WlE5QXk(q;d6 z`bf+E?Od{rZ)|J?=9YAnfPoGEpn{r9u+;h-kRQYX1UXEgw%4s#d?a{YjeD=$ydttf zBT4>g@=DokB8e*d4jl2^KV+5?)=ig2b6xXem()_j_h^CumNQWk{%oTVf#x?wQ=q(8 zb?Wbnm77QYMaTpDT)MVGM1tjTiabtCtIWrhyFY*0=#?8|XdFsKne8-e%ynALj)RZ5 z*FRpaxq1o8n>1(n1*7h@J~Q3AOE9&=O($XqSx^Ruz6T4@GzUg z0Zc*Uv;BoCtpgE6cjB|)#lImyQTb{QPzUKZ@sz+iM}!ZASh9CAq#l0R2U+tKyP|D? zwrWe_y$nXoR^Dp}f4jHiC-v-Yc-isSM<;4FDe$7Tzxn;G<9dP3eKoBBXbWu4wo1Vk z1oFcNf&5AJfhvFQYkw$)TCbbrE3l^^8-OM(wTEYeFc~rpgWy6()sYcMM}f&f1t$oI zvS0ZC!PNSx=YW8M<#)9e9*#|sdxM=enZ;W~{slC)IQ~N!Yc!yAP9%lr?kIhSPl*9O z6H!*&z3caq3b(ghRO7Wl_^8XSbd1dMHsV7`q<`<|tz1pkpx~!xo z9cl@Ly)h{X_+9Ib-Rz@LMO2yjaUHSLXsE{$seR!i=kgK76*AkAju{Yv(PtS9(Cw*D zWNOKtN`<CHHq@3ooA&kS(ew4Rk@1 zeQ*nz6H?WJW+Q8CISp(Yxref9lo+5os>(s)jW_Ijs#-|1ug48zsvW~Z$|c=0P9jvi zUn$Y1;Urr+QgQd=7^|>Xjn*LYDZnwoU^+LGfJLbW@j6M`MfkKBtSmNxeS6 zwy(y2!;}nk;6;|$d;pRf=uN)_CCSCl(2A95F0AxUckvVP?%%f)y|OHx8OtLwR`dbi zX6m~Hur}N zg^5n!juRXdV{#;Z2o+L?7E$&G|ESA#EKiET(jD;jMq}8p>>&1&UEEb+E8`@qx zE#Nbiuy771l9=2t1O!{Aii;d-17k=6FFw;`&04vQEKz0g$I*UGvQRTR?u1WL@I&yH zR3X}HP*TsA)>)N;Fd2XI17oUL^h)t z7)o-eF{#YT#)#@&q-Y<8OrGnCXH@T`YL50P5)Y{s+Q`ZtH@>X-ppy86ml7o~N*uF9 zQbIx=<178REtHUR1(&)(^&=s!dOwp!G*zIi{2fuXs_O88Jia#`nVLE8EK`wta_%@P zb4L{2xao|VY2eR@etdMQ#o4SRzN8N}t+4h*Kl8q5(!rp!FBPIm1krlZYCe?E2G^JU z8%)s$387)%Z9{4#7Peaipu_^Bb_pNtrK+Dw`7bzp@c1b2IXI5Rm-4)IIWQ%PZZH%1 zy{afd{8PuAK-b^URuwEH2n|&lFYV7j&2pl=pHU^MmVOBpa9+hCAVX+Qr?xz@BzR@? zQz$1FUB4o#EJbn=^{6bAz+_x9q{euGtHF|5oLRGwAzD--Gg)-FdOV*Jqd_~KAykDl zaz>JBFl>KEb12YUla(k^)nJ=2ithEf6$5HzJ>#sp5iOHuX>zWn|M^C}kq#7hR9-O^ zW~hU}wqGIwkqg#FAChn9tG*U5#@(00;f9mt%okn4j+_mgbbm5r`O=}Hc(!J|yo_Fx zmDCo?!%}?If)3Zzlpv^5Q)ev-U94?zJlc7T3Xx1b#PStaA4U@7nvYAS0=2fSNka`H z%G#LGUafD(7b1_JpxSVXE03z<{FUy#DT|P}dIxR>G2%Ck^HlA^^6DKr$z=^TF7=I@ ze=@Wy7&Flw5~o+t_)a)qC5bY@S;t~)aZ9)f&6U?&>Z+qAwo-B}VSW|mOs?yCr!Ak~ zzPi{&YiH7^gnQiTl)Sq5R0TXLW#f!Asr~X|QSjTrjO5gTv}sxs+S-NUv}vvbvjb3q zfwVEyefn3b9S}>ZQ{t4Mdr2LaVzgIKUL68wy~B5dK{feMC;EPe&~G2@q$%a8tcE~U zCvAe5Xcm>8zJ?JV(wmvJ@z}-F^6H4S#RdVWQj4O-vU7JjsfK2arT9F;K(76e94`qa zKE5Y5kxBz6dG1oqNc-&4QX}aOHV%JrpKg ziy9*k41R+PLsxocurRm4%#%^*~U`RGbYo!D?cvXc95sPr@{t0w+;kp?lf-li9%F!1oob@7~ zH9qyG(Svj|%FdJ)h>IH9lxRapD@|l6V)D0$2vMRGg;HyfW);f)=;Zvh{HwI0>Hxw;&E_OlFJ%!9@Lb@nhry0v*X7w@5KWGyM$Iuo@ zmp?BQiV6uo%$`jKS5JQK8MYd_IyHthODi`UZW2LN!rB?%Ns_4Hs6&K!1)9l*e%%qf zWLuim1n0cK7NLwU>Unnkb1B)k49SD@>QqUQs~_d_Rll+CxX2ulFjDebY-wIDrZ%FA zmF^5-x?-Tyl@Q>IznSmWNU$%*GOIzJi9j9tR;s@M`$~u78?>W3m3V4Wl(7uw#aL*{ z0MWm}VW?B#Oi&=Tk$ke%-tmm?y@}S#w1iRpa#}@ky9irSe9BgPad>a455bdWZ5rik zLzHmExrkjbq#|8y<~!(mBt!o|;SN1%>nB-R>Y{hRY(^vL9nCGaM1?6XdR)(DAw|Sl zQLE1Q(<%RCUTs;Il2--Ck#1CqAo1CD>0XcruKni*?X`AJ4YpU7h@6p_ZlU`-i@()E!6S%!Xs+Xn^`?t`yVlG6)I78Hi@`#%_WzSU*nM!ZbBo zoVWTxEj)vq_LX6MscR7!^7PTtTM>c&=TVia>o*d&%xwL3K|^Z`pm~;8fru>j?XqrM zv~@kE_LXU+PMbY*7r?dtnd)}gDsLy#zfR~|uJ5r}0ME|d-%I6S+&dI(^0gKRJ&k&4 z5ur7}y3MD$X92EHqhWO~O9`w@XIALWhDJR1dC1lq++Yn{4&BWtB>{X;9c^XP{E z_!w)tEk#fFtwjENDZ*DC>V`0P)Edki_K(1ivlGj}Lk*oz>BgtGFi*sgpG|H!0Il|s zs&$XH_6ExfXm}FLbUr*~db0c`KOtvmix@w%?+oeS(aZw8(QX*eP^9*C&kny}>m^#A zA1u6qWDcv&oJnV@cFQ*a6d?iUqr+ASM2PKZtv%U}t6YK$2arG`9y5hf`ki1fix>_5 zJlt$Ck#`Dc_4z zAf$xpm~WJigT-@eyg+IrV%DvckY1tBzKH7f$SFV%rZev}K=*6(pR!bSY&EVS zqk`E8gub4A{QmJ8i!cKD-n{)UoDvwXeIc5OfG%i?sy}V0TI%p%Y5=-c4bC^f@1v?E z`a!``j8hLT$ziEpOeAUlC0DTG7RW{q#{yejT+dx){4)ZHDl9=`7V(+dOVP-v&!HXl z6Xw6?Y{c?Kvc#*yP0rnl-tJc;IfCk39`{>xIfsKe!2W;ZKLmkCFMOW zDoRvA3$i7iy2Ef2V$K;b8O8UTzk(;ePxGuBjKY+$G?=?YQUns=n6$;EXe#g>cy|dJ z3N&Qz!8@ceUyz@tMSb>1=GaG<-~)RDH~mOTVt#s2ybu; zpq=O@K}Z=@Y90KcQHAvv_ad=G>#i~%Pdw7d?I@dQ{j2F}NUnOqxt`wp+0HTBkSMnt z;4stZP<%`RIcQat*qwTW&o-EcbWzTlxb8yY#Ddm_7sRM<%{ns@>CNg&gW*cQYe(;k z7nZ6YrLh?)X=$N$J<`d_!q?{B9=p(WZ88LY>sq5p4>!3QiAHn~9?Fx%<%f1qu>-unQTlV|F_>mTkC2zpkXaf}^n#r~o$?7_>## zP+L)!Cq@FOmjd_(rwtBgQ*zVKq<&hf$m}K1+xh*;+EnO2Z3h;tM+4nwSyC_lv(f@0 zSrtNi!5X(8kmLRqrR%7kwi+V2g zLW-uQAN)YQm8_un5C271QlBKa4nvDrME`vV#>hhR4@&9-6~z4$GT!StbRQJcaJ2$Pnf4(KS1N3Wis z48N>j63&-Ae9|6KnD_Owe>K(zvEr)oRh2#P&hxtOsaz=73d8^EIAnbvr+wkvo|AVx z>6lepo5Db!`g41_LhWU(JMwCr^=46#0hLsc;Q;DRIj`lzanyM&5Ey8io_{>YM%Z(u@t8W@V)xybKLpuElJBXQTv|2 zub1Tr*y|+6N{A!v*LT(`_?>m-RuBgj=Y@O*f8Mr^>Ab;IAq^z_{8l}dN?9PZCL%k- z$+914$H*XWASe7-Q~Lr7{jZH&FY~m90vsve@32~b5>x6xr{uGf2gDR*TjF%}&0}$S z-vkl`-+v@RJQOjUnYttg`I z0a(#Mg)rqL9wfnuf(=9ao`pBXMJxFD8}3Qo718L0D#L;;QHyF8RBWD$PO8LZ?bZqv z*relIUF3gi0aCRvO*lv%8OT0JzEn?Sw5QXSa594>_hgYk=n4)!Q7=OwX$%e<0)x(P4~Fwfr!W)yt5!{p`_ zpOca;J%zu~CM$^%`bu^FbfKR!jDWU9#denZ2XaLsCP&VIHtCxIMkYzes<+y#420?! z)h~t4v3L^=Q{^%H5`J$>jSFRei z9j;i%Y|>b-Mv!b4a$td{m;TP#S|tScEBBrJ7kqQN3-gNJZxgyE#CPUc^w9FL;&|>n z2q`^QtXayU;;(!Jc*W9#p@PvaD$Yb(!~*z1dR1&om3M2j17x1+pT;eW%wzNfSafZYqV*B;6Mg$?(ZkLisNIWUW@a5bYf^x>)|Xgi5u_o25=_ z>f}l`9fEDC9(0y&!fAPespPbE5uw>WxQ$eDrFY^7G!)YYAUZmGHYGj1_vWA~57a3G@YLfI#|Xm- z5Q?adqKI7ef!-O%ldpX_f?k%Icf-6rE`N_&^ZYNC2R#oLCub2{H+&9jfRu#OKj2Vr zQx}-{|8UxEq(Ibw&Oic40T!qDceAJbkKLfkvJdxnB7Z@<=@sZI`-mdU?sI01OVcEm zOiw1@PMKy7ATZmFuIuN$S5mcd{Gmp@aU%CuKs#0LzD?>e4;xJpe#~;={-XcN<=Y^e z-xdaxLi`(0A&Y5db`~h)(_3Dn4iRl z3naop*-=9Ps9`I<_UidV_91Dg*c-$cl__S0-PVCh!8ee{$}H&t<$#;H46ei!@%hdB zi`L$UzrAH`%<~vzK4*I_D>h|`cY!G6ABocqJeR>Z8c`zYP6>Ccu8#yjMxp)Uk{gd}_`<>$9MQ}KoMx>%E zapszd1fF8Nz6J)po^78JaZPzMW+1r#8p(>OWQ%?dCjGE8`kQ%tUV%Sef?8P5ek5g7 zh_F;V$!Ed*YpoqmvA=Z%U#}1?f=(#;Ndq{2i&AYm!PqXjXnZh0{PaSlO{{UWSb-9# zzpgeP?u=rT!vT_v*MNZ6#;7DC_2yXj9RqwMozR^#Ag|oZ0AegaL?h;% z?)fAY|8*b7t3)zEMe}e(G;&1TlW^+dQN@IW*o;QO<%h$E?nSHP@V;!jn(hmKC%=ul z?p-_myx%caG5ou4emK~4Sg!56@2}S$r$@&KO2u{Jcp#Dm{T%Ohq|;akEDWo-b&>Ou z5~uQjTOa@YMz5krqU_+8U)AgT4G_$rl>P0SY4^=+dEw^mSa{OeUnyWId_K|h$4yuv z?o+HWI>nKH{^+q_x;v0MwL`=*uGJ`UqVs?T{P|cRmC@j1$3X*pE{1@K0sM_z z0|UgVKc_H1UsP~tC*7!aO(5bdJNG`#tZDZ7x92RnT&9B&FtQE6K8zn_!~GY4Fi9>X4^l0EF}Uk z^s~7iuXzKe4z@NH3>Kgdc3&L7)EdBE`)59ET=vLN%f~WQ;96@ulVX%1h^lnW@CDR( zHHKTf)G82xA!8EL@&-#?fV)ncPkMO)8=dw`oCguTND~<$vo;PL*<>v5MmapJ>*hT; z&Vj8;t5#npkd1f#lX}W46&Y!7;KK)i$L`n7-hhCxNE@dSRDA&#e8YGSG^K$l>z!Vket#z0iey0~;{?z)Fz|zmb9>UN zN?vZ9or67Slg+g<`pl~vges0piv&Bz+_gxs;5NNHWGn=zLwThUcj7IBDj~C=>r==3 z!UR#dVyWLg(E{QlMQ@a}7hoCB6ykCkwO6HnA4mpkn|xP$UML$&NrRF01!fDmAd$hL zNAq`qWI!4nP$f~HB$fq=s(&Vwf}+(7(foAfKoPpARrk#9|;yHWdiezq}> zX%as9S-snq!tHpY9)J;eOv(+PU%<08 znzcsm(MzkPO`n7|VZBN+O&(MkTjI)RxBSravL?!$DL$21tEi6M`U`5ff|-~oVW~k0 zo^(Ea%XF7ioB7H~1$#mjgY5eyzNEs=wgy<-Bts!|if4~QP22kwI9O9MhzkK+WdFEv zOFeS3KT*N0_IbCj_t7sYHd2Kaz!o7Sdpr%MovM_WJ>+%YU)^Qp-_*QV_G5C3V`TqXkj6knuFlVglKK z*wS+;QwdC@emX`{3uc-I+DvUSk%2L3Z*&HzcRoxfx1OHeB0~4MC}i;t$705m&zT6; z$w5`=*qQolwU={oNQE{@O50z3$)ytU@t_}jE-1hMX>eKorSbIj*yjrKisC{63|G}w z_A+xl#YR4wA*F`m!?UUPS>?14_9v2IRed@C-6Zo|tH9`QRG^+q9 z86pSgVMJ#kcVm(E)J^P^0NG=inMm)g9I;1oFa`$<=SLW2U{a}@J-u}U6WP3=h0V`* z$Hf@Z?Y2@T2bE>kwKMaooQu>Z#LfKq9Y3DDz(@5+hSwfYPi^1hGvPMr7?V5*)pWJg zu%JTmUz!b>g>5L*c$U1T)Q8OKlxlY7o4`wPE4V{pKa2Erq}wf{UK}7fRM=En^Hm!` z#G1Fs##Z+5EK-zyXkVsUyD57%T{{f|RU$hNVtxm)BZ(a*9DK8utu}XQX%=G;I+GTU zme;5IeN~wc8geQ{lz+o(GCs=%zi7~;{D~2=u4R&?l#eD&(3DkOc~D7$t`&ubEf%B` z{9{ktl{ths7HuqpVV1f`Oqp5}kL7%F98CS#CBy20A+D+eI6o zzyc_;1;6Q({Mqq(*3oQdoXgnVa z4Gql>Lt_KT^bwelmkP00!OPgd&HoN7n=@YI{!M@U>r>S5*A?cLq&F^yE>lwLk zHk$8v1_+APK6dil`6I*P$)v|LJKF$M7x@@!zKGvXkepZyg62*Q=7DQYh)`##_o*&zZebT$68E%{zV z|5<2FnBflGUxqJh#hhYv+_4;VFZq9)O1|P#JeKPLBM3tZJy9$zecRQy=;hChcRUED z=buuKCW7EhtNimgwUdehCm&uA`}8^XYXUi10o<}DaOBux1@f-DY13L!XnO2=Z;@0vs3d_f*O-bhU5nH>7QX%f2 zxxq@ipWIPF#JK2gq@#b@5)o+Y+1THg@cT*vH0i}2Lnrh-SW~XJf{`)7M#TmH3Y@DuhCJ(k*JdMR=pZ3`H+Zf8T0F4QREpQx|!ITF78Qzc8!DQxww_H7&U_2zM8xPl?IVPteY3+@laf@qGg`K0Ha7Yo6#OH$v zwq6B^r|!9?JNhQ8*5WDTP9=Uk{bo|{M`B5hN&T~)u_ZpE4GnBbuW)q(>1fgguRq=| zA%gL9pg4!uiTom-e=1H*@77(7#}J8PT=&?IEn9YW}ElS5kXs{ z=NEl9%zI=t3~Wi(5XaBvXN+#uKL9}`P5Oq=b{RSIyw&is7bFA}7Qdd>xJAMs+&d0j z?|ueersJS-J9vQw5FHWfz-5vAf(XwIhlqo+i$P`Q-*-wFL@fUMPFadyZn6^xSHU%| z+96k&l;T-ryvi&*ZD2x!FH#|NKaAX`<;~stQ9r<;qNe5Ow=)xBH4`5!`DC>;c|!Ew zJC)Rl31N<$7Y*;(580~0wY?vPr@HaS)5Csdw04ABksOIjaLsc>TX!7b2z^{u)P%Ji zZ6S|yHz5l2sm)9w(kkHi+&tq8;5j}lez9552DUpZ83W?iAbVlCk={jf2Y^!%_y`tst1ParkB`Rt1iZ`Z>U?No=WQI-40 zR787r@28BBb^ zq+U;pyz7XT=5Hq#x6-U)&etioAhouvX1#qCKCqA~3FL+bGqhLR%%blDIg8RxIg$=v zcgmQ@UjRvQ7>jUap*ZXgUO`xev(XGf&=c|bZ68m|bTz>XX77m`3vD6zOvz}=3x8yR z5i^e+ao*|vBBH;PX0gIi2YviuxzaA*(GHVhvBXYo8L_dDyUp$=^g2(+nNo8}Cd+T* zTQ!El&QK7RO^V(SBf}6FQ8a7!GAH?vA5cbLNhjU7%bRoIliP)jmtlDhji$H6VDspPH zhAgK~0qff-6TAXfA9>+eaNI_@Xtx3E)>vRd>fjIY;_`gS$P>Y31yP;#d#AfgvU!E9 zx9&aqgJkcd(4?kv(_jIH^lF^b9w^=9MV%zz1d)PkrMaslxVcI-g7k?8IT_l83`s1S z$;q9lMt<|~cC--q{PGFnh&)alUMYd8qHepr!b9u8v;LI@hZ0_)R_59kcWuD`6{oL9 zZ3_c2E*WmU!X2Facm^iTFG=xpi2S%Cq{1zNtm~|^13&tk4Q;sTHsdEvSA`(%0&8uKYl|jZI!k3yjeYvROLttj3q}b< zR5o%Y8KNHVHTyZ>ne$6S$43q-`J*6}`qi{BpTF?@YTgKJ6^KGRbZbb)d;dzgey$oU1E1Fy4GipW5hrD3Bb^TeFfb2bp4Odw=9Wst$J zG7N%!5Z9c=!Rr;JcMGigV2Z!LGZZR$A0(B`(&Xe)vDremHnedA; zSyYu7j*Ow`87<~E+!gOD=*uyfNga;L%h8JuOOS&kcc|6S-|ZVCz@-%)Y}Lb?s48#< zQ;#J@)KGH^yOPVDxrB1(uGUi}g;>a?k&W;x+%17DfhL{oy zw!mg*u---Jq}I@r8&ikq`E48Vd4m=F7ByJ{kaEm1>&|5QsPMs6R3sfaWoB9ixNUa;xa;uYm{~ zQ1%Y*BqP#H^c^JXz7TNVOYb==0Sm+3YVX}@va+z;IB0%$0i6!7mJ7w3F@KnT_5$AG z`_I>4G6 zyh#32WCMBpE&T^zl-qiQfdBoG68irYc>MQ|WaIzuQ04#sU%31q2yNjOXuKdrdhAvN ztl&!i)z<>6+`r#TS)3Hv{2)-*%9PqNp8fS2|4lZJ_N#~7fHjxAXw@n>it&Tej_}z> zeD|L}XntRpOD=qb7K-9&zkU&;M&MbQuw!Rv)Om>mx44L{Og2|x=3Ao0f}|`Wvi&!n z@u!52qWYyu$A7?LHM>tf+mSQa!jl5O?tjIDF*;i*s0w#QuLC2&JQZJxm&(9N*32)l6;&+!BF>vC4%*-;Gl< zzl`0t-cAH7UDnIdcTNFM8j#%Ra~2z=QV!H#>TNCwyMOx7?2CPLv#wk<{o`H(`QN{k zZhrB$lNyEYsLzT)QD(8s>mw^h)a#~qLDrAg>L%FTvUpR#~Zd%=d;*fIdzYNABGi> z&K$1ohq4h+D0D}v)BP8Su7*+l@X%6!v~m8xa4=6B%+?ukRNJ}<`;cV6`kQAp_qnI) ze1#mcz7N%EPUi)quJ?bvDHTYbJ$KJrz(+HHmC@U*wZZT!(G4H|V70^&Ut7Jf4aBm_ z8`H$H{qIi;(BEy(;*6|iKU?^Z2pDuN%%Fe3BuXN#blWU|Y z>L2PV4Se5~CrnEtxc`jo4-BlVtc;94ebRU35jM9o_r{LJq%>e^oynllUd zWuJF-Ab+QIciad*M%?%UCHOaWAB{Ez34he9C3F3}Jzp|vop54#b8}sJvrb<2BNCG# zfTmZ-Vt}bmW_e-Q!l<{&J5O(24EpWyi#v}8yC_(5A9h6^yz%SaYM)&mesOx_3%U;S zX~5ncMScE0lOkpO&&=kR9(ArZedR$7GzYWWsqI>Bx z0k5MC35lMEz2d**ai>7`?PPEDOyvHU2)0(iMLhk!)sVa1?2w`IAN1bv zKJIW8nGjaiVZnphl8N_LrEfiI(H|490c&LFvtPnsSf&4FD->L56-(X)KTznD7w=4N zJAF&>J_;VVjy+p9G!V4=vN(h2oP45@a@AL`?qr|&@cAM#ipNIy+gVeu%fWMB2F8|d z&6C9{HJ2*XR$IY8cL*fdWEm1K;;Sb4gXg3;NBIxCR+WUgZ^-UyNOpUTvVG+CF&vPo z{eH!1fCr7%N4yEkzSV*FbBpf-OMtg;a}*s+3jX1$+)bjWn)Z)<)jUP5J1q}oAx0Hl_B{Gx= zya>2_+Lamq<$*J5S8U+3krhc5=T2F?(rw-D^ZT#TXce}}$1!oc_kX@4Nv*T-rL!_MfJ49Hf#cU8 z9$lF-db@=d-N(5;)ID-Z|F z*|6x@`>euF0STU>Ms3WP#?oE)1WRWsy`ekxLT9vOF9bJqR!( zgOI`45=#C>>hefhm}f<`E3k3jL=K0e2!6skDK8Z~SpugY7t7@PO-AbX2jymuJDlqm z?*iyrX}6uiqmy0lKU6pQ2lp9<_M1_SYr<}++oh?$lc?RON#Pqdlxvj_Z1t83KWi}A zp_NiRwX+)zvrRrdjhg?HohNvor~bs@h@iT)Rj6t({(d*VQ~De$t&(|;?e9%a5rtpo zxpfM$C~E)(xzeO}TCv&jEkvn*xTf=WfGjq}UjKsFXzpFOcIo#IDlzyLbYoNpCtJ9M zk2jtT<0teieZuCb##8dw-*UI+a`RaZ8U?Hx?Aoa&zI4TbC+V`)(StFt0-GgB_H&!7wjzAlRsYq2+Ev2-}!qnJ3)8rKkBhjWJz+!LnZNT1ZO9GPeePm`?m_ zF_U)b6my2(ekm3R_>2j^4NEX_w*3D_D+c~q$qi$R)!v@Y(KO-eaNp<-(VIU1IU2wMr+^v4UBhTkfcb!RyxC|m@EW?3 z2Pg`~^0v1-<|X-0#rrt}mYakjL___;vxpYVQseIkmacc{pe~h>F3I;rVr7R#vTs#{ zH7zFcHdVjf#AZc8e|!oLC|P@f5zv{k_UwU22Nv}#=km%)M-I>6^p>#@A$(mdBc&F> zaZ6dJp`5scrQh^a`3E$m&_trNfLK7~HWxjMID!s(7^NCx&7eOmHVcVCEIg?2$%#pe z287hV)ikxl5KTG7sVNjEhUZp<@)=}58%~*y|WUezptwOoa7RwhjQXpa( zoPaXJ%q!5{t3N#QihwFdtAeUp=}cdyhrc`Ole5CQAN0!&GNZqx4*&bQ*LIykTY5n- zGQlGUo_UJZ)f`22SHFZo9DHK(5Xqs>yT~ zy;1=BR#-&=YJV_|u=nr!ueZP#SRNt~ge`gn!biv6_-=!YqY|$x-INsNP2Q5}y2%Qr=8~6zI!$qFERkX(Ho8fXrXOPHD}zbz z4>j-DXBK1sJY21c{VJts4NlfAeLc`EXgFPysvJ;icX_XO|H~r&>^>bqF*9EFxlO(Q zAGW3AW%5bVaec0@S}E=MQ$F3j=9DAH+h<*_TIuqo=fofSH(XYFt#TS0XIlP<+ZKp^ zr>|Mb<&8PGv74!MQZEz>cI#N*Y#Xydy#IZ9sgm2<)VZ<#BfAg(mBqb}a~6Ez%q~i$ zno#Wb~&KiN@jd^VM2+0c7A{p?h(SNM6N9=Q6Fl6q5bj{@8e z_eF2AEb$pKUhOv!>1@jDf8gS7eO9su?nL)GQP>OKlYVf!gl1bRW+{LhEKSev1P4>G zXG>LAYs?PW|9w9?34Z5w+&oPX*hGR6;St#6C#O=`N-UYtmD&7kj7Js=o*g`YiW%TJ zQuh~WcZEa@@8QtYI9P>cP3UE%QMvG= z9ksvM79Wimo|MFXBE>j}Lv)-@)Nu|kzGF(Fp}j6N?I} zjh62YEkbMxLN;CBhR*E+uO%qXBP?saKaQX~UuWgju+MFg>UIR-2sd3Vx9uN;%p5>q z`0}_>(iFlEnMZ}7dGzi(iXr&Bq31zWnS=Pz2F;&peRTBK?r}3 zrZ=Z3@ZFZtRv|}#fNC!+?1NI#6@RgECccmY5+~#oWF~)}DN?IjG}dl;qsdwA+Cb1v zFW_~oU$I^+XFDnO&V?%B8F#F?Pv5jLHOZzxT&}=(r`6J}kkkmlnfu#$vtyq-#aG2Od-}nN;$A9lvrJ@FRfmJvzo*7yTwhoy z_j0JEq6$Hj;=!}+img-a3(eP*xtD*l=1IYoTUmI{vBaoKbVNruORdsFN~8H%$QAWZgpN8}T|@CB)8;=;0ApUPVXZ`8*W_f`8*IKW$z)#96gEJX;U!>vS*sY8dhOi4KYHC;C1 z%4|3xY7uQ5oC%ee#rNU)=7kq+D1ZTz?*47l;-s8&|2s5=X?nLb%aNLLGx%fP{n^Ww z4h=f-mxy+w%L$G*!W$9KX2chl>Zv>m)H~2_Nx9O?7(WYL>Ms+rwta<1GG6bP?B9ut-uk=$uGrOGucYH;IHC!f=b4?ajuMiV( zdnbhC{85w5rc9($IrWGM1suu@3=LWPS{>{NneVRV%~ymj0jx6<7b9Q*yM zjt!+jb5A%fyC3D!Nw^+_r0Qia%EOgmnKIej6Haz&@uGkyC#L;RS;Np_CrX@vIa)R$ z;dCr<3F&umOd5#%+SI9VTI=Y1IKuu)Pw+aY<0!9K0meU_6S4*#jlwVO7q}wR7S~SI zH69p+%5_D#e{0IVrXMWk9seX#>ZKx-Xo;oHes1VZrbT4+J@?l-Dcue&1W$w?J#`kq zG&Y4pV>1=Byb3V@dl*74SJ=kdT0TI|Kc-(mdfem7{OW^7#!U7f!bNTarLMtAvUKoF zkQBEIzh=T?U^hPCw&?n`4>zg^R5+d=t>eoF<39Lyy*3S?elE#O(4z5TB5~zE!MsU# zJ!+OAhs<Z=)hSj@tGu ziYY;^&Mba7^cWh`7p!LVT7owwEcIkf+(~gyILrN&X{MEg67#?_oyvJlZ9xzQy&ZA9 z)F3e?S!X*N0q7hi>cr z4zS8u*;Q@8R8M(tNd9P>hV3ZtUwqm!do`TCPdoARf3f!#PEo$$8?T@UEM3xFONewz zce6A|NVg&>NJ_f&vLGP2bT>$du!MksbV{kDh>9Q$=fUsqcVgzu`3uer&ZsjA`@YZn zyw82#*Y&xoyFB5j=qDRSIFe=b&0c-ylt(~}!J#sMF+7^jqyJjwH`oX^ zlMFvSn<|gK=?`Qd6i7)t7vx<%`b_yKJ9S~lT4N^FJuGRu`jOb=(Ey%I5*@__^qr4= zE7P}&D${zPa}C2hA-&0d<`S+4Aj^){RD$LDg6ioYvQ9pA!Y{(~KTa8# zK)dgp+4+7TUFgIM!hHzAd~k96Q3C_=M>QXG`v{~$Es6XwD($m*Fk>`j1@FCt-mkSo zxnmHRzs74g)Oy@lqTQtL6zm>C*}P~e^z5u^+G)dM=PA*h=7I20>Cv zOJoYeg8LZQdTDz&!8?{6Gy?-Yv|X8QJq`Exb8iCM&)o%P{?=@Y#)sCmS!T2R$BaDCl;_j;xg`Ajcy^RhZ8IwfpSHqKT_uFL) z+0PHruLlu$KG(+vA1X7T0pc%xCCtPv-G^8l=4Z+a#dwYazScSffA0KLJ)L!3S=zjJ zHPC!}-gV~_P2f^uD~THrY{JBf;PSztRXUfGuSNM;x%@wq{PU8iOUq4oPgfztyk@GTd3-X|^n^i&{`_;%!X3c}>9^z3uS zz=y}THdMTComoy=hPQ|PHz!|yG0|um7(|GDTQ^K3c>7P71<9ll{K|6L^-zX8Cb07dC5W%#K{bS6~Tao!(S zRZK$7eIm2_{nhvPB@NyRp(6Uuq>GSXL%A~RuxL<2)hhRc?cR<{xB3I4?)_ke*Ke=9 zygvRJRqW<8JF_nY?T|&HJ2@+SB1F1R7W!o%rGo39$X*$|pYN4 zQyeM{BV(2?%sNTCQzu&K4oyxzCq_JzV90*e&cXh`qWZxa!(C!2@7Sa+k4-jP~~Ilo2tCypQBT)5#wwUa)>`G z=jAU9B<@04)0aA&b`fMh96Ns-xoy`IgFeW`gfv0=BACZ>`pm2R);Il<`b0M$qtaX7 z_WgQ9sXWX4rvtq(XcR>=CVW@D?pd*HwPH(Vc!Nt=a7hQ1ACnXD*DJI~y)zI{X5LANOy{J5#JlKByE|ZfFA3?^FrD5d)w@Sg zT_ZwIi)@d$gb;^Ax$r`RpPHO_%l$27lp>9^Ya3d{Q_$HfO+IV|Jqrr{G{gRoG-ycy zsnAuqEuq6~t=1*Ey2?=ftnyF{Hga&aL`102urv!d)U(8I;b5!vWa{T+pLoz)r8d|@ zIWzad=UHjjmx4Kv(1aMlbQaiI4~hzr4vV2HlQ^#~x|pc_J#I^0OGh(Yfk;oFo7Gep z3L0U!eO~EFPE)J1l~P=Kun68dvHbQMIeO7?SyZ$!U`tD3d2|DHY&H@peUq6M(8loHmIRrc|0NSh28A2csy1}~! zkq_FpQRhG3=aCzHjkCUB;rjsovmcsI^!F;QFDvw+>W=}JAQt$uuHnf5)^z0r%yHe} zA$!A_7RJ0^3!2bAd`k>doIfkHu4XnCx^PY)Jl(7tzGVKoEp zAW9OHUclR?Be}zNc+vkLBzze-kbv`-wjA=7da1?Zjclk4x5J(k;SdONIyioRP0!pU z6LN6^pt`Doh`429HATeTZAWc>d&kPqv(iump^t$tFx**;G=yG<48-2!0yE%EASF#$ z&+oo*X#poGtqHt6?{vgzo6ro9lo-%3UjmK2M6(|UNl6-4$E5(_7oz;f;Qee>KUSWs zz)`v~Dg3hb`f}$}(0=5sM-0Q1B>~R1j0URkd`h-#!vt&t-D^Et<7n{|S)2P5%&QSEvXaU%!I?Ro>a*vllH-Pqu%SKVZE26JU^d9duFbQ7U-?_FiQKXu{v8{Y5MdUaOX`bPNPM&mu+ z?-N%|501O^P=X;3T%k5gLta`T% zWkoZi$%d5PK=lLR7x;U%XxPJi%-e<>{ugUKul@J(B-RIpV~up*`>Ag=E){p7&9RiM z5I2UKoO$|;T`Am3QTqpxwxlHhv!rcJtc3f0jWq zPk+^J8_r?0&Nl~HE)xCZFv4wM2yLQbPm4Kw{? zUx70m-1u+e6jv!@0LIWW?(QQKq71RCMVsq`;wO|vGR(IVXn;L_EsB0Ir@+~$K1h3) z_6Zn}?v@m&hA52*R1EDI_3ytspWBxfK8@D=bCFPz)ps+2&bFv})LIjIeRbC7cYsG= zGopu(o%{wd^}NBr-bNB;ag_^ZA;qIc`2Pou*J@bH2l zfC{{c-~Aq-rMNoqm9g+16=^yEmiKp8XDN)$Wd$KWBQ4-}FZ}HA4rps5! zT@O#g%M6c08Ro!v&)ntY+1c&?1P{}Fm4FkXoAFcd?RN(!|BdI%C3e?F zsV`Xk6I`+0ku_|5Dz`T9b&Ms$FbvjxiEzKb2+tDz|kl7r67T$q0ihs z|2y0_UmFq9vFkV}o+eV45>ZzlTHOTYho!EEzENwSWOmLOdjxvRN)HU8A-S5Data-x zH4Pnp|Es!~#*}XNXPB=)+Q!aXIg4JEseoek82%{jF1Hjaufk(r7+T7DFyMe`bF{rl&Iq_g{OMfleX*R_H>(sD;{=6FMM4R}jJS&y7fqwXW z(ae49wfsL~mhxcZYOCwbM;&4w0X%RiBkg0nu^)c&G2GT#oIR?68#A)!dd7_S4l#|N zs!D#AcKqLcb?=AQ{zn7zKPJ2XH?0e>ThkQzAE}LW|2x*wtNNpaA3tg`-~PfDBkbCp zgqHLE-&UhY@WsS`vL1=M|15#!Rx3enbBjlBP-;h>>lCdbdl$Z!%IZhyzx_WobrC1( zyQN>mR0aPeDfuyK_cKACM@c+Z`J+|5zPEnRFTGs$8&wLY?!P{SyXi^8^U=Q_Sgz)< zJ}E0FMOQW6U7h$b@WM<*Rb6M91UB(&`Z7tv~HDO#j=PnA;mr?=bn5~K4% zu=o>w_E%d~iS3i~VfHCNd9m`bZ9JIORa~1!B zdsAiK!SO*_;QSmiM|Iui*@pSzdW%u_szlA^<|6)&vRI@}?MLYO?fRobWheSm{DDlT zCb)tQ{pM$bETw{MMZe3ka>lFo({7b-RUTYza*k#(lp6^J{hls?mB~loN#@Z<-P}H) z<-GAIp1$3DDKtQ^_au}zu`phEHRIPGC~~u)e3fCLqxbbv?m^%C)wLDayS3kD{zwV? zgYb^#hbgwrUub&Xk-g`VW~7lWbK4?>RosZA3<<9ta}2J3J)NC-NNM$KDNFh%SLZj* z)}!yqn^o>E=!xQ+vR@t z9=W--u6MzjI*WOsDx#aoGv|&qTeIr(YwaBJ$o6-S;`iD26~Dk||MGLR)la%@`xu)j zSWV;2Y-!LbVt?Hdud`P6-GNh7E%kHt$s>4x>R{-BnDUZem!dG&ecbBnE22uHE|=7= z=YRLp-Cqh`aD6WR)8;;NXXE{80`tO?T(%b#bvOwTTDU{&KpiP(q|jf-?+|ho7iCJ? zzfbp~a1v|uzGat+N_3ZXJ5wRH{${dShhvjqf<@C_e{twVDtZC3m0?$)kzW-*3mAgW zvTp<*2G^cH%Qm^Dq+C~DL9@)G}fMEUXN`nUyr`SPJ8vU0tSf;;3m9BoQrK6Iiia_@4LMl84|Zw3CPc)YKQahdc? ztzb&fVZK->^quX`>kGw+_`4)Fx~XC>1v1bHI52&=4+}b z{S@yJq0IjMEt`>K(0JwMUU5gfzgbTX0e`A3TU=wjstwHSIp-EUKaMDiCA~XdWV|vN z`GhgsS9MgVhRMxQIo@ZY`k6vm!)9T*{ilce9FFr#3JEOK$%IzMb&yw^b#$QoZ*E3vltl8Q6sOR{@ ze^mRSEBP2!dZt*-PpQru$6w2Z%-=C1k7a2dZ5_}Sn~T+m$)p(MC?DIqPTIu6Q$M1d|KQefbcgt;K$p4}eefnp7TfX)|-k-^z439O%HSTY` z3I+9;thCC0?#v%_bMw1b0r z!0P2@GITn>2i{z(T2Oep9IDeGc4ej|3%0+_yZLRw-D~w*vs||f>y1JA>pXCr6g2X9 zy^*I-?-m12B8Cxk#JZVp;pe;SiC+uv8COO5W1<8&_G7qIhVy2h&Uy%6?K6hvz%eAP zS560|o-bI8#*YV|uiW;+VYPsbf9SG1Y}@XHBCjN|0<(-^t}ihZIWubeaRgQN|1BVq ze=QS3g173F*8V1$PZ53Mmrbm)lss8<*9+jE)tHkHznT9qZu=yxv+!3UWX!Y*egUbs z``H5}Czf=X8GicuX*U1$DHO5Mh|SDe^Zp?uO(9@eB~^;DxP;m(;1kqPM=~d8u2efq zR6+(K;`}QjCJ*;r3Fp?uVAJsSUczZlq4)~qyPw$st^dtS(SROY*lCl$osFU2X_x+7 z6nYwtmJ1t1TUKDV9;#07|6TL45VUn|v$8G6P{7t&O(T>gy1ZJIfiRL!=Pf^J5DBa% zmMQzY(Ng-&FTtxjb|l0{{(bH8O2hfD=$!X8?|*StR7BJgo;75qyqW;}k@ICG>wf$3 zmFf>dD^YafR+r`G%?r&a?uDw(W#JFAQhzW>1&6FB{-b>luc2CLKx(n;;8SXA;c4|k z`fc%hsShhBX9p60W2a-Te|`muAM16=k1ao*sumogmvc#*WM5d+?f?2hdp_*LE!ZG> zIokfnk?-ts)*qC21fHAJ)mQvmgx<+vvy>M*)wqB1WZizzzs(O=alBZ#V2Ay~RaXG* zAUJb)zwh*4Cwjs=$7qx&weJlJF0D9S|6!e^u&|0#Aw~D_a1Lr1+HKPjGM)01`Wr6c z3_EK{mVwW%ldSJ3mQy_Ke2y%pMwLvv-+rC<&g~|O5PZG0mz#f-pU!)g*TP9Y)m*^e7cTd0%il_&z((FNc{HK&@mF&N4 z&>t>_zjJ<;INkDNta|j3?6@lT7;KtA@+KTQ^cq=l`>)g@YFQ*{k}|8~OZ7vGDn#E_BZSfmHzO*}P=r@v-Zz3+hYt^_m>1pzi~2+d6x8U#L5T zz(WpBFizV{!FK3R-xtr_!M7X}cy+Ty8Dhv@oua`bDxW&ge0s-jkE8d^(;p3ac9_dw zZHu3L3jA@I7Yf!HAvx)AA|7OzB{YZO+fXBd{s>Qh#Abap+v? z2G50ioZvOiLhnKr7da>w|0KdtzjPfK zR%xvH@{>*zX@zOlKY7OC@Nj?fkmOta$q)J!LL0Pxk%b6syt(;i4_hBzMp{`WoiH@1 zb@-%u_;#oecg;njN6$aQ1D1{%yksb8sOR6A!}T8$qXOTe zus=!r6-%@HiGt?d*oa~wcK^LEH;2Q52qlVaRNd^&%N*?LDk*T%K#{N@HK)Z(z`TNf{w311kQf+f|d7zh?DB(R}$qSTditZgz&#e`ypv;z0aq25tzcbKD-klU&__(6Y zsof-9JN&@Bd$^FlmqcdSiQh(4#btK>1pdT5 z1Zo6Ah9K+p&!3*Ws=EMZNXRN>1@~~J{>)2k+f|CH62eU;cY4>Z^P5|o%K5*wCHRy@ zzc{~xW%=LN|3ljT?@Iso_y4~K035*nzs(Z6l2|UNSOXV8U)}gyb-(W6-z1hqgB)kw z2Yh^qUvw-{u1UQ>gr`ii1hr}$_o4V(%s2k)Ym#i@OK?jh)}5_PO~pOex&aQJ-;OqIaME#kZqf}>J5 zPi7XiS%DTP(SF0>5((O>fo?33LYKQUmAHDQTt--_0iWMKGvaG;d_1_XlRDw-n;Nfr zf3y{}LATz1O*DY;^-Y%>^x~>O{s5k=Jw6NZ=fBnfZ>S+>L5N{UNIz=J`G;|HXk?Ml%`@Ab@;c%!xW)!S zf<(pu5Sl*+n5GF|jIckZ94rb+V`kd?prGJ(*c{0$sM!wiKGh!cyldD(~*iv{7NqVG1yJAF0=I$et0<_9E8tB2$L!z+N@zRexhJ zSH(%XWfa?oX=fwlHJaBltW-#*%&qP4chub%91X}Lp!yOOdWH`FJ)XNPqgf)oub+bp zj(T2Anj?Vequ_wGP+`QACIHkwBYuD#0DrmP+YKnQ6k$MO-XINJxD;4Y1dUgZ8tid- z-b@s#0=|#(0>%SC?#!0(cFsxL2C31|+L;?&l%|G;;a$NR3RI^sfY<2C_#c9ndF_o` zKpX?m5*_2YJ)cPqf#tz3bDOfil0dr-kZ`#n0QRECl#K#BO^!#}mQ+HHS~fNXo1bn5 zqq$XWnO=>Kqxu+%sgUFWS43vv5+Zuk74t-Np~MFPC~FfeKPJzBB0?($U?El5cO`&1 z!1lU&k&}eVf>$eS-841&mMQ|U?51Z8oOIgOs<2^2e{cLp*%gt^99vf}wH}xxrv-|( zfnhwajh%zqdS3}K6UM_O%)Gi}%9G=8?uKSKBCk&v#L&IU@0u!y=Bm%c>qX7n#kdzY zv=xN-4$G#-0(6CfTio?yb~7)@%8PK zEKEO)-zq`hy#jh`h%g%AQJQX#o8o{Zl;Bl|``A_9V#@OzIJirO|A59M2CWeQh`r=$ zIxua^CR;C%S-Nl`$3fLdB2m?;7!m2SJFVUt`0ETwS_qtH;yO4xz{D-eeD_j;&>+jN zIW9^vLx9;a6w@&;{xLLD+AMz8@e}_XsiN(S$J)qPKKx!--Pg$9R_KFMeCH=1{c_-* z*d#+SYkn#F4;q3DlKIU-&%{jJ5_hFLy&R5NBG1)&jKq>o1I>y*^4W{XNIQszT3CPMbiTnxm` zCOH3)OR%{a08^FiZfUT2C7 zJB~8t@>0BTs4k0kWmvol3PoewG0f*qZfi3RePlRJ+;8u<@bFDEqQojg<7IsvZ>)Z! zV!*-_PBrC6Bk_`!@J#{Ox}vIJN&%w5lvmS~M^HJ|)y&xILES!{ke##90>S3xzl$~=@qs6EqyX%~y6Pm3eY%dde&yNu&0u9(E zFt3qCmbNJeC8-zs*hXR>on-~>iD}P@FzZv;D=wA$yzIPeO`mwJxvx~%YE^9v=a%I9 z?Iye5&bqCw87&SkwXslZt)CsIg+5hDM%V8@{sV%a`-NHV`t~l1y3h^t@Dx4++(YRZ ztOC2{0%LwIdc%21iZ?6jwq#4m(V}t!Mz6T(ktk1nb6$4Q@yXeeR8oo>WmoIlAD->v z4Ha6&>X6b2Nc?>kJC|Y@cT393`_4B#w>CdHLu9WswvSh{MPr1Njh^WTx1tFM$|t(+ zYnM(!dL>14GbySI`WoTKz@k<2?bc3YF$IjARnG87g}>aqkDhvL4wkR2f$}#sMF*08 zC2l$dLVxj@&;u_y3KE5Tz9bH154Kq|XYWK!e74|ih$ZD8Wp+G`FT-;t?H6LE=f|>H zWRJh9fJzNs36K?Zq7)PcS+vrln6qK7?9t!cP85)ua=tT>BT(L``%2|z-Fo^F=7(`A z6e8gbrN|;V_r;iT){Oxr7v5=leVk+zv`iJL>(3XZEt?s|i#BA_P$meMDCS7FARnhQ zfY=n3KaAX1AmuPIQ#0t;tx70AU|GF8?ZZRqcqft#dxC9>k3gOM2y4W)Ox}_JI_Nyar$*z-8qPgyO+fbu zUF2-cstrSb8;FnCcxC>&QQbHRs!Pt6iAGcUsx7nDfORbhoX3bZNt39)tXsv~XEj1(ZGO3| zu1*FHQCoZVN%)iUHjw-4vpk2y>~6T|IQ2xi z;ddA{wzhNBt#?eYA6dl8)P&z|&y*J@4hp)8?bYTOhu?B6)k2y`W~n3HCT%STG-5F^ zcfP<*-ODJB)YKa8MB6ae+dROh<{X(+LU&N9}Qc$(`+n4pfc;^cjHV-q`Uc!eb?1(umrqv5( zQH8C^Bfjp5nlnMvD50qIxZdzB43xTy4II55nbM+WfaHf-#GU+CS%Zn@4I9Z0NUaLD zUg0L!v@Xe>tle$_scae)qkU^V5igGStDOpMz;T1E!dOK|=JXq=#KDKwi?|zi@4oH% z=9{M)giY=X2;@z4Y7XNT0MjNZ6npvYe=diD1Tz^(@hY{Px=upMXZ<0R=4(E8>lZ&n zTEK5Mnt;c<4#WZ>k;rWuw|Cw7F=N;SG)0uSkz+3b*VaIoRyy#IivRJ=`Di9^fV0tM zALJDDY-WcardaqsoV7iO6VEYqvyTp(&i1J5j&soZ^zr4(H0Jr>emGZ!;4Mwy8$ z(mtTJ;e;!ssSNBbwbr8KbPM$Y1)<$Ra_r=+?qrJ43cKcSH!4MNlv}K`xjmaJ>XAig zarc~3ie~wncp>>hYFh;?4CtGZke>M-Vy{Oj66L8EU4cr2tvLTNFgzA1>Ta53R4$u9tqn6fkwl$Toe$52K1`yQ11`%AypU*aIcOsr+` z*!LIFF-KwzzLNN->L=oUTBLpfG!U}$qwgP#@6N4|591ajE&7W;V1?ijk4oSFs5E7_ zH(y`B)03jKIu{NrREdH(DV=AXu}~dC4PXB|K61;&-5(Q}&|pqzkmKq6#xk;2wA2~k zeeXkduXy0%L`&y3n^@4vFSQ6}#ipu}n9ni3V*;$IiF=>hgajvuzoBshRI^)6?Wb5u zK12R8UPf)-M54&hcDU89!1AQeN0+kB8Md52g3ZZ*lYtkw=B~*=B>O?nMe0; zK$qRd!9zF)zGH-+Jg9pzvXjgt>tr75X)!*eW+xqRGC=jXa(LNJwo37vRIv(}me;vv z^4nmtmn%U2rsT1<`~OUgOopessuswRwPdy?eI(&)vf=C*K|P9>w7 zIqV-9)0n1#lwANZh(jdiw({O_Vb5-zfuw?{I^(9w9P^0Wg!uH4mJ_n7NjB@t;rrHZ z#>0<|(i>gX@MO{hn-Z7Zb1F3N4w=k1U*|sm@(K>&;NCtHGoX*r-dUJW>#{WCpxO5n zbYku7BSRwz37q%+Md!<3^P0V!OStZh?6DOmf?3fZZJueZ0dbDdYtuhum4d_ygicu9 zGd&6N3j43%jp5Ifwx9QPQ$Max{MssbIZe%pWhrT6y3pgzsP;$6pauwp;P7z+1Q8hn zaUJc%=PjB+0rkDGTN2;K{admT8QFJit)5}2=@8|JY>$E3110!B_GgE>ig9!1NT2Gl zR1*xWQl2rR>~3*(PnA4?wkmxGtyQSgf3?WRemb+mHq@^dOGlLc^AMAO*&@I*-F7JI z0K^os!XtWIa=Ss=g3n)q+NJ)nvv#Gd-f)t3uA&dzMRG`(#z8|(O7GDZckR+-3*?o~ z>-%)6b+O0`sr|RC8pE%G@a-G=HPuU%YhIJ4KB3}V8+=9mFeA05x*M_G{*+w(_$7Ci zX#4GS*^?L_xRA6P{b~C88HX6i0c2R3U%vH?i64$k1rj1~tU@d(%3D&Eqm#NJmUaC!U`pd3;vYnLh3A)NcOX>mw0o?(*o=C<=fI zvQHV?`@D+LwV&{U_xM^W1!3Xz7DU?2;9ibnFn?&U8pK|zw~IkVS1b`?Eww&PQlKaX zWI0IPZ9!AIm>J3o?DIovMY4_u^r(;2%o{n5!jX^qS4=jQ9P)=KhUDjN!g$DZJZ|)JkMuZC-({Kn|D9w zPU1kK1bA=>85kmy1pZB}A>#or8+AZk*ko~wbOEvQ_L*Iaq!wp=>3er0^YuUP_|9&; zX8N~&#W5{OO8Lw;QNb;#M13fdry`V|{hf(Y{0iC*jyv7BiiCIjIdpR$KKr7ia~ilu zYhOIiS>Zdz=iOWsMPCi2d8F#tS%v2c(;cI#pK5#JEq$^U;oc~1tm-Yc8YC1x|3wPh zJZUoc-dlVn-V~31276L*A>L&lfqCcUc9A7IB74U>-t_~vdxyxx61`k!ZN?DAY_lG# z{HUA(;ZAXS+GgTve_;DA3gDrV`9ba+6}^s(^YsP@GV;eWq%T5Ls)hPQd29=_OrjW$b#_iZx^>(9K5&%4rh+=>z=UD#OH+U4OV=R zqb^!+>`%mJ-Ydl^m+YIX;C$^1v+PB?DT-1OgOB1bn&`P@Wzp;gO|>Nu<#w*nc_^WWM07(SAeLgJ54!eeJKKcHbdRgw@4ZsUbtscqsStGbhVuzxQ z(ZKY3GOG4Q)MH*>(4EjoqKG(Iu#A8lr&RU1r;z;*_wx=yADjMPycRKP?}Kk(rJ{k) zT^zqiJ?@zNnYKGD-GyOA47+!kEfGt)`AgN*m#Bz22Wo`2s9@4~+JG4~gr!Vj%p+U@ zg(};)3=Z95j#Z{1V9vg0)UBuP#igi@nv@@A&8w?<07)yoKb*>QDIbh&gkfB!A@EdB zEGV+cLDOjhE<>tJBdNrWIoVuTQ_hBVNog;+Wj1XjY&c(cZz36ixDE58IieS=!0`Iz zjKwT4f+?W(T5DHD-Gz$2SoOECKB)`rA%+=weg=w$aC)F6Bc;WCQ7slSzJP?QD)K$@ z(#|S}%N2*|lMn2X>-;tJDpU3@3n$#Azg>h0A3h;ZrmkKl_8P+U;lOW~&<4V$KD>UdajKGL^xOvC#tHOsH*|i|+bq{Rd?GX;bpNvQhDW|2D%nZe1*l{_R zQ1NFDjpl!caL`=DgaW3@kxJ?=NS!#1R%yb1!&{R_iCF`?B|GY2P^0mCgK2~%Y#6-B z9;K;-G*T$FWI{(pZjJm=YKmAcIc4ShV%0i_JzAu_77L8Ra;}<$ zxB(eA7n(d14>uAJAM-^q4k8bx6&NE~v4i!jj3?*It@m*3C&~f|cFjj@lXWSZ?95kP z68YO4>EO(a%SE{Gls8DNX?-?s-619R%(99IdUp2*ta62}(tRAHZBTWxmfMpx!)lLE z-xS29!}y``L1@ELD%kgCNNNTj?W+c6xsZ0h=;aFIvS0$BBYEKIGnK*XRDN5WGmxG0-34ckp=$6OTSr&5O^{tV*7+eWIn-Zsq8nfhc2sb6dfq-<3T^ zB>IeMc37O&gFacnB>4@pM81AEneUD7EcMVUdYw1(j=l)1$p07uPvlr(e*`wNLNyvG4Y0#Z5f7$qL_uO^6Kz(iQnW*v!yTbqj}KB~FyB0;_I|}J zwm?z<9|{+$uPC!+(R!sVJ4&oL{EcedJzuwq^)cBe&^b-WMoCStx@p0L{Sz zBQPWI($m*R|Awtn#e#&ZxIdp{t#y^E%$wn9Js>h0^xRg!uN#3d%nbCvE#C!-kPff07=)&&Oxg6?6(Dy(@rgTC_6}3n>4|l`-mfi5TL`0OL4dwJR8*#WK#q zHJnxk8r_|Mtmj&$7(*Dy&lHImWCY;vimQzWp=JP~fyv z3Laxnb}-<%uXLJ~$feFVdZPdiA#hBirT@e^Zu9*3XObB{z?<)>&+ScVF_Xthmy@Em zW16)%2AS3$_kgbZgs9_EJUhYgEla&e6$+9lkQMVAlsTl`9AIyqy3IyDC~6X}PN8AI zlA3x@fVo~}rvo}(qJHhdB8IQamq3#hD6l{H=q+V*X-?{P@Z{=~cS z9|2l?CGU9SbXWN=Vl|L$RCDzX{Up+o7!QWEaQyaO3el_LcJ{q!ggX8As8Z z?BGZ>(3|wu8`!wI+_PCK5^kZhX;Kup(=DuLJ5SPkS4XNjkstWfO9)cA2MAwjFwd1( zn|C0y{Qju{t@1s%Av9A_X${MvV zqF(R1Wz0K#l*HMpJCtu*AFI z@Zp153VXhgsz}dUemVej47IUg=Ha%S@kXpkZ=M!+xqgYFw4xHUk6qbv8ib%+Dh!2o4u2rNK!luXRd(MHg6i)%T^U>Gr;ab<6>HAc@7Ww!$@t|prD zb_TPI{aE;IZ1h)dp(4MeN*&AYlD^@>)zd20I;!z0$V*T9PVD`EWCCwwQJx4Vv5bZl z4>={}dti)SXI=D#gCSAl-Nu0%5 zsT{>3+4Q6@GrFU#rj%v{QBmx>1O~}G>v+WeA1J87^Gl|P+br-6 zpq~3GJOTqLVKE^1fB6zq=LJlK0ln?v8kpvx>EqKfSNzp_*nQ{ zIR!27^|2&Z-uuln6$|nq%thl@W7P69aP8_KVaiGC2Q}090WBG!tIr-nheY8{F<|AZ6OJ#D2H znlqAkTh(B!0|I}(-b|o^LzjK$0C_2IQ+%BO7>k7%of4rPi}Ot`WH&!5$YpWM-+?nn zfsS|64wxS*-nh;WLe1I$78~H^YWum`L8SqHP!KSW3aEaIVbl*c?>~FzK!6R+{4JJZ z2aIr%pAb5}`5(z(MTEWP79ZxJRxoj&@zuqH2ItF~j(r*d+dH`dmzVp5gv@r~Zz%iS z{vprHMId;1X4Rkw?SOTzOoAao8jpz=Dg4V!#OyJZ2biN_Px6{I*n{YwYzbG#9s%#o zk^9BOAd=fHLBukELpw{@X^d`Q8`zfNh=Z_P!G`9Ool@|c$%EB&*CHPRRJ(>6Y8p#C!_uZ3nWZ$H5P0miXw zCUpj%LC@*vEVXE_darTLIy9KPmgJ@c;j}*d{Lt<2%c0wC2v3|GFMHpx>hDP;n2C|D zbOpc2z#2Np=kU3oU5yN{Q#P`9YZE|uxm2aaOLD#-k9#Si`eleS?=zqt7FYV>$qjHI zKZ?R%_k-vo(^XK71OVbw)m#AxbdwC#&5<;6h~!Fo0@L^NT4F8&J2Ed#9~k_GfHqVL z)r+8yS$qar)SRsd?tAG1QGa%FGQc_oZWSRb#nJiTsRVx3N>6cp>iboF^I;l>BQ!e| zs*Z)+(I~WeXsp2H2ms!|C>?W)TS!XSwmzgm(lt@fKk<4z_jK9Hwm!ZMT#{IgB zQ6|XLh9pgG@Me5W4jD8h&9s5oP((m?w)==DQ~mVj6bwv{>M~MB$<+miVH)vuzIv!k zfj)eON)}!*IAekfLw^#7zvTwEmR!4feqd>szQQts%kdsAZoLx4t>O=Q#!w;k=W1fp zarPZ0q)O^L#^N0$Yg($}3)w~eI8krr-7AL0nP>;PYuEB)V$ub~`e-!Ln>cWwRe}!O zM8+KOQUPYjEewZDnsiLI=nryUGjNTUla(2VwG2QeiA)Hwq67+!za+%c` z@AS@~z5qWNNi1SAQt|HYCNK<=l9c50eS+K09yL1j9vg{Caf#AGs)tEDf5yiLY+1{%HEHqpo4dLost;wn$XnUXl0Drun4YmzsQs6 z>)_ag!N$ad=bW!Hn zeyr;06Dxv^P^8##R2b0{mjAvRYt+X(WPv$6iqX#mx0lzRy0_>`f6JL_v*N4LP(xXu zs~zR-qrn6&t_Y?`&ygptIKmD2WoSXl4K7@LRyqd}`-2}%6&&02Q=bA$tEfsm^<(8( z%xsQ5?x+{k*su>N=%VFxt6B8oEnJ*Gk~cGqQHMh(hm4SzN+e}vjI5E`SAkkb+FMWtj&XCn%s(UkDp2vO&r@Na3i-3-ak(@APOs*qx#!N4+C_k)# zw;9#7lt1X4wKO@!TLO2dXtv~z6s{T)!hH>-adqDk16{#iN^ir8|+Xh?oR@SuyNQYLVNDV zG4Ay2+B8sQRU`Uxmx)=AJ8Brk&NB*R!y6?bW* zn@`D5=2{HOqb;Oyn~}W}0)~_3*gGn5uugKbNv-OxM?ag6x$xJwEAbi-i3;Q`R%%tz zyu4gF)vEdQeIq={g+6awCYAcxlq5Nck}iUTLReiv|7@F@{^_o zdo>bw3elpy>;_+7ZW`i$h?U7AaOmbYxeHUg)7`h3k(!T&6&Yd^B+X$E3FJa@MLf*;PhDvNJ#pfQr;HxL zB0+6GfQscvVWSs;piX=-uMykSENwEyDuFAHx}S&6uNk4a55{ z>9w#BBx=fuZGhu793%ZDOozI-3|FKS0r}vQDi?(X(`1%QDzhbK7ub8QGAVc<>C8$d zmGAewf;B(dP{qDc5#MV_!*QhSVneu^u61FFeI-v~qa!T2;IA35n_Q>6xp>zL0uQ5< zGT9|q)+YqnTIm#BGlKEY6l%F1NEpj)2<`hTbSR1|#v=Ged$|#{77cPcOqCqXr1j`Y zJ+DZ8;Il3?5WZL7P)3{1NhexuQ4FoJ9KnfspaO;SGxa=1Ay9125%vy^(FK;Y znH=HVMS7O7b@|HCjD;ScppQ;oD_n^u5oA5weXO}e0u}l636m=dM3=UH|B?u%#m6{1j#h|Tz*I~9~wPxM3s=LmKZL~l-LNa;n=sAOh6IG zVkW1^br1CiQZYdO(I$pUQkIz-Hw;S+_fxa0FdRuL`kK^|MuqJD^qtAQPO3&-EowMB zMN6Y&EcsoeVFsLrw{T?NzzPdJ)dC0NJj7Giae9;?2IhK&q*8x|iy)SVjiPal{RGs8 zB2}J^E(+I4DN0e{YlLyQ0Melab1}h;OUaFETJP5KG+u?NKMI9WRH$`xdld}~U?qfP zGyaty(XjnHdQ=@|-s{AX%eX1ob!_}9qS)I~#&BP2>EdO6OE)uubjL0)hd*_A%=IMU z_V8qZ#vzg{d?+Kgim9OD^ly8<>d4B|cp)W8XqBxxqD`rKf~p=(lUP?;kMWXU`7CAw z_vQJ4Z?J(b{I&2ahH_~q?yxZzjHcT5^7Z|nw{2~;%A2lq6Gv7lRaVm5zDPBRfi4T= z>%0ZwJI!u$Ao7}bSj`(`{!-q%*MPGs5yjdJ$Io`d&BOTPjYS`*b9<6t3e;CA**{^RY=0 ze?;p3Xe2J#O>gOUVLb2ln@II>dr*lw4^Bq1bNmI9KJPt1?UtjH^eO8~y5p0)LXz(v zz&%1u!wyUH=A5zvoqL!{$W$2UdE$I!VBg42_yPoTPH_l1xoWnZnM%qfK*1f&leH$p zmEIc3EX)LqM1{XUmOi9+Iin-XO_o*#%m4H5=JNq38if|6o@C<301&*%B9bJjU)egA>8mOqK$ zaL?TP-urrA*Xwel#LkyF5;Zh>0`#6lUJ7O3i5}lgv*!;08XTa>RL*>!%FT+ArJh8d zJUT68QgF-3dEdFH_h=_e-J)KInb*1-NC&5`dA7O7ndo-?TtRTYBiqFmXa@+{a`hZg z?|Rn^lG2s|X4X$jg~-rbcXab{2+Y_rZjC{X6PGygb2A zpf@U5zw;Q8Dn_J*jTV`Ms-Qxb0u5#y zcg^8sco&VkWs`A;-E2}6v2YRnM9L`VX@EiMuJdR%^G~eEtm3ogfuyhM@{+3`qUTBa zocX5vPhMz4S?2nMeA#^Ffns^?A-2$L6sUi@tWpm1UQjPJtXt5Y4=biKe)cvNT2=Wq zpu_&@pnO~(4*I8!j{`q7apR{O?W`jTDJfqsP!mXi+u~3$Po1aykDGCcG<^? zl)L1>nwujeGzs{OvlPnnDL(SdaXM~F59pE#Xp}wcT~6_^7n4Z_kM7*$QQ1h`0OLuEq+oUW&-$m%{B%047jXRL`L6 zU}FLB1^0#wMf^iKN2s&h;(4X;__J13Ul`qn4Jno7=1FJiiiL2skD%x1exZy|1>OQW zr;y2W`_j<%7=IK#R^n=>r{ED;<6%l&p6v!OXn)muV?)4IyUtuh&Um@b4c$%u#e-fD)_k0E{PX z+3GiAroi;21x52-+`Uw8&rWXoPGV3CnN(5$*bYNtD>m1yB3VNMkAC`;gm^gZyw2Jy zn9=8zMtl|!^q6Dp=5)s1tB%^&sLnkcK^r3WpZImV1V0ji0ESxnI+IMzr;O1(&|y5+ zf?hm5e{n90NiFM0Q$^Xv_UzKA9GkBrJ_N_P9C1MZ+4<1+$htNr{0;~XD#`}Qys}8T`o)sq84@ZYik7n75Vd@~MlMcei&E0XWQqbS zNDYLZuz><%Fp~Nzcbu%l1rcDIgw_#T5s70{Y5hK=1scMr93#4Y@a+dMJ!`p1Oa_xp zwYnRq3X31~wo@T|yKiSxPcHI@b^;tpD((--C2E8`&T^GDWp^-fhev>CR;0SHaGdSE zf(H^@)x3M=e!-t5Kaxj20|NVc{l`EO#f}o{hHm1dAx*NILLMo3dlyZ$!5x8R-5Ib> z?$f*JOJz%Sd&n7R_h57(++HxnRiM-cJ=WXVtUa%njP~|6Qg~wo+4^7jpxrq7l@J2C6o*}kwm!adyK?&3l+D2fe zmqQu}?lrCG-Y&~GY8=o*y*f~_?1Lvns4APRX+2reU^dl#=8283&ETz;ZiJ9ZatRXL zQesKU$yvy;9n5gHc+7UJu<(Ej!CeEf4~3mxQputi^|VA3`G}Qfa$I#4 zR%3!`LIFvrnq!fbpbNb9BLtT)_me!MG4>i)N>jTNxohW~L3PHolqxxeN|iq8S&Es9 zJ7MCqY&rYdgdCcO!D_9u%LeVZ*amay$b;8Uif!s?HJetZPQ(@{*+%lj#vPsJ1N_kitI4-0ui_u27_4wFfDMWgH_bod;^q@JQZ{We8L?0FV8-%@!1Vn+|axH zwm`|bEmZ&0&A_Sefti7U!>)ALmqz@a9G5gvP=*drool)gcuWG|p$T-=Ak2=>nw4IC zONIeS{s0DZ|NghWki$~}O&~B@gSuc)V7%kq+^dEO9&1$%Xn<690vxemE%KnQ2K0=} zR-GSjo&(bYyEgXP3xMwBHft=qg`@HVc-!VufG~@or7g*)2ftgaS$TZCixcrabrnv& zU-?!zD4_>sc|}fw_(!1ddcED1h6Q2|8f;VXEopXJnZ_&m*Hj8EPV)73O)V(OI)H*X zBSDBuKqbJqc{$IcdJXPn(THjs-@2Dv>tF(AL;;AX9!We3w^)XyCf^I$0a5h1F0XJB zUJZrQvQ%|HcyZa{g|!l%3zZ<25(GC7Dj&@11}?pyLdnP`#G|%4CLP}dp>EoRT%GzH z;$;Yj3>)YzOkMYE12Xf^9Tx%}-~Nba&R(Z@&JRU=0P<3IEuaXA-eN6w=<^@fN-;DW zN1>RfG3NHNn_~=|G}f@xxm30@J$_Bet*74`A9`|}VJM?(MATZOttU1zr3JzW3T!$} zz2&Vs^q-94F$tJsn<<8BNczeEpDzXM7NcstKxh>+ zA7`7NAqkH8s8j3S=y~k44TXd;^sV=Y`BxkC9g$Sx^taM4B)4}xzvq#4-<-nGjpPp5 zKKKy#5>WS=m>`3Xp*y(`i<8%7WM<+L`2$00?>;KLe=i~b`xM;$Y2*rl9C)%6k^2le zZvnKCJTRfqA#QR)W^y0rO(!_+&KQY4#9bIjJKkDPkPv&v^)IWq z?%W$N#p-dNz4yF_MdEKk7?e%&se{CNM^1sbzuj_a>m;@}?n8CMH<~PYI47JH{N{WX zDx>MQX9RDL{Z<2w6-@MFumP0?a2J3r_6Pd?^k#h^$JXN4^MwOvc~k_>Qo)*Al3ciQ5%_E>Q8!>P7Y_+g{do&>mG zc+zio?OjPN-+7ezX`F+O$QA7U-0Fq5@j%~isqyivnA;f-S2;(^dPaK`mjfnI=;W*9hn_<>}#!esqKdN@9*Fcu4{`77dC~3jQ1{3Nx;it39pEF+M zAxYX%N+HqUugZ*|zp;iaGW7q_=xnKU82VefR3@B(gcvC4s5chwg?uYvew_b+SoM2s zvKEr7N1&q(tPL7&zfhI80t?!vZgNdIy`K{*bu9IqrT(S(TpYlncT=(L-9UYHMVtX z+q`+|*E~IV9_K!!9pQ#tlOHS(%d*7i^vX9_+B;?cPNn z)202u_@)**!W}c9D6`D@g>KOXtUB2o`d>h$DpWq97WBgV8I7GA2RB4}_klxRG8u=E z*SehDn2qbGkUtoiS%TuggMI5HFhcxCBO(Zpq7(Hp*}4q(1k3Inj#^^|%6noyR9t|( zGJco+CpfvKFVDLC(K9^RTdG^U@wGWGN=?}M5M4|tAJR{~~w}8QvLBu2To+~@C zoUWpUD;8TtYQ=hA2zM_is%k@n2|T|2ccyqAqa|V(8ylO(;*WO%fjb&q);2bc9({HY zc$U*_l5rMiAdeLIglESRRdRBx9l=6rP_14Vy=H=1QZx`wN?oNOfGRrFstK!%D{SE3 zqZr}FvWhob{Z*ZK^Be;JzVLRNGV=ypPM(Xmu(s8G*@?jpCVD z>tw2*d=6~I96sL-c~;b`V!NuM-KGl7;){d4&M#j#6%z4Lb5WD3{k{j<+`L7^`aL*1scgGrNezUiL|xiiC%5PEtmD-U zT?)?>Y%}9P;EUKzd+n2*hDBa4B3G^#*)eB(5l2 z%Wx}P=YYczgkZnFii&*<28cJGyp65~^u)6M>uik`fCxqQM_q;QCah&l4<(VXn2W(GOty=?onktGW zZF2RO6G-kwh?)jwav{tk}s!m3iQ%9i}+TrQkOT$Q- zb$bFy$D;!=++b@|K_;3oXt5KuF!-y{c0T4j1TNf+^x5!0( zGo59HViSc6g5!NDm+(R(qGE z=F;ixys@gMHXC`DStli@mr~LKN(wz?qPg$fq45LGyAN5!b{%Q;L(vl7qQ%x`V%&nV zb8qS~;d^MkmZ;Y-vvPswJI=(GlZqezW@gpq`TkWsI9>B5i1x0wrqUQlL6| z-@HtI$4OQ3jw}6(5T{H|BvxDvDAl&I;7l!*!Zxy%6)I8AVWSUjP78Tch})K4i&w(i zsM;;%s@2HjHhI4*-45NM(>qOFS7{wB9aySgCQq z645HE70rnatW}3nzgq}jRCqiWxY)lT1;tsqDssyqvFNSx9aZRxy4MkoWID&*E zoT9|dIRfJ9`l1X=qH)9&3kJRQwG_H?7sR4LF!R1PHXn*;pW9f}A;z}j<;}cCRT*cK z3f9wX9WD}G3Zrc{XzDP?{#`DAmS&rHQ9dz4*E^Ghn@CwrLo>An(~r_wAqJrxUk(L0 zt;Z#*6SST{CR1s6=&fK5S83ByXw7U$5trL|0Pd2aKz|)CZqRZwL40lSU`3`T3F?cp z;GqzwI6NnWFB4Pje91#%C4s<0xiO|A-9v72U|~Y13BE#t6p<9Ht?H{*Fxsqqs4L;v znuXdAc%qpD!|~D+#+quS=;pD+(FsZm`Lb`tFCk=p<5?rS#}==b=?DoJX2mvApMD?b z!if)ToN4K+keWkRIVsI{qIXz1N)~s*O32Ywl_EOJJcNnv5+&wNg-I^%F@1HPdVI#$ z?xR>2NTj(Nj2%;?@as_%hjcpBXzJMurh0@52M1mc8F_6)d+b38uaUArsg7E4e z3us`(57FDCX+5VBs)H=D^pUw%8u~$Dhc;ybN=so?WkD8pwJZmPUh!lKf8s+GLb6-O zEBQE!MGTWV3D3(~2Yi_SP}MWD5Z|gwnX7D1^~5wXrJuKHch;Cn&Fo~IwT7Ele}^6BOjGJsu|oA=#kV~n=?GTPtw<|`^vPmA6ZkLL2(YCRZyf=xG; zNJy*p033+GGamR#=1~ybAkMq;odF;}-?q%M-#br>nMNauz)XS*X_Yqt9w_Ovzt?}* zC{~(nQ~cKDj-x+$q|^e}6mTIHtiWVc$j?CqbvLjd?i*P;=I;qrXO?40?UDQi zTg`bz**i~*0#4g>pcAoc+Ec&vi&pI(rQNs?$jL#=N00t|staAojeDi3^g8e649SkX zF9Lcr-8Mn-vnmE2Rk58%pU_0G{MGA72#R&o?%u0`N^b-$;x{-VwwaEd33?Nt_iP?t zoyDy-S*vp|EjuvPw6+ScbA0ScP?Q>Oj0CXLj;&75Y?R=sYTVAftp1uMCC6o}HYe;& z|HwmY3cF4ZlHQ+9*w1e}_mgfJhLf@$nnIAp68D{Q?u#6-PiSy6ZKYm@!HfL*U|L%G zMKqf*G(7U+)Nyh?waF)G#EAMgiS+w9{O39-JD@4cPiVxt_>BB&w(L+dB+{~oZFQ?~ z%d-ofPZ3lKMDV|29gnox==P=E1QIxRVI?pe`MBO$- z`is#K3`(|@$yS`tW}|Zcu*gb>9yz4!yjCEj4b)*#6{Ztr1|J?)!ES#y<(eWNd+u%G zL9;(y07L8EiuBKBJr^W1{UI;t`Sw${PUJtjWj&5wZL##M^vM7)9UatLSfvBH zlRIE=*FQhK)q+>HPpgAonyD^BA|3O;u73ggFehvpkV9V|kX?bHh5nro*>;>)lH-pz zBEAmZF{~|ip`)MKtISM4Y%n!{_>#?+(u|TlDbnF;E9@O;bJ^a&b`1zGctt>*O)Z}$ z3K@!X`u?U8C3FHgwbHfAPzyn=^y|26S!~=z}-eWz2UYkv1IA z^&=cw++i;PPSfX6WNK=k>O)sYY3v`YHlNd|g%e7iq%VEdD`&~it>ILVIJc4)KgE2? zWX%thgOOax?g!tTM28iVsb9Y;kG8c!+?^#>$>mjD4hll!aj29-%IPtr9SBVzvd5_g z`Pr(!EK@EAF(IimqFw-iFeOWe*EnX9BcFX+lD3wzfL#F_A;ewnLO`gyZ1jVpy6+z# z%!IHHN8WjqfTGNIkyBRx)c7tnB?euErNezAYB8UD*0C@5_6V9LqyDvqlU)L#L~kv3 zpjcG0H$hv|mgM9npSC_Hc?6uhUshY5LN(rsXxlx&u~PX#mtx+pF(uWG@Mg@k1R6xM z2dT(BFZ6=6S)h|y{qfAZM%BId`!!GR?V1W(1?@1P&AN!z%lU9ko@pb0eR?(U`mbVXbGxjO6E5 zS9C@Gmz4Hgrv_@$Keo`^0iSG&%y*>T!NA$<)A2iIgXQ#6N25U2l;5BfujML>*YOG` z{fq?9=LC4+eEJdPa&PaC(XamuXG!$qy0!iV8FLKXj#Pc+XO*I#FHoKk2AOL@gPQ7g zLTMwrot>S%_%CIFxTt)Z1qaXfKBXS~uVytj&v1X+5CA*1;HJ+Q+w|s|9)0XbQfo_= zkA!x&-|36L2tbP#{JXpI=Rs0lvf@>in$k=7_5mT;G>xsUG}tnWUm9bX_QxT(bR2Z#=9jy!r}ksH-vp1Eo69c?;NIaYar6= z0dmevRY3{}@TQeEHTg?S?}>PRzFqQOa`XO-GqwVFhBhVpmega90hwu;kAt@9R(pvO zf$g6qGRA03D>Ot3@eM6JY~|Ab;M<2_JuG*65tX36mh9Tsq0Cchdf9j7elc>v*t(g) zyLzc(IX)+}agqjc9!;gyVWsDGAG5@zyU+c^y8uzjXSR1XC8{Zckh+W`V?@584N|dF4mSztuc3fqYh})7v|eb57>)vAHlEMSSQF< zt{?ndckig`4G2CJ0H4yRT26JmeHLt`&dP4pj^i`U_OvHNidzfz%i5{z_P*++}C<{L!^fim)sMaT*S3U$vh-*3b#4mZn%e@@reotbIN{P10k*|-y zUAPmz_DcxlP}|K?WFL09Zs_`cQ1IJwljK0MblhFrCQl)NiDjbOaos#O^J$qlEx^P zpS6u9X+7v5yMc22*8-k6U%yXHl(}(Y3Yow9`(*G#-gP-aU2g60fpe zwURKDY~D;r8(f{1!>Vf8heJ?VQK@Cc=jfe+A>`VwE01@Vqp3bFn~6a(VH8^_XkB1k zSl;OE@P?c=I4f-#X9_vOCo=Di+>Rt}uqkKCmV*e>EhIWsOU6BVo@FiGpvOp%?YgMh zL{(^bkfp=n8XaKer5Xw`$ajicHZITMM5sM43sKGfPPo7Xuf)@KB1Y}$!_UyEw}qrF z4F@{mqP&%N9Vjw6r9HUwf;Xv^m!uhq6Oi6NGNGcpIot*bIR?kT)yA$$hVmg__R|Zg z+L5EQ;M=XMZMO8&@JVW7DNJ0j?C;RR3@_Aas5K@?Gn&-HQmf?+VWVj53&Gf)sHz+{ zq%hDi!}P=!?5FPbUYoyVA_1?|tghsyM;bBIozn-<)wnsdA!Jgm;AXjW`XO_xiZ=xdGo^r%R2O0kyX+o1~*fh18FNIAT&~ zTjjt9q}Z4uTFs={walbPE(tn#f^B6#m?t>3`t-ENRdFm$bnqtPF7&APaq_jN#|=V1 zrI#(Y9zE9c232#zDi40btL}qpm_`F(RnSA+5Ff0?Q zrDB{s6)6pom8*Q0*jg!#eBP~j;*Mp37}4P*GD5Zn-p!9nlI=K*TK%Pgcnx?kAB!y? zM&`hC^{6cLCU(bN+x-ti)*E%wL`NXMl3BDL!SP@69H3k zhMi@Fzrz3|4|*v8U`+cEf>@KRxX@^ZamSWy#_6Goc`BY|N1I}^x04STr+DxPeF@g_ zSqUYV_81O@JfshKT%(|T+R1(Xo$p{@rRnm%=AE7VVk`B}LcI!ORHl!d>cjr=0VJsB zhCb|Gu=`_!O5%Hn@}x0?@lNjG+cVr0Q2+^Fe7M`rJq3eB=3J1CK>e3zR~<70vsZX zYmxGN;n$ zfu+4WuezSORw0p2LcK@z{M7noYYCCiTZXwb=$lvwfmvWp?WA~m@B`?!Z>Oy%N+YrY zJyzwjQX6v6=!C41($hIhPq>_ffW=W%8O)17Bmhi`vSwEuyh}menw)~-CPNM2UW+wD z^~t|~eD>eytOHmC(?5n~Tl);5HqXO>Z=?xKrEJ90Y$&PZqhvO@dR`i1bS{!S10tg{ zg9&u%03>or=4xIc^X1PxY7|T(<#~%>2QYG4Ov~7cZ_DQPwlVixuXg2jKrV?d`kk_2qBC9D7%?JGRkLC4Ke;yy{)5Hf=ui`nsYgScOs)W|ARo181S)7-z01aZBoQjzh6B}WJ^uFHgS?a)3PcO22WJ(% z;$RlXX{TDtG6i}`?=%t_COlV|^ycK`bXcc!U46L6uaZR*Gd}BcC-Q?No|s7tr`^?? z$A7P=%E477|HVAX@m0XW#N?*PDSQhATfi*j{`+=r7O_z3Hj*(G8W9fzkc-HQrmHN# z%F0ou{u#E}A(FybUHj4G-p!S&!@R*%kg%vl1U{xMhriE}2RQ_ux)vr=(k3pH#%`^W zp=tUjyQaspaJCIFqFDv0=bpFW4d7j*mkMUQ54tFL{ua_E=Cv-2?uy@|>{WyFg0HYFv z^V`(YS5{VH83SjO)|04jE39!ATjSXriyy$Lm%sn0Jv?}Su+F{m<>B#7i1vay&iSZ^ z-YY9#woAx?I_ulH9ar>@dRDu`dX{s*56Y^i7>XbU(NoJ3ECc`S0tjMIw-72}M&&yD z@H*;P4`S{&6d_FTC0wEQR|$q*uGG^g8|%TA0^0LOfPiFW!2iHzjbSZTjTQg50H0~ z^q4FA3d3D?>USK%X>WvJz_XOdF@NGpJ5E@e5Q6&`1_`I-%JB~bekrv2cAYlGK9KE| zkJngyyYOXcKwQcjQ-t90-FsK#sMzq};VJAm&2q|v7OAQ`=g6*z-+^eXBXoq0Rr=&C zB3c0{Zm4j}n+#W-=}sY@2X1YB)`CO=gqVF~)KGU=MEz+cJt8QhPF1tZLkuH?D>)E@ zKL4Hyk+|?_w%XBh#ZtqfE$S0T>q1H+f39#H;Y++>d(4>UnW#g3euD*&e8WinEk<+lqfpa@-h&SLw* z)K3R$pb%;%q2|M$&j~e-ZklRtg~v#Fm}hzBdFTWQNbj`^4qJ(I7^w1+Cb`Dv6BT+Y zkgdQkB*1wXU0aD@96w0n+E^>U3)3jeJ<=4M*nCx>yT)~ky_f=tDJZH^TZ2hOSde1~ zu|`*CFe&4CQ#MwjAgcsM<07j}N* zCsiKLyir%b=W}YrD1rmkLTr=7_kgL+&-l?kg;ETED zczHCdvBKx5WaRg5oayf7dd*4%@1%~na;QVYjL|LbEEHRorBJsLuyDUXD}6xNNz(nI8`<6PZbGL5v&#dT`n784Yt1Qr8hWyRmOE@LM6Hb7E75T9Zc59 zVFRwITuzVD*Qud<4%+$9eU_pkKN_>lfaT?!+-@@=TdpYAJB`stEqxoZzRV-QtZv4* zMA2018e*FNr3hvsArc>6`9gc#;F(bl?a)+GM7X20Eh#N<(5P+Aa!T@w(ww^3hL@}8 z+P33nqin|NWJJU1g6V4PD#%E^u}gG)>G7oG_lxU|**|N$#+W@QM&h|k|4CSo_??AG zkt?FPvTlq2rPa@f=#Vtn3_|l{K@pPoP^n7Q6pBpt3L#~FL}SGo@8F)q?75_lG|6vj zS7>0~Ff#d0jsv`C@I1bHXl`d}EWV(jWEq~87I)es39`oE74sYHSf#n0WHFCz$~>ru%26am%Wa&wU@1b(YdFDJ7nr%m zdBjYiRo-#NQb@0=hbYO4^(rAjM5sn}TxjlIC#-l_QvJmE_*qzrO}*+T8XkZEj5{{m4(P2 zR|3KVvz@?!dz$mi&@H%_Yw#VIwAV!Jv8Wa|grDw_u+gWLVguXi>@TBJ>~7$Gsr>N~ z#19LPfvvKMlMa|brC7eaeO@F`GXxw9K%50n+$;@>&m-9Q6vSp*H{$B?jYIKg3Mi4X zo(B>NpvY*>g5=?scP|-SfstngY#+g%vQEb@m)~AbvqH#_*HQ=#dwP!$z&|72JbmH( z8Te=b+u>r)xO-No$7fv#;)=5Da06O#_~o~;vl%>A_2Cx^NZ)|T5s)5-&WYTz;;5(O zIQ8UD^HfyCIIQ=N_(&UPANAXHw2*`W46x@xE;Vw2D}r9TgYBdB9WYI|>To0Ut;+!O z`&1!JI2_KdSNxjh9K;-r;OzRqXGE^c>^hg$1eDaqMT<_qt-@oFOl`gQ{MC}m-Fq^x z&5ENg_8}miUf|ovL}=4JTLvH_B9JN$R_iIwN0=Q}mgKKOJKv}XOXz;loGHB*zrb3N zHH>AU)8G4c2s9D9uX)ME-E<>2{ftyAI0l9A*%Pnt9?NNh(yZ6HL-D9GaqBsC$7(qH zF$j&X=>Y-s#y+?9;wu{eXyEr_Awiz;YpVDK=NRmKd5dVt*-I6lS|hO?TGosnBRN`N zNljOBr56vpLDk+*9f=us9nlim0JzVu5@x2UfOV@u!=ntfzCTy{%6t{<6#hY9-UMuX zvLSz=b*~+OV!PXf`BGZn918GqI(wXzxr$6qfKa>_6WR!gl=a5V&9{eY#<#)@5ngGVlPLdCL6T`42MbOZp%PG0_vLIYG&S5LulUzDlhyZM-y zA$cA9xHP$rBCH0p@eB5kf$!X&P?P~48G=8KWXHdCF9&~6D8*N;Md&ogsWs3QPt|>S zY)8S_u~>nflub9CU7zUmgGArBx2jKVtlJ59%K+N!`K{``WRB9>)~tE(!B^!!PuSSqcX|1NFZHppQzq$hZfqAQ>1fNLoi0IRXzWL8j$`gXq+Cx}zb` z!bU1h#y@um+dY#6`oxp;J4K4 zg9E8ejviQd3H)7Gy!Q~;s9AO;s!!kS(I|emx(h1ru?$QcviItv3h~I;hixk8^2F$B z2L3&De!su0sk#Kw&k&jvKytwEZse_IGl)qYj^ITV(}PtBGbtX{5NeBFC5!=YV|$vd zOw{>SScSm_PYPYr<&CBNmHpL$xrPJNy(l)=9nMz=i?uo;n@{Y*$iZzr_@t=oME3j* zOM};Q+P9By_3DsY-;p_6GWM~2)Yke6GumuIXiic8Ph6B${5!kT`dWBlH|c#hePwe{x3Go8keQ&)&ab1F_QEFu1zLO%IX4Rsjx@yV>r4+1~D4z`|857BXsv_T|UEx~iA z4tLRMc{Rg|cx)lK0Ge!GZ%{ReNml`kh_iZHCgKwll}=-u6GMEGQI`)c*TB|oD@}1& zsEuBXrSNOtUj~$P=kGto93{aE=miGQrTw4ksEIob53MH-@v^DH4>VW9keI-Rzuv45 z41#%0D_@)dF`!W?JWtMK6jNi89c_g?h{*=7#SU3Ogj-WGBJ$1ytK0s16V*SCQ%C|B z55%<3r>m5~?<%`u(UOs4> zJdH&Lh*0X?sXVgF3kC7)y29=GN-56WJ3tE-_-X3n*{AUKwZ%<;d!5ZX?DwJ#YpE;Zn7$D<&5rf;4z7SX5^?(yqdWYCwm`aD zLBtou_-irpHnC4>AG*?-BSHT;(zko0trg zXjPd&q_}N7h{VG8xZb>%MHtk2{D9VO#^C}P=1*RzRDRx^sF&U8wG6kVHC0wmQd>{P z-3b!TE=k&w39TvIN`zv965lSPi8wN>KkUxX5&D|%D&jEUCYey0l$PCoC1e7oG}Z6k zEmtr?V&9tJu@yK#x|HB=pOLc*!1G>o=^!~vGnE(P zG?_|lR7vy}>+#J>-dLoFDtPF}U>-cN`?bR6QpQSQKv7>Guz=7Kj5!dpM$Qvb$1zS+ z#!QSIXoMzuHd zMreAVLA8A7*^X*l{z!rCQOa$Tp})ZY9cQ`YnwTL zvd94|Hm-O;v$J=~19o#fGi3|*YxO3*UL|JGCTgM5vt@n)?rF=Q*RL`0*Wd!4npOD< zm}cg%(+wkm^zf#5jmGBQ!uI4eQDP)wJAg`qak5h>y})WshuA7AJ~z)yEZ_-6$2!vr z^LzlGrd%4LN{-#I#W`Eus{xf&%(29*>TPLa6r^w#Kxu%%GKI2t^b0f_Hu8`a!QM7t zAjd(PXSnDX;Tp>|-V;##WTjiF zT%$81OtGxMG7!zFgL3QSG)-h;7Rs-PB4_iRf>Lwro`-k&tQ)oTj4+yyD9CF4%!(Ez zsfTjs&P&9xy;I3bBHp!HWUeE?Afx^C#B!5Vn1V5rC%ci>$rXLIbpJp8-iQzHZKBp) z^V$|l1RRxec9yKc{x2Z-Tl%S;!C83%0F~CPIulR~KA>k&O9djSnyuYaP5pt2gDCr# zR*s^Lt7%j8vbmWbdtAm5GV-*bpdjSEy=ws7XRfih3Ww19mSuypj%13 z{Gg_C$G`t=6bD?wRJV($>Sl`k?_cW7w^K3{p9gPqOIJKImeqN&z0mM-p~h-;rNOM_ z?+97S=f(%3aOvftXEBuNR2RqtDy{#D*j_hXuxY(NYOHiR-XBH{_G*RI=Yn2N`@X=6 z%URG=P9M5us@0-|E~lG6e3Qa|DG!b$TAw9M$L}!E@jdvWO1L{^-9jV!-Kxr*{J%2! z5>a>QD1YC_cM0O&8>|xn^@*SsH0lSv@X8lilida{TCGdeANH+J%9dL`ko zqcRJ~yOBNW=QD<0Rp0zq{^K)W!UWZt+cbnnYZuk!u_)G>3&}6fW@W{kWk3Lp*FbC6 zk@J39U+IR+5$`G}aXcF`(4%=w7PEg>wl3%Y);{X+dm_ZgpFWB_MWzajB{n}hlFSu6 zVf)$h_#~lLW%t1&>+O{@+8rtoYUH&gkE1_V$s7VJko*BS(tu>9Gx z{7=9DMmy3#Bo(+FU#HKp9Oe~ez%^TbJIKx^V(U&~sQR};lFb3YEEv z_|*eiQn@ZO+l;w~M}tAHS;K+!$KLg?6Nfj&oXmRvO4uY^f9z!I>jC`fQmu#Kqeda{ zSi9JLo0GymtsZ>xGX5q0MWg)g>A0562rwcuEd{3g^t?q#6H_V% za0oq|7PXDV8;d)`#<);Eupx$h$lvoI7I}$I>q3`HW7W39H0B-S_?LtY)p3^W1q!ud zyJs5ZIXfBfdQ7gmmj=EyUs_!UU9Na92h(m#ck@NKetu7Ko|ALQJJB5VRyH6rBw{;= zA8?%(JQP-E|D1z+{W#n!d;YGR?Us0`hc{>p^j_)IgobJT%aS@Lg4_!Qm?u!0d&#PY z#0~uZWcZSMwb8Nz$U-5<8=~+$qc#dt?iCem1&#E?tIVer(ZNZ~yDIGU0cTQ5KPYUW z5|^t=y%3*OIeE9u>g|&+1=sWMR@=9_LQW6Zj-9SYpXP>iV_L7?b)?-zGD}VfNj5}< z6-3_oaP>i#^}G3Z$AfTrYt=B{lCJx%`k0ACQ@_X56Pql)>yzKN{hDMKSttL!4*gDg zlY<%KGso5p$#_c>HEq4_!w6vrU04J@c^OJl>GAq=qvXWDeP=;wg)pFLb;=$FUlD@t zHv8$)VW;rpx61tfZ|GcW1}!%(Mt^b|QGoTsP@>{-*P~gv_U|vnk;+gFtL{JKy@&TU zJrtxveB^I>o3{j_bE+QO)bLcGf0mmq9Ca?Y%&LNpOx+?bhO$)1lI1^DhEBxq%}qof z^moNRI(aVsvpyNp>gTrE@-8cki*Mkol95l9AGY6%-)@-Tv~DIf>4)OAu8vyQ9R|Dr z%%uZB^9G(MFd=OE{_M_@?>o6O?u`$i)13?U^7^cWJdIpI7Cl`guKwE6y(E4{Fn)+K zt}@@M5>jm-wZbTy9JtS@3;f7s84DO!Ft^i--f^2hR6Q+c*kdPjFaloP)( z8{5ZAgHJoTpVhzN5dJ(#&UHHRdD`-d`tzImXyd$_b(-)`9zV%ik9=2A#>+=)Lo@dF zUExLiK?d%u&zG+-|-it)1@%4FLx0ISmWr~8ExvBXVk!5(4 zeuH(r_V-hCo{}NYV_`URiIZ{EMXhFq&KfaeoK1tb&~nKdLvnEDt?4?dGF}*N@`tkm z;aQ2a<75sIGw7bb+NKkyu=X!?GmlU&wrRdiwX9Bi700*+*4}bT6Hx3L5Ur!vjlrzl zHv*k|?e}0eq#Zrz{9Wq))W2INFaR(JI=aX&8Lq$H>3(^2>`(4metF|=`aNmy zb{qwy(3iiQPEBrU2l4jj@ul5!G;;U~YS!(-VKE?ESCwtta^4C~8ZAw|e}9e1w-Y{3 zVr@L}@7>J>OvAs0B6|wZ#BI=$b0Y%*k=5zNV8^W7WGEoG!LP5+U%LN6wnW79mM*a6 z*(f>IgGn*z)qFwDT#LZm=PdPm^++ z$+LJhXt!#$asTb(l;853Ju)Mqvp;v?O0(Qyk^9^!8=-bo7lzRRba&&~5)tqZs5v-# z{ndDH*=+c=-0EH>U!G3?(ILZOMoz6tERIM$W$sj3ITPfZrc=rA*W_lM?2N*A5Wme6 zIw^8C(5<<89{Qf5+e_MbKC<8F5!+8e^Mjq-`D4+V^p0=KzJ|3qr9GF=HXr_#0na;J zez1uC6!!=1*>j&#>>X0n1s@E{2AK_LY0A!tf^O?i1yc`xt;V+;v8KR3;@D~Y`c^}c zt!IJ&oz}X~hSuFl)t2T27g^yi^EvZ>+0U{#ekaUhhI`~sF36u1+x77-v(>+e$+P8| zK2xVi2IcejuOGUTRZI5MxA~}g&D?##6D3^vHpX1|s(h)gbyc+l`NVhZ`h8Zu@7Wvr z(Ywb(NtqI;)!zMZm`kWv!Md`%lII1q^6l|3aMBQzV01K75* zA>08_F<+@ufapsd%N5}EM>kG3QM~6Oj`!Q@BQfR0R_9xOTwKf?tY4M?`g^#t*b6Q8$97?3per;zX!^}h0 zfHpI%uViKC{QdRS0!M#6K}f|?v=3pyPAf%Ioa=SF`*YM~R4WANQLigDrU?blm3mJN^a*g58;jU*?WW5SAE^Rg4~s2g5Jv z3l454ZYe@|N#B0|+=FXuYe`I2g=vB}gq71D_0eq-8!f^$PCO~PWNe&lM{N83l1o+j z?7QNEPL&qwi@6RBdG_O4N>|XbX3LJE|h7V{pTu>=_+E((`C7g6_P9kk1DP4J~dBv_fER)c3@7n#8U*kj;1B7w~?KOT_8 zMQAXKl@It$??-Kb^16ir^~|h!LP8{Si7WSgQ0BJ5ZA57kfU&8ZXq0Deh~#bBL$YQz zEuG5@R(cgS`3bH!y$n~cn7umymWi#z-(&CI8Gpdj&5(gVeDjS1bPVH74s-r?sKHG9 zYxOK#Q~GM%w(dh@1Nm!>idpyTxUCEMDE;#wxvPTalJK_`D!<0m*;<-Q&ff6TveQl| zHX^|W&!y+(&y$D0OX%mr*!85jyS$}C$Yfs*+y9X3A^Lq?QON_=j+!o?a+|$**}h|9 zqpznw7V+(AzzL!#fyfAA*gYmL<>!6TmAOUw^6*geTw!eck8vd!4mgq}wc7j;EM%e)hh^Pz7gKK5)J z{S`M(_GY9Z@V4}EUgfL)XsDM;#ZXi1v{HccoqN?~bBpK0AV*95=Zx=qBbRU#JU=jx z(@+=x&pj_lmP3pUJ=l%uM|==XH*o6O>wS^-*e1d|ta9>=G8sJ*J$SV(d`Yo%b>7lF zq}S;OfX8FEcBVH*A{*$(=I>U*!fmp#=P;`Z1^V<(#j;EtA0hAVzz{NW`om!eh(@K| zAe@YMKBRE@THtj_CB4y~Yx~f3^@`;6@ob5>ZzinPY>nPq{ID?PA51@PpqHftSNqSN zLx_+Y=FNLIH&SEB$zw<{CRTajqq|*KL_tqd(|o!A>Nd=aBUobkdtrz7A8HFd@zXa0 z7r-3Xr#4|F8~TsHmT_P;t#neXRHfF|N?AtKeV=CZIH{mob~LM2p)xxx7V-uaGxgr3 z?$kLed$4VttutAd>Wllu^E9)-Nl_S}}%3m;<&E|?c;2J8`WQht?gk_@Y za&3<$?^nWHr%`vI_1=$m=<&oY04$@OTw*s#?PNA8fmq90t+#?dy} z#(jXBPZfg5)8-7B{D@;rxxjbrvmmhXblS9{;o9P+Di4aQZO4B!rVs{1v4Sn?19^*c z^f4dib0ioChU4zM1??9ImqeRpVt#;%bpcCFao?q%?>;?KCt(UMkwxrl3q$^EeKoVa z&C?8Bcbaw6pBoCa4_*%8Fu|o#^QA+6P;iP4_GjW(U(($l>pY1Jk+3KdzY0}0tZev* z)BX9GR&gnXPg-?G2IN94^TSrn8DDk6KDFDH&#G^RSB&G`Rt#kz9Ud>czotnL>WTju z9}*vk^(vvvEKD(El&yWVs{`-g1_WMZl`4FayiT30|5OL<7e!tb?bQ?6>2;)e)o6Jn zZX-Tc^xEPdcOK1s*jL;ZN`Pmn{jX>U$IU5y#^@4_QvFn0&YHORh?D<~v3EB1sVr$1 zu}R<}$CakU&D_YLmDl;J+u6nvN!?o1`AX4Y;D|eiMFqm{(f$Zped#`U?bO84ARMbXm+is9l zti^RiHS2z_=Xt=eakG8@#(9F{*&ow>aT-<)laIWtHu=|zQF>!yogU32EnJhGbw>yc ze>rL$rt{nL^(+r!b;Fj$j>}MA3WIap;27?AOL|WxXmfUMEGJ7Y2=R?%RoD2FoGi!| zjR)jWQu#c+nF!N@KtS5_#hCRGqp~5`^@j3@|ELyxX)y5y@O`V+fpi z@R{VWPM=nO_%?2ei_DmMZ>0W@tY5ISJ8r6%8K=vKL%sMgISc9fJbX?M1!(bKAKIw@ zNuTEp6CS0^Tiv5XP2Kxql}T&|qd4dtDPbi8&5uR|CGom1Ovjd3+1_{(&rr7e-n;$R zd0CUWFmc93AKVyAK@q``zod=X$LUXqPo$QJgx0mwnqH5mI%E8SDsyULqA<&UdxiWO zr?Y{u0N8#tDlZ-V`!(2Nwg9APxNdzNK04f(??~plF01aD!0&3g?P>)fm;xs9e|x>y_X@ge z-gFi&ftHiYl~eixor9^pzt}=biGqiv&U#!oWh1EnZ(tcOg(a)~eBFBUP1>7d8Od%& z-5qz`=stOjoNoBdjovqR>IF<#a1NzE_EVVv(>iYf_;f!<$GWnYFc##8^p$xZ%@5@ZyJT+lCR`O@o_`)z;;zL`87eG=OX zjj_ZS*Q?Hpd!Lbi?|d(ot*D0mJ(syIyQWvH#C8lvJnrUhyt{7t$y-u}eB95P&R@TF z6TYjYi#35~bY&ICI+zqp0Q@nN+V8GkyYRJ&y_z86SBJcvl~*x$Usk-cJp7NPqVKj8 z2kj+)|DAVcf8^C0lM< zWIiptYr6cLd;2EJ-_LP6Co>SB343Eoh(TR$HK@!hIpjn^i}L(aqO5zrRYa|4b5_Mk1%6W3O0by!>)#TdpTR)a|Llapzhx{uH zN0GuwXm&H+)vJV*soB2b^j+yO5!Si4to8AAby=Qx@2eY<@w|z!7J9Ex|D{zvoAceJ zU+cPN0`2GO8!1NxHD;!w`(3|`{O%d?z2AJmf|oq(J;b|>p}Z09bgraLsLZ2tvLX?E zNU5>L8rBtE&v=+o$+C5c^t#blKafEAl{ffs?q1JHdhbE;N%4!2z)2p`?@r#62;CJY zzZ|{GU&G{@GyZ3T^tL-I@J4ORyMOPt=et#!*qbZl%}~;rw^RKl6-OqA?#~62n*QuR zFf6!9py?G%HRPX_fJ8-YpA*GYcf)#wwMfGjq{U1#og?2=FPn(=amnH zk6w7c+%x{N;Y~^sn*17jRQExQ*JjkQS#kaDAP-Tg5=xVLp`EKKMs#%q`h*Nppi%uf zDK)jlI$@4C%VmHC0QJqIRtgl3Jr;lp$t|D;I(42+J1+4^XxT6TfYv2In=E>6WQiyw zd<6ytKrCe+5JmM6l2>PIz0PcL^j9wB>z@O{t0zD;>%abhvcWLmb3KuBKR4p%J|;)v zyJu%gXQZilbbB)5`Z@pklx9#Huru`DDoVXSEs^-}>2lwrTh#aZqxQcn_LckdmIS&h zLiswN6U7<=weI`=57++^DJ-*P#joA};T}xc(gnGAdlRGP!QokScnI%FxGLiEEdwK7 z(1C_0!LIhgByMR?^XOZXeE!707MVke;EKr+Tm>h)CCCZ@w2E%p3yI=S-2M#)gnZ@L8$8tpI;M z&g^Ev_7P;WpSMkXj(WqF04NVQwgk))sJ}XTY`F-dj45EgIvthKfd_;|YzmbK#im9_ zr8i4)*H}L_e<2{+`0(%7T}w*NuIq8x(tLLI4UJ@^@9w`Gp{+!qbw6F&GbEzl(eUta zr@#Jjth(n%wb;R)PWqfm=~H|)>#Hk|6~7IMhx#D8(UOtY&eg>Sx64D)K8dEgUJf;p z7@l7_pIpKk!X9QG*slI?{nD;nV+w2BbG|byYDqTvgw)#S>3h+3vE1*2xo{qBCqCCU zVY=+U(JgLGZlhS&f_oeCBlBTWFJof(X7vz_dEeV0k7Z_s$z_>?n%0eJyBabTc*}}#DQeDC!q!zZx@ffYdRoodeSd@pmgoG zkI0HI1P}hVA>Lv6bEfO#7D?=7b(d1}!EFzhU%SQPiVwz6Vj)>>US&0(o9X*vybx+jW!b0PsPS&aKEIEXtw zVb?X=X=k&(bz~&Tb?y!ZQJBx}mNl0i4S!s=g$j;IzK{`pq@sHpNxx4)bU@)V<=3Iu zEj0ODlCA7V_rvX=H>6zqSFnW8NrIF_Il=v9v|nuKFyoPtoJ4s+&S)8Nxpg;+j*RWG zw}P8&R(fZ%!AS;BQX^HBh{)}K15vUkcXg_7y8ZsFrJBCrwfqez>7ws`gwyw5Ssx8V zvE7e62rk{HZxZ}!(aJ>-{_4+U|-N#2;oNzEx0d(5e{?s}pHB@PQHsh@u*%cQ7 zz}Z3=;wEmiyU4Tn-{)P}Kka7Gx%Y3$OTHT#FB!Q%>}8F0CHx3Rp(5_jzN-@UUVBvs_jlpjUAW(DoEcR!^waM&D;2t3-w$6v_^2O)_%D{=3FRP(T|#S;&# zaw$p_tGmzHL{o-l>n|6A&`vd#+M69_5f)ZfW{6Lmt_GrOd?P|pP38^!aVcJU4peLl2Z(EV@9@K{uGg7P?B^!8(c=Ta zIs)&QJsQ_@TyvBuqh{}E`(C>r{1d{_#Q%UA)Pgi|ow%I0$?lqxC#XB>9-hqTF-^^H zi2iqP05HPliI-`nr|!%-W&a4b=vlw=L-y6(ehP=3m9nqb&2L<>gZVd|re^N8Asi1( zCo&FMBJLWE>z7-Ppo+&2+I0J{zR_@oX3=;Ge$i5|ANn@dE3aFc)WtIBh27NUdUKpI{I~)mR&L3Q zCNs4cGGQ9kUS=1c(fm^Ah0kD>{;z+#9SerB8L|DJi!ggGah;xRmC3Vde8K6t%I&@f zc866G)hD~#Jqd%a_ZJkF*Qfj0h0~~s4;zZ1E{nc#A0&_SD$$-Rb+S57GUQY(&3wKg z?*v#r@TJJ2#k?=D$@zUJ?3}QLyZ_Y=O85`YS!GXGt3o#>U$na)EL|Nts&NI+sgJbZ z9N69onmaHHGsfJ_zoi-w$*&F@SN~tQ0yg9-u;qnGmr=V|i5h&7=PILTXP-oojrG0* zP4X2LgBXYL6^jpze$cc1reP3h0vipG@Z)mVAR|EO?wI${kvAeOXz-m zC|_ratIlY!mFe;~y$kaf@t8FiDBI#451xzbxOw1-JGl4S*trjpO#CByAz|`6KAGy% zPBE!6k@&yhf7y3yVrRDszEOVnJ2T4<0Z+UH?z!e3zee%roJWEm!qcm4GL;f?rv{<{Nlq>HP28U!BKNF($B|>~|#aSY!gl<1R=>Po)T=$WO^9t|1mAn;>EYG_zF5Jbh z7jG|pmcA)VsDJ4sCmzWb;Dor43HClEwZL)m4EK-rlcDso@z@(VkQ%w!Sk9(@#FD7R z{C9TnubpEEreu%PM)29C9AIOI7~V`aT&La}lOP*8f@KYz{7n6$oF0Nw2a`)dv&&aZ z-p1Buk3eI7^I%)u%%Ak49(}&v{VKKa5#*!xuLmed+IU?aP)lJ1Yj5AcMo|S*;q{*tiI)i~=>iX3zwSBg?+WAiyZ5njV$ySG zGj+)c@8>}OI!G>#NFY4ii_Diial+b6Ml-qgm6CY(?Y=AUrWE&?gY;JoVU3&jal*I431XF{4TVtTMm}P{;AZemdD)jQi7yO2rxZgxS0H>c(52A%Wd%P6nUF+AJ_w!*hH3!Mg`s zMCN;JiO2q(7_s>6kHSACZ_mz@p)-|pD@&)z^g4X{ratEx>Pr{nZ6RSTuVjTFRpx)= zmmlihO@mdxMwXqMQg!WsFM>a;X}8}>r0Ffl9$W77@GI`|>yW|qxf?&@+-7**rS8(p z2m1Ka_o!vDUZ)=PIyRw{i`VY=6#T*ch0SqDXjuAOb2#3;E!XrpvgmtKl|tE1dv~~g zU4KoXiXW`|ULOBMbLwt=2;1OOtAd2{o~Tnbxe{*BV(wVrO5B{!B%vF8{bpJg^F@eB zr|bI)`94?#6j+b(Ds#II?C3v2<`1yA^Ep@ji=}~7&@>^z>b7e)fx&06c41cPYcqi@na~T#q(FoBS4fJnO|N3EU5)UHZ zU^z%-oD+;F^ufVcEROYBzodjNR(>V(0j}>#v3z`oK=f9n(@yO{@oFh$FH_~zX**n5 zRab@Zg{=PtteYv1Rx%0OaAbdJKgZkq6LQnRDNe^(HR9nJ{4P zsp#$wPpmxl*|IZOG#dv0op6&lHJuONTMj%+2fFDazSi2^W=BJttDxX73#!{`F)VB* zu2<E?lXg9>90*fPM%nW(vMfpxf=V8BvZChZqLps=)#bePed>1^Pb??oSiVB zGJQLQ^9}P-EJGDJ@9)Wb5;YhoicbH!-OIU!nT`o!=q4(AWv2$S3a=FsK%a%>BRMhU zJsHl=d!PFozKiw!D)q#>HUw7!PaJZ2XB>7p_8%6M3PeRAwX?Tzjw6moan_g2M%@0k zrX#^J1T`#6OHTioC z8E3CfVXr(F=EJaf_))r7)bg}r-PmKqw{}3{dC;M?&gBlzW0Wp?^IsfR63@C~eG4M1 z00?|?_XRI?=bIc7iT+H6YtFned%PBon|-E(Caa2Bw1>+Qs(VlM_cC$bo%K8Fk%*XK zxR~3fr_#+ozcowjOSHXbQji*!?sV+P@cS^^;D5enNcmxSjzNOr0*-(ow5w`(OwMQH zb`(BFu+Ld9+PxHi)i&}N$+ywK{!)!2=1^O#v;PTlSDU}_BScqmFk@o>cE9XU5!COs za8u+epJNY5Y2ER_KCbDDQJuaH9?=Ky-zVQORzFub;&vnaqo|OO!F(_%jeYL=Z;G6% zL(HdMv%~mG{s6JY{H2igl9=GhR_G&Ya}o(;F6s1dhWGf^4jePZ9DEWUn0??^M^wr} zO^TP~3N>Ax%ozN7s6Oz&^hv%N&O>4?#Fwc_cGN;Wvq4dr1b(M~ctWDgrzJS+tWJi7 z;6j}ZYW|^o2gB0-FdgI5-DL+5!8}1`<0s^}Ids<^QnNUFq$k&Hcc4hi0_#}-afHY< z_EDTSGyUIVl3*L?d_vZxm&aXeH_}D_akW*k$uF_J9HCH6k_(XZ{F^8 znb5u}jA&W*mB3hocVBb|xc2T5I5z6PbyfT7xXT_AMdMSvU(aRfhtNNY#kw7*Fnxtv>tR_@Cug60?Ts@kelOUP8HcRu{je{q>&MgG zd${TR=m3er5cFLY=Zo(qrdz$=^7e09a3HjEuF~8Gy`fwmC73Yy?asfoIW$&G_n4+t z(S>4PA6BrY?~HoWudmHQzL{Y3J$rrL+pQ8LV6VUjSGok?{v@tyk`IS+=vvfEUY8q?CKSvtG;%fBwAA+{lraHxrpe1N z;psNXC2oQZW&lz7C*&6RUlNKUq^LqM?!B<>Dc0_x3?=(KlI=GDq89eZtG^&E9G57H zEFa$K1>GA$M(HzpL#9!~ly`=ml z?9ME4NW3tiYTQiun3gBeZbU7O6X~j~e0tTwa1}8EGOGxaLSntGvAYKNRdAbLooYs+ z@Um=`!Cx-FRy_&Z$@Qefd&^A=GXkK4S^roe_}?vHpVKLlR8?uTpK>B94!S1eAfwbRyNdsSoe>K1=bP1T z#_rE@7igykMA`Whd&L|S>$XW)sUD9TwBWzU^>}Z=59w{c$m2JA{KQ(0hAA@4i}%(a^?=VkRgXbZ7$Hz1Y{HCzfC_1A&Ed^ zT${tY+MtdWqiA!b`=P8PJ6*OuDLENf)o>{(NCVyyDh@^3kA{pOFa;UN(qZWDlZFE# zaT?gZppE?~^A0A%N(dA#;7yPFftyl^-AuKfNmscu@_7;;3=H%{0B14zMLl@6zKLgu zWEDA;RkqNFzu=1{eoFjIV+@c#K?WndlB#{ecKs{BBWe*4VT%eWqh-L^dF$eFHso&@Zuj+e z1*=L4w6G_Pgv&%_0Du|Lm5cb2G|h}?l(^-js)A2<=MqDc*i45oTA`?*Rj6?l4s^Fm zCGl&-;z`f*Z8W2JpX>)_KFXa$%#iX04}Vg|ANgDn-&aN#K_#w|MtFio;Rcx2g~77Y z&`G+y6k$)b8k~bDR)})=N9O4Al7mrs#A$i4p(jn~hz-Tp&qCXcENiIvL?DGfCs&t$ z>$iM*$a_wokgge(Z~Ixoa6>3|;j^puWBy=wI4Q^jIdz;9c7T z)Coa70_^km!A&bK3(qif1o!(s(qY?TmXNpA3M!n(^-yQUm zLoJZplL|t`ljN~-qWTI4BdAEDue1W zURwF%)LTE8b z{UCspT0g&Q^u!)7pkaH0e;iS-haQkTCL}K#q^M+6i9sXD`Aj3F%#20yuT4porI}rC zFdJJiVgd!f*Pm|)FrfDpX$v91mk|pjZ0glTkP@=;L|XYav!&Lc@r%^D%(UjyzvD#z;r}cR?pevO9;hN7HQ4XUBjJJ`fC`zo@mOU z@jB8+7KPRs{6}iYEinM8IOLz+NVx+|{o)j@>rVtm&B2fxg;S)JZl9?d=`jC#fWymF)$lve+ zeI%oeVapB@5>rQZaS(UM%jn!AJh^F`o&PI%ciHT4ZzxSH_kFFez9n89ld zh62cES+bFM43)5LV3P%f&`>6qvbAd(yeS=rMnaWkPG=~d^d}{>9+MIWt|~d`78a_o zI!uv7Cvs$4t3l+jJ?n|+o?>G47t%$RlT4%JH6NGRmO5UmMVBk<#!y$;p|k5tYdmMe zD~cvU1wI0bJOgxS4a_r^9J+V|P!)2aRgGviGt53OttZSX)%liGvUth9FofRW5VXdZ z^%&`^nWTK-){0cB46O*vN}Ptw#rw<*RwT7?l~R!4S?AIlOA6bB3bjDOhGzP?-)Tgd zn;4U{`p{OT`hB}x;?{clXVm((iP_17Hx6XF`b*DjN)ZOOUJM|@0?MD$b8x6g`A-#b zjlb5M*D{0UIwOrAl7Seeqd4M4liuafHW{r#YsM%A6Sxa>;Rt!++OqEZwuyR1j~$j< zyKXm_uas7?#*}3T#XbuO&6iJ*G+>h|effr(3}R`duVZ90lt@uK75+{S`oyq#ODdLF z?rDBfd}UgpU3d`@Zw;Rc*C+HzNo$*=>}SoTh>_)PYqq^p@oPam+n;Tq1W)BiTO(0J z7*|p2^QN5$XpxL`lq<=!JkJCv@c3yqQ8e39R&`^Y$kx&uPrIakaTSY0WlZX?K7Ntj}c*ea{~082rJnHg`&r10U92`vTTk)cQMFijdL$~0MwgB?z@ zE)ZG%JR*S3jBjpWm-I}tuSrEwoF~6x{QLUsD0_;sx&=X_G(!{le0%_=wQ~UiG*4Rn z85zs1tcwmig>`E@BcI_n^MUo;QrUj-*DSAB1BgS5`JV;w2Qd2kPW=$Q9MD zeV%;To6lM5BlLr(z(?{YMyF9rNuk`&vDv_Uo`O*M;I#yZ5TAY;K6WHoQ|Pz`8%i!?1CfUMEG6cExhRQ#p2O-$6%*zaf%Mz4Veq^jgW9On~!jVJBN$;o5E_bPvZ z{>=dYe%lVG{cwJf;6wSpG-mrc<--<1+dGhD|Gi#x9r?g<%R05-*dD`KiytOEzIh;c ziuU3uX0vo)6lYs_sgWT_jb{`UZES2#*nyZnFgYus5y9_5eii&t?;W4iB`gFB4V&y^ zKSQdldQYO5&>XFxyW0{I%goNB&Cyn#b4ojFn_t^aCkTu&K|HT=nckA<-x9 zYSbi{%bU@7ygy24t)az22OTF+jevUt6cpe|TAkGA1Q7K&&jmW@VBL4t6UEpwwKSbU zQr&|IWFP&CLl2^3bA@U9zVsNUh&nI0r~;v_6Sk@TZ`8<^8}{o_Zj3!U}pJKUD^w+aS!d%UrT94@;$g-@)F z4WEwvCH(I7(sf-$&oH=vCK#(62dOe-cNlUoQ$r={re%QMbTVqU*f_3mWAsIik@X2? zE%~3>Z^a6j^rQ&v=anXvWtHC{S}D$+v7^dujU;1jMEe?a%*Fi1VV#I?RrVAto@Kq5 zQ`1c4H)i^IY8dh!!Cv>FC6Ifjn*kYcYrvwTEYko5M<(;cYxn4}F#< z>QNn&bW3n!M-kM1@tnqIVG#+LxMUVJK`#9qXl4878DKza@Q0nnYe4<5nDgn9S@2b zK=Wtb5XxUyaK(`RH+8YA-TU+EnN-^_(v`TMW$UA8W}sEQznb&c6_Kps zLrZIr{oC)%)z{*U_#BvAO$NSA&OfN!7s2}QZ4}MzR8b-J(6xP2l=}N_j9ujM}jSoY7p5{z69`h?265|uBot3cm?uJ3Fw_NYlk-Sg`u8<)yB^WFh8uKVBm zFE${>bJ{CGLg5ker%=|7yX?P6y9R*#X$|!+XSkc$n^ry4|v^E zQy)?u#*{C({D}^O5|V7}TmXu=*G)y1BJZYQWQ$mtR4^obL2=5$jB~fJz?uFxF)*eD zzRaSvQi0qn3L=KYI1$T{X;Nx>UM^%Vs~&Xl)>8-&DoJ*u#_)(F$jE-U{dXfe-&~IM zaN}2b8-xZ8A1|s*yG?4!TS&h?*$U&YHOE(K{RIxvwHN%aKJpv=H`U-6t$rg~ZC{U3 zD~v_+CPyQ*n-d?#+M7RUJCI*dCa@x0u5_BmHI>-R#$t(TCAU$o3L&eiWM6K!m|=^E zK|n$sjRMliGH6eY%rVSHh9Ch(T9Q<0TTx^(>Tf*u7Y)aJY7OB7N;RtLjhy(Z{*_p^ znsJ`b6V|WO?SRqs>qoApy-~El3i50au~1|1W=9yx*OZhL%L%B0)almom{=eEDDfBg zUu>^Jrj-Wct8dx%+0IJ+S$XU_a;&rmO*7UB`I zP-)HfzI%kg_oygOA;-thSYcBJVet&q+d4{SU{}WAuu?Ru`gu8#f;{@UQ3mP69WW#goa?tnG#+XrYv*Vh+SHJtvTO^qOo6| zV{zDu{`P~qmNV(e1m2cu>(0k8y{RJuiSf6&^n%m~O=%xuZ};)EE*D%3<-=}&M*mL( z*Z`|3?rJQ~uW$$f>*tW*N+pIq)gr#77X#%qsziBdA`x34D-X*~MIme++Y!@5rll-|?69s`+6a6U6+h16Qikc76* zo-_ety~Qmio1een!|oV-BHnxU;zbC@7x{wUCZ^5f`sT>TzO}SgJ>&&h`Cahf!{0#? z&QHHly-ZzoUBmhN0!}=*(IR3=(AR2#9PPZD&5+6?E=AM^MjjQB+~(-CV&zo<5p5crs!C#`>QM>(ooS9@!e_+}WGQ|yO8 z5*fG1FJW)Z<*D@Rk`XZ$rJe?gFgK`Y2n^AebT>}Ej)Clv3t%pAkmh%5=L`FWs9{b| z$mY4BxwI(^*GTRqqR&wUUK>bR69N}o92>PS1>~C|3a0F!p{fJvveHkJ?DyrrT*FQ= zLos-zGm|}75>2EnH%dle)*8uL+3%%r7)xEm{ChdPSKRovr+b1rck$T{)7Ui)&@EN~}jFrbrFc`_{O1h`@<;g433`mq0} z)eN{|&VUe4nDNpKvDItS4sZ?$L6@2I_*WcN&4{R3Ka`=6SwA1FVh7y#M@!$kXHf&W zPm~c8yRw^dmma16@Y7Du8cwfS<)J;x37}0bZbah@5atQW`8Lu9phNiwlquOf7MNxj zGy$1_+;0$b4hj)abWD@TgaETGwKPMc#|`^P)8`AcsBYUX2lWjtvUaWX#;x?X>n_)g zVbJ5=88Oqm1l?L34td&qRBW=O12U{LI9r#V%6x&i#428U_+k;~8ol83(vD;BVpH z$VuKYJb6ri;eGF(5&QiGY6n`11+R*=9ajY|motT3XE&3Ql2*wnmtO1m02;?>IHl!A zWb?7HA&alznu^UrbJakF<9z64i54GuZu8P4eLk;=ZEKQXJ7nY~g99YAXPzg>p!?Y} z5V;(!2__|`r$`K40m=bDD#eTo=#&o$C~Y`y0~aC-2m=g$hqI_uN*~CRHO{{^H^hlS zSd5jvrlS%p65K$#MDgmAb14!6FPZA;=2#H<-1?OBu1*@aQL9T)NB9d(lZ)cQxu_F!>! zNE+A@8kiD>)M7zx-pj6xy><;}A;8fPQYeZc7#4=wrzjj3rJ9h5;Og6@-V}l1$g#h1 zTmVrp;awKf8rI1BJSWL{_(?08VZu7xJj4-b)=Q3Pv=FiBDY~wXmL&WDrN`uX;t(Q3)GA7z#Qs%=iS$0~0}PEwNq+u2(5ioQ z9{}ataF!?uSe5iQ)GotLtQ50AQzUXX=Xr=a;OiNNq;-iM_x|=M&VSYD z&q9OOTj1JTR8+Jm6s>P)_$BGP;4XpV#%!?X8CXHR3?J!sYOG;Yi63I648#p=OH?!D zFUJQ=tw&!KBTJ4)Bu`Fr&fMDSUwEOrkJGS{yx2>*9F@U_yBgIVs2~MTN z|Kc%o{GTakY~uIFTl_!MP70==$Bg5Df8+TNZ(Bla0NU-tyCX$2NL~e$VBD5m;&<8c zB#}{d+=*G2#3;`L4`T9R)R9}2F6EtDQii zj-XsJ#T#{SNGerL}Hzo1sKls&v4|YIdvR4L4|Ud}D*D_nNq>P?k;xb0>@7ClKyX%mlnGd@jU+_p7Lj20$s9 zbOubr^zgaTL0Oh7++u+5^che}3;McvM;CF%oHtfMNLN?~BCd&FwYy*HO5@x7$fa+I z^ZU}s`0_nnd7h(;5tW$NN6_Ojq)Xr55&3G|YDHCjtGajn{c&Ey_Z&J$87 z1!F+cB=jli=NY1h$U+4w-;Y2B82fA8=6uu6SnD(}&>HK2JWy+a$zs&5D4Ls+i|XI2 zEpRL*Fl4m_U{FC7>52ir=MpmHPZ>THbI-Fue{{VD+|PjWwS+Bq!K{h$q+oh23o_;K%YH6_RMo43&jIqd^|3Y`SEa!v#)-@HuySZx-i!|u|- zW1KGr@$ILJFD&Ks3qkXw)pTu|(mL6T8sZ%3 ze8!fg$_R+IAAzYO>yt@_kg8f8)q;1n3=pNe+G3X~g<_;Pbmrf?(mc?Zl}CW>4{G4iv!=eAR{c@_(jlRmkcePT zYbgKBWXhqh(Cl&|Mvs~Y{Vk>^;;3F1l~(jmvL%=rUh}jCTSH+-I%8!(d{t$d{E9td zd77)N1`kD(hE8cRP2F}of1tP-+_?h=C;pUVSSAVa!W*EkG^yC)D^$K3-F-^I!pPf! z1uLG?FvlEJ4Vuk#Ny0a)3fo7>(+<=j>U-)P$O2pVu0oS!mmb!tgu$TT7SiVQj6t&} zkZk?c*b}Lw&y*^J*QNPu_{BF$gr!yNcuV4DGI)gX(9iBe;+nmUBni@9Al+NiGZ?Iu zw;7|LUeacd9&(T!?@Ai+AE)Luh5RNGpuy7d+>oBnGAGCt){;K6Mx+YJv@Pv$%XH@Z z5uB_WS#tcVZC=wI zCW|#}aR4=(nSnRPLX*hS%!TDW^BdJ5Be+sKW*A$kPEn-l$~etZri+bQ+gSWK#xvbW zw;!xLTWoTzbDzJ^rMO__LLv0HM)4X?*Elj)byLeq#6H%VjllX`VEcTik(#=QuW z`35r#C;7Tkb(y5313qHl{?Z{@+r~%VDo!Y1AMbC%>mLYbVgL2AcUAdV(2Zg;xHW7y zqWNQryRO#1-lwc~wXLJ(}S^2DhOiIvo|W_8`T)CHqd?URIPKS(9MB0osIG>|m*@N?Hs7 zWb?UjXI*aCTQObC7-;?&jhx|ICH&et<(0`?a>FV`PuMYLC>`D3zSpJ4!`Mq0XVMu@ zSmx?ULoh0;2ehH@iscQmEAoSrGbrKa;cIG5;g3;}g?Q*)GyUvS>xOLA;z--|dPq!} z;Y1@OUecJC4}(@!n^zyEL{narMeGpCluIagvL{;*sfDkagq0qZY$siaWKaW1pePD+ znM7ttCL&ehv60jK!eHu%z>EqO0->agwh8LwKpXz}xvjvN z&s~5bSPHJeR{Md8T^ah>M+Bd^0p7ga4}GpN_N>1!Ahej>@Xc=$+y^ua4GJTE+JAr_;^4)YMyNwK&G0lWm}52;g0qTE5%jS zbvQp^@)&H|t)cG{`5Rd>^SlHUb$AofvPicB8FPny{K# z9vInvFKx?*OA~RvBE;Ik94a?DFzmospylA>GXCe(C=<>ARQbf+T-(!&>Iv_y8mOrO+Jlv+xY zSBa=&CU_4FxEtK4GP8MaMe5F|-1_SVOj+R4&97nge{Dm?kkU zOc%9lvOW>7MdAs2k^c!!Qy{2}MtmnRuMFu8pxD13V`T+|UBE|P$jkVB6?VE&veJZwTY%rPsszwX0{k$+_ za)R(2>(2I+9!RF{y+DHoFQdE6$*d^5a8S1t#k~N;M6-&~7cGE#XvwJ*jPlqq?54Ds z7@EIG(w_N&JU7xKA9$n1^_s3PTNEQn`2)|6cIOA*fvLE3mX2(@SeWFQR;$D#E_uP8wEvT=HV zbum~vj`x-`4)+4iDzS2$FQT0j05=xusoE9!&5PvRfBqnUJ&a`Xy6V<9GE&PNUezL^ zhMC4k-M)*mG}1_!FE67t9FIV2b4a~v8t{?>er&Kykb}HJ=j`|(gL|r6`QmRHROY*h zJR#p7H#dH|U<;&XSwDQh3s{a{joO8^r@j^6p}A);964JquKjsP9aK<3$$vqV0nv$g z`$E2$WUTnDHs!k@x9a|T3Udg*B2eK{d1xonNW80hKOxfaM9pvHGR`F z16H>Fzs5B7I@)))Xu3RID5 zZZV%;A)6E5*q73f+}F^)FU41RgpUk8JqCxPAIJQBgp|t^TchCay9`EJl zkO|agH?N@VyL}>@S71f9;CWO~Vm4W=8sP3Er@ALJJCs1H%=Q`+*O^ZdG6APKZvST2 z`77k2CdWBTI6`Sx$quk450AmwhW-w2P&-f6yzQT$}{lp#e<(8YO902%Prn7#uq+l=@7VpN9&IiKT)i(-8A|>UJFs?gPr8faD)sK{= z8o$z;ydRW5)S3^fUrHZ=#PACdbjV^#_^fM9T5?XE3WYF{k=8cP4+#hloc|JV#VZt!+@N~ogJ2D!jLGbZm}Y(i zS_aRopSAhOy<`Jhhj(3qo3xeZqrb+&&E6#&omnDg%3z|(q6m@D>2~GyX2hFDAO+qd zYkM*O`J%ir=3u3*498TO*W*BwR4Y@hy;^Zm=H3k;Dy{J8W9gZ-8D)sk67Tf&3g5-T zekpXG(?&owco*J5?Do*-=Jnn-g~qE*Q}@40#o1UY-4270YvW(pFIcvpt-f}xdLo@t zX~7H2n-Vwvywqb_p#s~sDCXVCgBVodZD_KXdM%*lCfwt~d~ubJ*z#8{ff^o?9K;=& ztCb$!H_wwp_5|bG5}2>Xe78>Tq=vg}0?05&!W09buubZBPqXgjgfIUFm4NQ2RJfg@8ZYKRRz=TtWp0Hy zw{uC-UGVX8kAsqzK5|PZ&yj&u{@4;x;Dn@^g^`r(W-m+(z18Ue9G_~ zNF!?R4P!EwIEyo<0Pih{o67mL@>!8f;QwlN1}GFI@lp%l=rzjY zW?YWS`H{S#fBTr_MiO0qUtY%lBVhex^JB=`l)9tBf>tgDmiOQ!u9lEu%Iz`rs? zE_8lt-(VxmRboJ~KzdgrO2Wz(5|XPVaqV-Wy}%I_`A)?rXw>5s`-Q{x=NQvpTJrsC zY3#C!<2OlsEmJyn>wW@CwH8-Ed*K${JiAkX*(f)$gzqaIfOln^WU0=v2g+^xCTYw+ zJX$dB$G)gxEC^2*W+hoBg|0pL(|`L zJ$%rE?0DV#W+zP4#QG(=y`POH5tn_--k+T$Xs&^bPP5?xhNv1D(L2)4T*?o2M$O3o@fnswurt?d#aY0ryn?NoPxs~09s=b14TOt;u z1r;!8!7$d9y@mq(d~LsK&3+D$3M`~RJ*i7ByJ{LPcIX59mA(JDl+uv>`3+SobgUTYOlV+-aj zsLUHNG~diEhdhf~fGkNbn1q_MdN3Dp>P&Q{Ys$S~9O2JIxqiZ-!ufK)dRc$ z6Xz2po+X^BAFncjPK(MO@-m{NGPy$Ua(`Fh2){&6xw8j|2( z#f~X;h_U6UQ-;mw>W+A+gg-0EnH1Hu@#$<;p$^kn)MWEDbz`2@ zwql*Wl*{iZW;~{=GL|bEH@Qi0c1>rh9}u|E0XD#%L=S>w7-tF8+-^WX*-`eGQMrTD zD4eyZhTjonYBTD^GAlDjvLg*QCw@Fy(5kal3?jAo=Gb3I|Xx*iTa!+TgkbeZjYmhS{qm3+lAyxtagILg}QQC;feaX zu)q*cmLYA__qDLO8_j9ugb$&j_L>Pnyu|g1L2*3BX#^G<2|=#6Yl1%lcQ0qNJbuDu zYA1LVLX3RUy6r#|XK%p`edbBu(`+y1B$aeH^}VRFlB|&2Z-h;GpPz&1T^SZH4 ziH@qXSMtvHxQ=@7I@=)mfMy}JrK~2-$NYFGbe!S&Tm{q%Z;@;O6rIL z0U+n2r$e1kV#sQY{#80(Nt63jVmY>s#Fh!Y1rml@7;rQtk}p}95U8fKjc$|`YmGR( zCn8&jA%hs}B=rlv_@wJ#Rh&Fg*yaOwRJ3%lkylLI3V}&<_eW?`nY=Z?IZ$1yXl_|S z6m*y8)(>00F4Yg+r6A*=s&ApGDWpoVSy(TXo@DiG6-KWkxk?q#EEo<11&iUpIypwP z{$(o1E_6bSa;%`zOwOK~L$M@vz>BP;bg!Xt&Q-Bm1Uk*^g2*_@(QYv?8>Ixgpe`#-Q z*SE2EV)9gBQJURKPk|fjUz|{kXTqmWw`mSED#X(tGNw;r$qJq+HeN`!gM?dKBWqX@E80rU=EeJfe*QR~*P zi$c#ou2tj^o$0^j@CLQi0BB#n8X?!_d+_naJ#Pde4H8{28JhrThQ*@}^2}3*+0iAj z(^5-8T{A)DasDWNGQZ!5oVRkk`n;zcI^d%#|<5Vds%*G}l|dx@_z8 z3LL|C4Y+T0&45$}LZ#ZxbDIs|fWYwYBExvs@=)=T?}BhUpg`JB@2QwtdIP!>*oj6t z&%HV38{(~Yoo>MG1NOEdpl=*$bj!XL_LupQ)h# zvy^2LB!`(`vxTolRak6SaAV~>6|;8#aWSHl*Vn^sK{0yU-5xNIF9z2MfAt$NdUb_? zuFLR4qLeH6&1D|`Iuwqj9km0lDycLD^{p(Y{2S>}E4LosCVv&C_vy5hEuian1DubC z0a)ALG+8O{H7i~KCrFt}xF4VmLWkqs|D(!I0-5j1;Dm?JXOJTekukFj&aDEOL8+ zCnfgx8I%6#c~+ao-_zOo3v?PMZ%B>sc8Mzfn5L6e_nhBbq8ez@```=(*_6ZJ2k%`z zyj4N+Tc+;~31(OF3;>+#Ly_MKC2T=;$0r~a`t|z9u=iM;$PRBfC;^wRud88Ou*;+= zuNjT9ewZiasr}r)r^79{1sHp!NiL@~ zTt{-*4xozoifo@xVQY95qQ$59r5(B_UOnC7-?{|i3crQ81CEC7!`(95 zh&RKAWom*;Qe5OspO9!3o^>QzM@L~uELTzp+9zhE)?K;JdFDrk{puJ68V+uiee%Bz zq4^BVUl$i>j%c%VK0do6^Fb-kI?ziU^ec9KXI7hL$TNvFrJ<$7C{W_3KxYB>dLz?m zvSzJ$g>Cv_O;ST0h-eOC17s#+CAIqwF3%;*qng2#Hy1;*P3dTStob zf-v1(juH_nel6C`d4mhEu`8m9PXZqB1dV=a|vuT^(I-%A!Vkuhv63Qy5ARimLLUfoI{W1%l% z%^rjl&m@PlCPPLQcdZ3X1w;tdS>&f)( zv_e#C_PTa$EQ~ZH6}kBIYttb=D&J8HS90=4po$ziMYOFJtO|ox1Z{n#JLek==8y0f z1Q!JoW0MT4^%GZ+4Pw-5El{7hVytXo;k6|^%sMfG!bPf3ho@9g1e4z2wD?%oh^k4>Vu#|MKs<*-EUxLUv$9a-v zC$QD}k0FK<`3+7{pyOoen5s1!9C|}I=<*Qr_I?Sw6a=JTd|GSc-k^e2?faVx z8#n>KXUTTjTYF9TAVQqDuShy>VSGy$&c3-MnC_uicbFH6a>@1{p-xz@^m4IxEUHPz zRqrX;r4x$91ETQ0)tMH;R~p+&*)E)=gTx55!bQK^Y^Ak@Bf5x3UUm~xrH^lW=+cmy zOGxr0$2;NqHPUQ@7?<1GZUkm_|G?Ua%T$bdYCfwmUpHqF+LyGZN@N|)=I(Cte7(>U zPbJ}3L8Ev-JSk+xS|c$XYFxW*G!mFYC0_N(wNI6)fL5wiZ^q_v7}`Qsn_0$Ay}K^g z9-941ztR<$PQ^@?Bt@3k+qQRmGmmyA9J{ZhGpRl}EqN}7H0l*6FX24&&k}HCCXtDj zt46moMaZ>D2@kg2F?`F@OU*|Qy2~ddZyz;T?)8-GI^RQ)+OLMukCI1mWoHaI7!iE9 z_z8?FZBX$GDhWsPM5tuV8=nnLXCA|NF?%82M)>g-YxS8N}eVF$8YHhCaob zaHY$8SR5798U^a~BkJV2qHKNGniK6?iGnoUcJ6D#Jjpm^ht|WcPQdDv50O;iTIiCA zOwJlDYG*k~nMp2rolnBQspA%scuYhJ#Y|XoHMyBalumWM5<3K_f**)vJuG|-LJfde zNeR(pe-G5;2M8 z&W;w%LSq2rRXqL~cz;G@hELqU3n8B)zmEPkz2~|y9Fw2n z4>_|8c*R^A~%OQux+B} zOTL*pqFwl-i)&GbBjSf4mrCk%|L%VKxNrWD5b9Fso>%#;Kc@&d!`Lh6*idP!O%P-~ z2H1Q)h;y@rYH-abCU_*PUX@uTyGWLKH;A|-2#nQ<+gXRw+iy#{WPJ!RAkDXr?LBaa zIenWp#*FPW(D!d)jr$1nU6Vk(S2{T{2C(=LD;4V#Bz4kr63M4h$@XAs%~%KhbkBx# z-EJ(_&u7u5#e+2w)HkD~*oyOX=nn+_K$yY__iNVmveR6$buHhp_QjaMogC3~wAv@} z{S-()(3__+NnwEY%Qn+^O^%58Y5#jDti|tEhTq{`0MGar3EEf`FJ|Wb)VyTwzH@OZ z%-%pOp(poy0(m8MMP#|PF3qp(eaf4p6tw1YaExNQ>(8-aPI5+Ray$F{AtRu8tqb(; z9yPr~JCDBy`dn*QN$Vqj9^B72kKK8eNXxRZ45{b#^ES=n&?to@Q({)xZ@KQx=Lm%jqRWh$BV$>DL{ zzP@6+0hG%8OmlpwDt&{kmwBrn`g|Sk2UR3u;*nT$nDueNV5Y+j_C_RgKjkhx+G5pn zO)a%~m;Ih@yd%Oj<(bUG^0MrhN~4B0aZJQTuB4I1Pa~JcxPylT$oCE!s5CA;PEPE( zuA#yvX=h%|ewIme;T@x~4lR#P?JhLfgV8hh=tWs*HHAvrhsNT_W}$4-VDtq*Ik@Wy>@!&nuHx+;sYYPl)h4^DAg|M--A+PoSH0g45%{(S*J^1>nGO3r~1vDWn%H$rYsi z40W0trh_bG6x_-BMK0pLFxrI@nCrmZy*xgg&ROt@LV@P5$3dLtLClk$a`$wY?~)A) zSZ*)QT%hm#)Ed2LNEJ9K5+Nkv*Uqff+4Q|*XiEDdff?hQL~Um`F{mKeWwMiA9gC)$ z;&^SJ$0<;utzZPgG_RjW3DJXvlfu?3M6cyn-2sRUK)`>d9X24#x+$y>;MNP4OKLmE zvy)KM;}4I%3$&V9kD_j=y)#6A|O;Wcbx~7sF!6hWpkIbk4|0y`6EH1 z>XEQ!fhGWJECeB$^gHgp`(`Jg>&V6}arlSbaCAQ|j?>uK7${O_zMv{PX&&%;1I@EH zbMw}crI}~7ZJUE<728F9jK<9!<5`*-TKVnnv*A?evC8p21iiINBw#R5U-eU)Dog$? zx^@XR2U>CJHBUm$dlhCBe`~wwHaDJ&$FbR9*iyB(_)*&)#bdgWzzM+oc9QwFf~Ug~ z9fRswS+~PksD#Sng3^C}8oc`j`B+5eLulb{nf7ejvLc4U{_gv#SD)7hpOOQJ4o`0d1b6x*!YJKuYZWRW%@kNvb;Yl1NXL1fM8M=2)gbahvE zBTvtTMti}H4}qHBy}Rx@S}&>pwy;8LlC&s_rRw#uiBoC#S_=BRFyH-Uaa$ZQbU5l- zEgNo~1QTu(NOZo(Fq21t4d{1B>=V40DEYD3p}P`~n;XBODPfcctDPlDA~SMGREJwP z&M|h1ltfG}7~nOdEJTf0X=n}8rCRV*XpTC4m8606S~z7Q^%x1D@O4XhELX3IN*%^lbFwmHqzr)M~*xRT@5XB z9fQwAUCzjvWEBatwquvAbY!BL+qytPkuizKymrrav+TCKI3hg}URoHXa0x)slYV+| zSeggwP8+-LDa9_hGbO@cCH^xmL@}Z;9>PRioP^PZbWd8VT`47`m{HWKm=G7qh^tDI zGJhNy9V6VNaeOqYMcLFsulL{%S#Rg zh-X$A79wg)dTV%TyTO{sWq9IsIk;^E(ZyJgOQUCQ7)_vCDhe~|U0@PJ=80?&pGWK! zWgRK_iEWWwyek#p;Y-MFa8CEtL*wp`JaTGvYB!o>GqbQu=!qll>An(TE$t)DU07kc#4)9dp>=Gv2nCAezbd|Uj+tDW@4k36=;Gn!t+OUy79 zDg0Pu6>KEuG?>;xD>Lnmkii4`F==0VVbx`Z;Rx#QGIN&OSn%ewggh%-vFK34T(s}f z5&EQ6`Qo60sOxB8lWe%oy7|j6Ax#~GelMyW+QGKi#Hv6o;TPtIu_OY|455H*h><|` z2>(qZ7G~IVvY9TH4!6gT9*|k2{!Y>=uuf9rk(>ZE631hwtSl^C1G9QC^-}P8SzerK zYK!lLVu6WWQk#nIFci%^Rp%pdYi?b4K#aenE=7Dk#!|n(MinI=<5T0I@PuED?mMb~ zK2V~>W?qspioEV4vpL%TPK!0Au)+0CYo=8Vyib-mFNgdBQ$5^nQ@9fL-(6eblpY}1 ztFD!vZb-p?P|Mhgm#t&3Eaxv8LDW$+%?o2we5M)4tV~96xb)sHi9Y_!2dC)@hU!Z^ z+TEUc%^C6Hr$?=p9=PZSrvCMZN$ahK-Aq&WKSJ_;ZeOIg*TdIg!OyWWHr*WQ65aaf zoNBZ(ccKjIcxk*5Ca+4|8`j(MEbY5sV-Uel`%+T2+{&Gi@dWYaHWx!vQ&g7*IlxP- zr!J9k?UcJycIgvuj^!3rEyF*@)XcoMq@K`gIf|E+P`ob&nXs~9Mxfok(c$nP0<56D zA-Xe3yQ}|H=}VVP=635lJ8N=SQ6NK#GvLIhX@a%Ir~`jcWhVmr)pXtJLgcFV4$F&Z zZu&;`d0QUkU=`l->`zKstp``j2uLl!n*Q3VlpS_({rs}Hd2^@^mf(OGn%87EmsH`6 zQD|CEYM%U;N4Qs}AFC1ts?54&JJ=D}z2q^2Kh(O@=!_gVSy!F~dt6-b?@&R<$8tYU zecn9|QkjS(nsY_z=g?Zy@D7v`kdI@Ru3X%gPgZJ}Vt~_O1hSl;jq8E+WAT0-7R_@FxU)LRz3$12!bUrg*V0 zx7gkV6f~)j#@S9SkmwsfY?&s0AQkxM*XikNn-5E(ufp~xSAEuAo@%cO`rnBL&I+;m z8=!NA`871)57#MD4iGRVkEgl+)a`<2y8mH|0i7Y;2Uuw4)0G$`f1l;%)yhE3(%Hxo z)OUtj>^$}CKR$tH^xstQzsZIFw=3h^FaR~Sw||k&DzVQ#U6I2KXo1$k$IA?zLQ-j$ z?3b8+_x_e6`JE(;p%qdE__S!6YIbPm=07J%r%9=TFL+j|M(l&>0Hmr>4{k0jER1Ea zU%mDFI|6IT3do2T0Ng(L`VMIIr-Ym3JAv)sdjO(00VFrfD)%jGSAN;4&7tR3l0@L$ zdxO@`T_z5}DBhC)i9@RsbTxhe(zL*rhkqZx{7`Y-1yEFFb5|EGfdDuEm`@Pd=KzYP zasq(3GF|=4c+DRD8j&6SVqkk%?R3wt!zoiVY7GoUpB{pw3T8fekBK;9(qwvGJoWTb zX;J9PGg@(Raj+!lZi4-miC58YsqOx2E)^Y9WrZcc-#>V+A8OdfG%@FF+J`~oad`_LglxS67(<&9>UuAjbC`dO2Oi%WKzk&)4=BT%UQ1i=^g zyr$o-uC&<7%mgE9R2o`aX?aWMemGy&xKH#7_;(N%L?YV}=JCSK+32e2FV}?C(`!)= z;;~sC1=j*h6L_+sj`!2%fgeuwzYgRYv;~g&y#mG8^XYDgIa?o?mKtq<{4Dp;ybm}P zYYlSfVLp}J1LfnX^jr$5=~kk8E>>@Z-(Ox9`Q~u$xe#>y?zS*->XhioT^N%y<4GyxezCGAPK15`mI3E_ zQmdpME|9iFBj05>_+UT?Tc`3K5CXdOZm}ti#J*SVujcNXd8L&4OkCa){%VBlp8=nY z`mR&{$>u1q4+F%dw^2renu z0LV1~GzJD>`_905FC%jmWa)v8{hFs1m}EkG`qsw^l4tbX|h`gXy;{;ZCxuYh=s)?zO}l*Ifw{ot!TAEpC* z$bh170IhR(Bmghok39pY22qiQWY5@R< zm;TeQ><>@$qC!9|aZG^%O6e6~%-ro1BLwz+!MYbRt@wO3cl(Ge%e{$Xy{-lT29st@ zdO0H`VSBa@&#WCn(;&{;Vh?|9%jD%As|_%s@widIw7`ukLq@0*e;)0Ig2swAyUyEg z4crqSzqllmS_cp8Hh{jl6gTiL?#ag)S)H3h|9-vj_u7+GrXtq0#Ps(MT(Q^QT>#C= zm#LjE1L~nbf};X(KgrTH(w5}hmEkM)c_!%OD1aeMp+^QaHG(aw21z1m95=y58v%eK z;NV2)7rhLA=*)dpQ=&`-7yq8?_4{gU4V@g-=nv3Ov`WjUlKcp7qUfiG?EQH7SFKHRRnbz6Cv2K| zLPl1@@pAz-LbUIA&A;;+;-y8_M5h)$Ps#9u0w-0ilb)6zy!Gx??R`rGv{#=T<*5kunw=;X zI4k+fD8XWHF(FTo-?v=uR=C)TucN%gOb*Sh2#vLKtP>^L453fGK28C>K~I3S-B3 zNQJLFX`s(arOV~glhe~N1AQyi)Qe*60{9?v&Eq?N7yXwD?Wh7tj1&|IzBz*UbY)64 z|Fphnn`k$ck0fwCI=!8CS{l-1Tu5DS00%YVJ}g&rpt;~)`zsxxCiUdnU9d2@d;s-T zr3$@9NrT>=zA;_lrmz>39bYW%P}_cbWJ-}sI3j+!2{)u(gAzpiu5(6UoG_&O%#U~3 z6oyUs5;9s7$cCA~)!`a$B~%Z)Qij>^Pd4dti=|JRM`-h#wA))en2R9pK=eikUPYS| zAM@a)N7qEm7JR6FP6T;{rs|@S522=SiG?jJ+$q-*OGM%LN^wa~g>2Werq5ieN%N43 z0OsKl^bN_$L@Tm)vezwq7z}66lE+k-d!dlz^HOZ;Lx=7{ZS7m=yf9uQx^Z zFpplNv|r$PEqf210fK_9k*&H2I!tq_^|X9fU3P86P4SG8bfba*xU$!+5m(k_1Afgx zpZd-sN<1q!O`75znluOE7vjtGFA>r9Uhr$~uIAPK^b?E=PxyZlhNunnH@Rnxs@fJ+9Xjp^_^=aMXCZL#Dc zC7maR)uPfNXGspV;GOcXU%Uu!FDWq*qduzPBuj%LQni^}2 z^q11hFG4fq>za0(WG60f((%o36OeaogSghPiezrv=}d=vhK4h`d8|dW1L*>sNTLM) zea-NGpj+c@{2zCKnutkp2ax&~;i6^CS18^B9kCs15-9Jr2_RnO-YF+g3l=7pDxR0A z^(EiJgzPmpcKw+*ij0f|B7G{$`@oM32E{GEPN#>lYR^AZ-pp>{Td_UqUNn6tK9}oj z8nvgle6Fb|(EB{00)j*voMO#~BQ=pY)o*{va-$T0SykpqAp3~7|!HDkgBuynUC;BQ`} zaKmN5@P?OtWXnydyE=CzeR&>~? zvTeH);$)2d>Q>a>-#3TofS3rf z#Kv=9x_^s##+7`=m+O^s=zA#K@=C9H*|$Q*isbiZ%x zOp(S^9|S45IuTdMr>{{7cZBU)s9xKhW3EI9w)ee-wBO(lnr+}@pfzj5vQ!ojT?E6r z16t?`3Fju$ec83Uq773PH&~ot1M`qzZx)6bi`7Zax&J zrdFG*K5_{Y)PM%+b;GMGqpE`k50tpZQaG!Hn=$^@Z@4**Z=EpkH3bK6#WS6m z%JBI7w0hkeH=qiX7IjVL-C*rZx0x(^tdlIbZ`?x_+#M~W*V4HuLU=&HWSxqUsj+E1NBMhq+|jAcB$xZOUhd z5E|L%Oy;%L3+Hn3lgPIaVsUeWkVN+)yS(3g)*-r2BxwbU#G+rbEjVouCx`smzMf0LKD@jn;+-s7Ok-^49U+(}>|hBXsMxuwT=L`L>o#3Aj5*L#&3 z*1{l=dum-VQvL!G?Ze0O?N%>SL4eb>p4!_aXTsJUnDdQKjSkHg(B9kHpwST!ayf7T zdF-(k(m`#mpis;AUM!ZI7kAe{{d=>S7$L;Rn+LOOZ7Vk%VAA;)++*^WjPN&I7CLP< z4#mi|&F21?eGXf>`_6xHk|HmwS!vjb`dz?gtg(A~8dNcCNMK$4Sq=r)Wa>yy_qbwr zPZS9FfF>Ow5LMeB6HdQ~wNibT?vg_F9+HJ!PrPZQDbc<=>cT}$eW^gfcFI&ibYOm; zcJ56k@Gs3*fyflJ6Dp1Ati~gYUlyW*%_zr4 zq4FX}2AZ8tGerm3x$Nt?4^H#%-s?7j&0RH>N$x(0EVuX$=h{bhryqV$v3^Rz<`L={Mh z&hyzYG`|6eJ>@&6Q3<9}&I1KR&U3G$K&XlnPz7S3E22Fd<-g^gPFXcU)K>JI5&3E_ zB4s^fV}IRKC>DyWd79kf-kqCvcS&n zAY)80^+{#L@R4(F@AWQ_jrpu8n`h)KRAfmX9k?BS-8Hh#bG#;#X#Vuu2lj7@6JXgV z6q-)vH)jVL8yRg4tWEnDcPl?7xg61lTKUSI)W4@MaY)@Br73zrze>yGLJYYL)>12w z*I1#;%eozK%;OidpULhxA(m?NQX)v4GC2DL=Sj=WUCobvi3+u#W|TK@w}wx9WibNC z8s@^!z8+D52Nszl-Lb$g!^$_z7$hjpJlB>*#`WOzeHpv7)5L-K)+VDY2_#fT_}X~0 z^5l=Z0LQVe=?O8|mPkJOMfx(y_MS$F*2(-EMWfyXrq(-9p$vK5wz^c8XtG(J(=HJ; zzcC6}n(c6gqzSQK5{AkWW$(k`RT4$8UV=Pl$Wu$&Pr$F{!Uq#Giwa%!>m4WOutsw6 zXE+30PYP0+tL3rR)UHk8~SBTVa`uLnT=gHMO@Ryx^jNEI5RV^xag8g$L#zM+T}7)5WI> zLsku{eZRr$;b0`LpS!#luv*({Vc-M%L6gNMz*1ryXEBw`Xs=kR!q4MrUi&Hsapn2V zFH5}scS2Ts!n_y780qcRr>3o1A33u%lUZ|#mWDz;valxaP_XCq=#2Op>E4TqAJC4G ze8Z4!>0J6v<6{;$f=NwHO*eoG%szSa!t;%L-V9)Q--&^$bFUxU{hDqEzrg1H3yY$0|Lc_~lN;Lpjp zhD+GIp17Bt9xC4_waeqdT&0`$@lVc=Tw@?H{=AoVHv0WVZyR;aR5B_lYEV*8xAOps zMGydZw01u@*jY$#*7N(v=d;4O^&wFqas^!0WBH~kh^rguEnvxXSR@f}$~Yq1E}gNl z6FYu!udslZ3Me}zx=E+y3iiJM5ppY5m_P}BTCxXZE(0KL*lZ7LS~+ff4uFJ4+<>_e z&2KdyHVDqKs#|{|Z$hjFcFR%>_#$=3fI^~!S)3{MY_~D5=#%1vhyt`UkL2`Imycb& zsLOn<0Ruh-i;5dQ&!rFBTkv#fjH4ZM2?dvXl$cXpF^|mIl12foVw!&LGwWJ+($Ztf zMMB;DEM38`u z;fha;*`I<4bsv+PXjd+OY`xctd$+`RE+7t_dVD(yh-bUf0gI`Mz?4b?V24-1hq1AC z$1Kf{w>J}9x*v3TAAGuUHOf6NSKSgqcP}_R#B3xfgdclcWwT|t72E;N`RH4x zj5rOjHWnY6_B7q!Y`-Pmb?d=9^>>%Ei2rG^|HF+vzKDMO|7G_4e>Ca;eeeGuR{y{H gjYcpaO#itx^ypR`Gp(^a5%`19Gu3U^cD?<-0MSvZJpcdz literal 0 HcmV?d00001