{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ChEn-1070: Introduction to Chemical Engineering Fall 2019 UMass Lowell; Profs. Manohar and de Almeida **10Sep2019**\n",
"\n",
"# 01. Introduction to Jupyter Notebooks and Python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"## Table of Contents\n",
"* [Inspiration](#nasa)\n",
"* [What is a Jupyter Notebook?](#whatisit)\n",
"* [Access to a JNotebook server](#access)\n",
"* [Jupyter Notebook cell](#jnbcell)\n",
" + [Markdown text](#markdown)\n",
" + [Execute Python code](#execute)\n",
" + [Inspect Python variables](#variables)\n",
"* [Additional help](#umllinux)\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Inspiration\n",
"*Lines of python code*:\n",
" - [We are NASA (\"men in the moon\")](https://www.youtube.com/watch?v=WeA7edXsU40&app=desktop) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is a Jupyter Notebook?\n",
"A web application for presenting code, results, and discussion (analysis) all in one place. There are many sources to learn additional information from, such as:\n",
" 1. [Visit the website](http://jupyter.org/) \n",
" 1. [Read the basic documentation](https://jupyter-notebook.readthedocs.io/en/stable/index.html)\n",
" 1. [Try examples first](https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/examples_index.html)\n",
" 1. [Recent Journal Article](https://www.nature.com/articles/d41586-018-07196-1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Access to a Jupyter Notebook\n",
" 1. Use the web-based cloud service [Azure](https://notebooks.azure.com/). Login with your student UMass Lowell student credential and start a Jupyter Notebook. This is a **free** Microsoft cloud service.\n",
" 2. Access [this repository](https://github.com/dpploy/chen-1070) and use its Binder deployment of a Jupyter Notebook server.\n",
" 3. Install [Anaconda](https://docs.anaconda.com/anaconda/install/#) (free download) and use (Mac OS X and Windows) the Python 3 tarball. After install, use [Anaconda-Navigator](https://docs.anaconda.com/anaconda/navigator/) to start a Jupyter Notebook server."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
" ## Jupyter Notebook cell: the basic concept\n",
"\n",
"### Writing your document (`this cell`)\n",
"Have you seen this formula before? \n",
"\\begin{equation}\n",
"k = k_0 \\, e^{-\\frac{E_a}{RT}}.\n",
"\\end{equation} \n",
"How about typesetting formula in text: $\\ln k = \\ln k_0 - \\frac{E_a}{RT}$? How was this done?\n",
"\n",
"All of this text was written in Jupyter Markdown markup language and rendered via executing **this cell**. If you double click on this cell, you will see the Markdown source file. Then execute `Run` on the cell to render it again.\n",
"\n",
"### Markdown links\n",
"[Jupyter Markdown markup language](https://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Working%20With%20Markdown%20Cells.html).\n",
"\n",
"[More on Jupyter Markdown markup language](https://sourceforge.net/p/jupiter/wiki/markdown_syntax/).\n",
"\n",
"[Additional on Jupyter Markdown markup language](http://assemble.io/docs/Cheatsheet-Markdown.html).\n",
"\n",
"[Useful extensions and colored boxes](https://www.ibm.com/support/knowledgecenter/en/SSQNUZ_1.1.0/dsx/markd-jupyter.html)\n",
"\n",
"[Markdown project (see markdown render tool)](https://daringfireball.net/projects/markdown/)\n",
"\n",
"NB: you can export the notebook to different formats (Menu Bar: file -> Download as ->).\n",
"\n",
"### Markdown your code (*fenced code block with language highlighting*; double click here)\n",
"\n",
"Here is a plotting example from the [Matplotlib site](https://matplotlib.org/index.html):\n",
" ```python\n",
" import matplotlib.pyplot as plt # this is an import of the package\n",
" plt.plot([1,2,3,4])\n",
" plt.ylabel('some numbers')\n",
" plt.show()\n",
" ```\n",
"this Python code will be executed in the next cell, the last line of source code will display the x-y plot."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Execute your Python code"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"