diff --git a/1.ipynb b/1. Jupyter - podstawy.ipynb
similarity index 100%
rename from 1.ipynb
rename to 1. Jupyter - podstawy.ipynb
diff --git a/2. Jupyter - interaktywne wykresy i prezentacje multimedialne.ipynb b/2. Jupyter - interaktywne wykresy i prezentacje multimedialne.ipynb
new file mode 100644
index 0000000..851db08
--- /dev/null
+++ b/2. Jupyter - interaktywne wykresy i prezentacje multimedialne.ipynb
@@ -0,0 +1,86 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Przygotowanie innowacyjnych materiałów szkoleniowych i dokumentacji wewnętrznych w obszarze IT\n",
+ "# 2. Tworzenie materiałów szkoleniowych w Jupyter Notebook - interaktywne wykresy i prezentacje multimedialne"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2.1. Umieszczanie wzorów matematycznych"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2.2. Tworzenie wykresów"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Tworzenie statycznych wykresów"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Tworzenie interaktywnych wykresów"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 2.3. Wyświetlanie materiałów Jupyter Notebook w formie prezentacji multimedialnej"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Materiały przygotowane w formacie `.ipynb` można wyświetlać w formie prezentacji multimedialnej.\n",
+ "\n",
+ "Jest to możliwe dzięki narzędziu [**RISE**](https://rise.readthedocs.io).\n",
+ "\n",
+ "RISE (*Reveal.js Ipython Slideshow Extension*) jest rozszerzeniem do Jupytera umożliwiającym wyświetlanie notatników w trybie prezentacji w oparciu o framework [**Reveal.js**](https://revealjs.com/)."
+ ]
+ },
+ {
+ "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.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/3. Jupyter - przykład materiałów dydaktycznych.ipynb b/3. Jupyter - przykład materiałów dydaktycznych.ipynb
new file mode 100644
index 0000000..79f636a
--- /dev/null
+++ b/3. Jupyter - przykład materiałów dydaktycznych.ipynb
@@ -0,0 +1,42666 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Przygotowanie innowacyjnych materiałów szkoleniowych i dokumentacji wewnętrznych w obszarze IT\n",
+ "# 3. Przykład materiałów szkoleniowych w Jupyter Notebook"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Poniższe materiały pochodzą z kursu \"Uczenie maszynowe i big data\"."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "## Funkcja kosztu"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "source": [
+ "### Zadanie\n",
+ "Znając $x$ – ludność miasta (w dziesiątkach tysięcy mieszkańców),\n",
+ "należy przewidzieć $y$ – dochód firmy transportowej (w dziesiątkach tysięcy dolarów).\n",
+ "\n",
+ "(Dane pochodzą z kursu „Machine Learning”, Andrew Ng, Coursera)."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "slideshow": {
+ "slide_type": "notes"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import matplotlib\n",
+ "import matplotlib.pyplot as pl\n",
+ "import ipywidgets as widgets\n",
+ "\n",
+ "%matplotlib inline\n",
+ "%config InlineBackend.figure_format = 'svg'\n",
+ "\n",
+ "from IPython.display import display, Math, Latex"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "### Dane"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "6.1101,17.592\n",
+ "\n",
+ "5.5277,9.1302\n",
+ "\n",
+ "8.5186,13.662\n",
+ "\n",
+ "7.0032,11.854\n",
+ "\n",
+ "5.8598,6.8233\n",
+ "\n",
+ "8.3829,11.886\n",
+ "\n",
+ "7.4764,4.3483\n",
+ "\n",
+ "8.5781,12\n",
+ "\n",
+ "6.4862,6.5987\n",
+ "\n",
+ "5.0546,3.8166\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "with open('data01_train.csv') as data:\n",
+ " for line in data.readlines()[:10]:\n",
+ " print(line)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "subslide"
+ }
+ },
+ "source": [
+ "### Wczytanie danych"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "x = [6.1101, 5.5277, 8.5186, 7.0032, 5.8598, 8.3829, 7.4764, 8.5781, 6.4862, 5.0546]\n",
+ "y = [17.592, 9.1302, 13.662, 11.854, 6.8233, 11.886, 4.3483, 12.0, 6.5987, 3.8166]\n"
+ ]
+ }
+ ],
+ "source": [
+ "import csv\n",
+ "\n",
+ "reader = csv.reader(open('data01_train.csv'), delimiter=',')\n",
+ "\n",
+ "x = list()\n",
+ "y = list()\n",
+ "for xi, yi in reader:\n",
+ " x.append(float(xi))\n",
+ " y.append(float(yi)) \n",
+ " \n",
+ "print('x = {}'.format(x[:10])) \n",
+ "print('y = {}'.format(y[:10]))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "### Hipoteza i parametry modelu"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "notes"
+ }
+ },
+ "source": [
+ "Jak przewidzieć $y$ na podstawie danego $x$? W celu odpowiedzi na to pytanie będziemy starać się znaleźć taką funkcję $h(x)$, która będzie najlepiej obrazować zależność między $x$ a $y$, tj. $y \\sim h(x)$.\n",
+ "\n",
+ "Zacznijmy od najprostszego przypadku, kiedy $h(x)$ jest po prostu funkcją liniową. Ogólny wzór funkcji liniowej to\n",
+ "$$ h(x) = a \\, x + b $$\n",
+ "\n",
+ "Pamiętajmy jednak, że współczynniki $a$ i $b$ nie są w tej chwili dane z góry – naszym zadaniem właśnie będzie znalezienie takich ich wartości, żeby $h(x)$ było „możliwie jak najbliżej” $y$ (co właściwie oznacza to sformułowanie, wyjaśnię potem).\n",
+ "\n",
+ "Poszukiwaną funkcję $h$ będziemy nazywać **funkcją hipotezy**, a jej współczynniki – **parametrami modelu**.\n",
+ "\n",
+ "W teorii uczenia maszynowego parametry modelu oznacza się na ogół grecką literą $\\theta$ z odpowiednimi indeksami, dlatego powyższy wzór opisujący liniową funkcję hipotezy zapiszemy jako\n",
+ "$$ h(x) = \\theta_0 + \\theta_1 x $$\n",
+ "\n",
+ "**Parametry modelu** tworzą wektor, który oznaczymy po prostu przez $\\theta$:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "source": [
+ "$$ \\theta = \\left[\\begin{array}{c}\\theta_0\\\\ \\theta_1\\end{array}\\right] $$"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "notes"
+ }
+ },
+ "source": [
+ "Żeby podkreślić fakt, że funkcja hipotezy zależy od parametrów modelu, będziemy pisać $h_\\theta$ zamiast $h$:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "fragment"
+ }
+ },
+ "source": [
+ "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x $$"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Przyjrzyjmy się teraz, jak wyglądają dane, które mamy modelować:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "slideshow": {
+ "slide_type": "notes"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": [
+ "\r\n",
+ "\r\n",
+ "\r\n",
+ "\r\n"
+ ],
+ "text/plain": [
+ "