diff --git a/README.md b/README.md
index 07873b2..425e21f 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@ Alternatively, the content can be viewed in a web browser
|
[exercises 2 ](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/develop/chapter_01_elements/03_exercises.ipynb)
[](https://mybinder.org/v2/gh/webartifex/intro-to-python/develop?urlpath=lab/tree/chapter_01_elements/03_exercises.ipynb)
+ |
+ [summary ](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/develop/chapter_01_elements/04_summary.ipynb)
)
diff --git a/chapter_01_elements/04_summary.ipynb b/chapter_01_elements/04_summary.ipynb
new file mode 100644
index 0000000..9f52d19
--- /dev/null
+++ b/chapter_01_elements/04_summary.ipynb
@@ -0,0 +1,154 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "slide"
+ }
+ },
+ "source": [
+ "\n",
+ "# Chapter 1: Elements of a Program"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "skip"
+ }
+ },
+ "source": [
+ "## TL;DR"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "slideshow": {
+ "slide_type": "skip"
+ }
+ },
+ "source": [
+ "We end each chapter with a summary of the main points (i.e., **TL;DR** = \"too long; didn't read\"). The essence in this first chapter is that just as a sentence in a real language like English may be decomposed into its parts (e.g., subject, predicate, and objects), the same may be done with programming languages.\n",
+ "\n",
+ "- program\n",
+ " - **sequence** of **instructions** that specify how to perform a computation (= a \"recipe\")\n",
+ " - a \"black box\" that processes **inputs** and transforms them into meaningful **outputs** in a *deterministic* way\n",
+ " - conceptually similar to a mathematical function $f$ that maps some input $x$ to an output $y = f(x)$\n",
+ "\n",
+ "\n",
+ "- input (examples)\n",
+ " - data from a CSV file\n",
+ " - text entered on a command line\n",
+ " - data obtained from a database\n",
+ " - etc.\n",
+ "\n",
+ "\n",
+ "- output (examples)\n",
+ " - result of a computation (e.g., statistical summary of a sample dataset)\n",
+ " - a \"side effect\" (e.g., a transformation of raw input data into cleaned data)\n",
+ " - a physical \"behavior\" (e.g., a robot moving or a document printed)\n",
+ " - etc.\n",
+ "\n",
+ "\n",
+ "- objects\n",
+ " - distinct and well-contained areas/parts of the memory that hold the actual data\n",
+ " - the concept by which Python manages the memory for us\n",
+ " - can be classified into objects of the same **type** (i.e., same abstract \"structure\" but different concrete data)\n",
+ " - built-in objects (incl. **literals**) vs. user-defined objects (cf., [Chapter 11 ](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/develop/chapter_11_classes/00_content.ipynb))\n",
+ " - e.g., `1`, `1.0`, and `\"one\"` are three different objects of distinct types that are also literals (i.e., by the way we type them into the command line Python knows what the value and type are)\n",
+ "\n",
+ "\n",
+ "- variables\n",
+ " - storage of intermediate **state**\n",
+ " - are **names** referencing **objects** in **memory**\n",
+ " - e.g., `x = 1` creates the variable `x` that references the object `1`\n",
+ "\n",
+ "\n",
+ "- operators\n",
+ " - special built-in symbols that perform operations with objects in memory\n",
+ " - usually, operate with one or two objects\n",
+ " - e.g., addition `+`, subtraction `-`, multiplication `*`, and division `/` all take two objects, whereas the negation `-` only takes one\n",
+ "\n",
+ "\n",
+ "- expressions\n",
+ " - **combinations** of **variables** (incl. **literals**) and **operators**\n",
+ " - do *not* change the involved objects/state of the program\n",
+ " - evaluate to a **value** (i.e., the \"result\" of the expression, usually a new object)\n",
+ " - e.g., `x + 2` evaluates to the (new) object `3` and `1 - 1.0` to `0.0`\n",
+ "\n",
+ "\n",
+ "- statements\n",
+ " - instructions that **\"do\" something** and **have side effects** in memory\n",
+ " - (re-)assign names to (different) objects, *change* an existing object *in place*, or, more conceptually, *change* the state of the program\n",
+ " - usually, work with expressions\n",
+ " - e.g., the assignment statement `=` makes a name reference an object\n",
+ "\n",
+ "\n",
+ "- comments\n",
+ " - **prose** supporting a **human's understanding** of the program\n",
+ " - ignored by Python\n",
+ "\n",
+ "\n",
+ "- functions (cf., [Chapter 2 ](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/develop/chapter_02_functions/00_content.ipynb))\n",
+ " - named sequences of instructions\n",
+ " - the smaller parts in a larger program\n",
+ " - make a program more modular and thus easier to understand\n",
+ " - include [built-in functions ](https://docs.python.org/3/library/functions.html) like [print() ](https://docs.python.org/3/library/functions.html#print), [sum() ](https://docs.python.org/3/library/functions.html#sum), or [len() ](https://docs.python.org/3/library/functions.html#len)\n",
+ "\n",
+ "\n",
+ "- flow control (cf., [Chapter 3 ](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/develop/chapter_03_conditionals/00_content.ipynb) and [Chapter 4 ](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/develop/chapter_04_iteration/00_content.ipynb))\n",
+ " - expression of **business logic** or an **algorithm**\n",
+ " - conditional execution of parts of a program (e.g., `if` statements)\n",
+ " - repetitive execution of parts of a program (e.g., `for`-loops)"
+ ]
+ }
+ ],
+ "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.6"
+ },
+ "livereveal": {
+ "auto_select": "code",
+ "auto_select_fragment": true,
+ "scroll": true,
+ "theme": "serif"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": false,
+ "sideBar": true,
+ "skip_h1_title": true,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {
+ "height": "calc(100% - 180px)",
+ "left": "10px",
+ "top": "150px",
+ "width": "303.333px"
+ },
+ "toc_section_display": false,
+ "toc_window_display": false
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}