diff --git a/03-seznamy/03-seznamy.tex b/03-seznamy/03-seznamy.tex
new file mode 100644
index 0000000000000000000000000000000000000000..b7cae73af6ebd6db234aabbc563c988587824ae9
--- /dev/null
+++ b/03-seznamy/03-seznamy.tex
@@ -0,0 +1,203 @@
+\documentclass{beamer}
+\usepackage[utf8]{inputenc}
+\usepackage[czech]{babel}
+\usepackage{palatino}
+\usepackage{verbatim}
+\usetheme{Warsaw}
+\title{Programování 1: Seznamy}
+\author[Martin Mareš]{Martin Mareš\\\texttt{mj@ucw.cz}}
+\institute{Katedra Aplikované Matematiky\\MFF UK Praha}
+\date{2019}
+\begin{document}
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{footline}{}
+\setbeamerfont{title page}{family=\rmfamily}
+
+\begin{frame}
+\titlepage
+\end{frame}
+
+\input ../slidemac.tex
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Seznamy a jejich indexování}
+
+\py{%
+cisla = [11, 22, 33, 44, 55]
+}{%
+}
+
+\py{%
+cisla[0]
+}{%
+11
+}
+
+\py{%
+cisla[2]
+}{%
+33
+}
+
+\py{%
+cisla[-1]
+}{%
+55
+}
+
+\py{%
+len(cisla)
+}{%
+5
+}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Vnořené seznamy}
+
+\py{%
+matice = [[11, 12, 13], [21, 22, 23]]
+}{%
+}
+
+\py{%
+matice[0]
+}{%
+[11, 12, 13]
+}
+
+\py{%
+matice[0][2]
+}{%
+13
+}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+% \begin{frame}{Řetězec se také chová jako seznam}
+% 
+% \py{%
+% slovo = "mňau"\\
+% len(slovo)
+% }{%
+% 4
+% }
+% 
+% \py{%
+% slovo[1]
+% }{%
+% 'ň'
+% }
+% 
+% \py{%
+% slova = ["mňau", "haf", "kvák"]\\
+% slova[1]
+% }{%
+% 'haf'
+% }
+% 
+% \end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Cyklus for}
+
+\py{%
+slova = ["mňau", "haf", "kvák"]\\
+for x in slova:\.
+\>print(x)
+}{%
+mňau\\
+haf\\
+kvák
+}
+
+\py{%
+for x in range(1, 5):\.
+\>print(x)
+}{%
+1\\
+2\\
+3\\
+4
+}
+
+\py{%
+for i in range(len(x)):\.
+\>print(x[i])
+}{%
+}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Operace se seznamy}
+
+\py{%
+slova = ["mňau", "haf", "kvák"]\\
+slova.append("íá")\\
+slova
+}{%
+['mňau', 'haf', 'kvák', 'íá']
+}
+
+\py{%
+[1, 2] + [3, 4, 5]
+}{%
+[1, 2, 3, 4, 5]
+}
+
+\py{%
+[0] * 5
+}{%
+[0, 0, 0, 0, 0]
+}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Chyták: proměnné na seznamy jen odkazují!}
+
+\py{%
+x = [1, 2, 3]\\
+y = x\\
+x[2] = 9\\
+y
+}{%
+[1, 2, 9]
+}
+
+\py{%
+m = [[0] * 4] * 3\\
+m
+}{%
+[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
+}
+
+\py{%
+m[0][0] = 1\\
+m
+}{%
+[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
+}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Vypsání čísel pozpátku}
+
+\verbatiminput{seznam-pozpatku.py}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\end{document}
diff --git a/03-seznamy/Makefile b/03-seznamy/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..b2afdc50c66ea0d28a9ee42a40f0d96d19298996
--- /dev/null
+++ b/03-seznamy/Makefile
@@ -0,0 +1,3 @@
+SLIDES=03-seznamy.pdf
+
+include ../Makerules
diff --git a/03-seznamy/fibonacci.py b/03-seznamy/fibonacci.py
new file mode 100755
index 0000000000000000000000000000000000000000..cc585bdffb98c70264671e9a3859e2eb61bbc647
--- /dev/null
+++ b/03-seznamy/fibonacci.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+# Spočítá prvních N Fibonacciho čísel (N>=2)
+
+N = int(input())
+fib = [0, 1]
+
+for i in range(N-2):
+    fib.append(fib[-1] + fib[-2])
+
+print(fib)
diff --git a/03-seznamy/seznam-pozpatku.py b/03-seznamy/seznam-pozpatku.py
new file mode 100755
index 0000000000000000000000000000000000000000..5cf5a32b1836043cb47781646c694a59a4426dee
--- /dev/null
+++ b/03-seznamy/seznam-pozpatku.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python3
+# Načítá čísla ze vstupu ukončená -1,
+# vypíše je pozpátku
+
+seznam = []
+
+while True:
+    x = int(input())
+    if x == -1:
+        break
+    seznam.append(x)
+
+for i in range(len(seznam)):
+    print(seznam[-i-1])
diff --git a/03-seznamy/sito.py b/03-seznamy/sito.py
new file mode 100755
index 0000000000000000000000000000000000000000..07bcea69525e3a8095267b1b91bdc7bb47d613a3
--- /dev/null
+++ b/03-seznamy/sito.py
@@ -0,0 +1,11 @@
+#!/usr/bin/env python3
+# Eratosthenovo síto: najde prvočísla mezi 1 a N
+
+N = int(input())
+A = [True] * (N+1)
+
+for i in range(2, N+1):
+    if A[i]:
+        print(i)
+        for j in range(2*i, N+1, i):
+            A[j] = False