In this course, we will be using Jupyter notebooks as our integrated development environment (IDE). Jupyter notebooks allow us to combine Python code, Markdown code, program input and output, and other useful information into one, self-contained graphical user interface (GUI).
Modern IDEs allow Python software developers like you to execute and annotate code, view graphical program output, organize and manage software packages, use software project management tools, and receive feedback from tools like syntax highlighting that can analyze code to identify errors. Some IDEs even include code completion tools using generative artificial intelligence.
Examples of development environments
Basic (text editing only):
- vi/vim: linux command line text editing
- notepad++: Basic text editing GUI (https://
notepad -plus -plus .org/)
Complex (text editing, execution, output, visualization, source control, etc.):
- Jupyter Notebook: https://
jupyter .org/ - PyCharm: https://
www .jetbrains .com /pycharm/ - Visual Studio Code: https://
code .visualstudio .com/
1.1.1 - Jupyter notebooks¶
Jupyter notebooks use common web browser functionality to display graphical information and connect to a Jupyter notebook server that can be run locally (Fig. 1.1.f1) or remotely (e.g., EAE’s triton, google colab, etc.). Remote servers require only a web browser to access, which greatly reduces the computing requirements on your end and eliminates the need for you to go through the complicated setup steps. Because of this, Jupyter notebooks are one of the most popular ways to develop and share code, particularly for academic research (Fig. 1.1.f2) or jobs that rely heavily on prototyping and visualization. During this course, we will be using the notebook interface to complete examples, exercises, assignments, and your final project. These notebooks should be included in a career portfolio that demonstrates your Python skills to future employers. In other words, the learning curve needed to master the basic usage of notebooks will be worthwhile and make you more desirable to employers. Project managers and hiring committees like to see tangible evidence of coding experience.

Fig. 1.1.f1 - Did you know that you can use Python to run a local web server?

Fig. 1.1.f2 - Example of a Jupyter notebook that supports a published scientific article.
1.1.2 - Markdown Code in Jupyter notebooks¶
Before we learn about Python code, we will explore some examples of text formatting in Jupyter Notebooks using Markdown code. Markdown code is a markup language that takes plain text language (like English) and formats it in specific ways using markup syntax. The syntax of the language defines program behavior (such as formatting text) using specific keywords and/or characters.
1.1.2.1 - Headings¶
You can organize your markdown text by using headings. Headings usually identify the start of a section, subsection, etc. There are several examples provided in this notebook already. If you double click on the Markdown cells, the code for those headings would look like this:
# Top heading
## Secondary heading
### Tertiary heading
The character that tells Jupyter to display a top heading or secondary heading is the #
symbol, and an increasing number of these symbols correspond to lower and lower headings.
1.1.2.2 - Italics¶
Italic text
Italic text
Markdown code:
*Italic text*
_Italic text_
1.1.2.3 - Bold¶
Bold text*
Bold text
Markdown code:
**Bold text**
__Bold text__
1.1.2.4 - Strikethrough¶
Strikethrough text
Markdown code:
~~Strikethrough text~~
1.1.2.5 - Code blocks¶
Code examples can and should be formatted like the following example. This will keep the correct spacing, text appearance, etc., that will make it look like code and not text. Please note that this code is not runable and is only used for explanatory purposes.
a = 10
b = 20
Markdown code:
```
a = 10
b = 20
```
1.1.2.6 - Indentation¶
Indent once
Indent twice
Indent thrice
Markdown code:
> Indent once
>> Indent twice
>>> Indent thrice
1.1.2.7 - Bullets and Numbering¶
- Bullet 1
- Bullet 2
- Bullet 3
Markdown code:
- Bullet 1
- Bullet 2
- Bullet 3
- Numbered 1
- Numbered 2
- Numbered 3
Markdown code:
1. Numbered 1
2. Numbered 2
3. Numbered 3
1.1.2.8 - Horizontal lines¶
First section
Second section
Third section
Markdown code:
***
First section
***
Second section
***
Third section
***
1.1.3 - HyperText Markup Language (HTML)¶
Jupyter notebook markdown cells can use most HTML syntax. It is more difficult to use than Markdown, but it can provide additional customization if it is needed. Unlike typical HTML files, you only need to include individual tags. There are many available tags (sometimes known as “elements”), but since this is not an HTML course, we will only focus on a few useful tags.
1.1.3.1 - Line breaks¶
Sometimes, text will appear on the same line even if you want it to be on multiple lines. If this happens, you can try the <br>
tag.
Text on one line
Text on second line
Markdown code:
Text on one line<br>Text on second line
1.1.3.2 - Text color¶
Blue Text
Red Text
Yellow Text
Markdown code:
<font color=blue>Blue Text</font>
<font color=red>Red Text</font>
<font color=yellow>Yellow Text</font>
1.1.3.3 - Images¶
We used the following reference for the area of a circle
Markdown code:
__[We used the following reference for the area of a circle](https://en.wikipedia.org/wiki/Area_of_a_circle)__
<img src="https://upload.wikimedia.org/wikipedia/commons/c/ce/Circle_Area.svg" alt="Area of a circle diagram" title="Area of a Circle"/>
1.1.4 - LaTeX and Equations¶
Like HTML, Markdown cells can render most LaTeX code. This is a markup language that is generally used to format documents. In Jupyter notebooks, it is often used for mathematical equations. Learning LaTeX is beyond the scope of this course, but here are a few examples that could help you format your own equations during the course:
Markdown code
$ e = mc^2 $
$ f = ma $
$\infty$
$k_{n+1}$
$\frac{n!}{k!(n-k)!}$
$\sqrt{k}$
$\int\limits_a^b$
1.1.5 - Summary¶
While an entire class could be dedicated to markup languages, the purpose of this course is to learn about Python and its development ecosystem. Learning the basics of markdown will help you to communicate your ideas with others and your future self. Practice formatting your notebook markdowns and paying attention to the small formatting details. It will make your notebooks look more professional and impress future employers.
1.1.6 - Ungraded Practice¶
1.1.6.p1 - Write two paragraphs of text about a topic of your choice. Make sure each paragraph starts with an indented line and that the second paragraph is on its own line.
1.1.6.p2 - Add an equation on its own line in the middle of the first paragraph.
1.1.6.p3 - Add a heading before the first paragraph.
1.1.6.p4 - Emphasize certain words using italics and bolding.
1.1.6.p5 - Insert a picture between the first and second paragraphs.
1.1.6.p6 - Change the color of a word or sentence.