---
title: "Python Fundamentals"
space: "Teacher's Handbook"
url: "https://portal.cs17.org/teachers-handbook/q2/python/fundamentals"
updated: "2026-10-09"
---

## Lecture 1



Important bit here is to **connect to scratch** as much as possible. Hence, the slides in [Lecture Resources](wiki:9eac9d311bbe) are an important collateral. Some theory before live coding:

- Source Code
- Machine Code
- Compiler (`C`) vs Interpreter (`Python`): don't bother much, anyways they won't *understand*, just briefly talk about it
- Start with simple `print("hello, world")` and compare to `Say` block in Scratch (not on demo yet)
- GUI vs CLI (what type of programs they are going to build, draw parallels with `ls` etc. in terminal)

### Live

:::tip
Deliberately use a simple text editor **without** syntax highlighting or the likes.
:::

Use the terminal

```
touch hello.py
cat hello.py # empty
echo "print('hello, world')" # just to remind this will just print
echo "print('hello, world')" >> hello.py
cat hello.py # only 1 line of source code

## run the source code
python hello.py # python3 in their Ubuntu based laptops
# hello, world
```

Break down the line: 

```python
print("hello, world") # f(x)
```

Explain function, argument, and why the shape of argument in Scratch is an oval (to resemble the braces in code). Also, explain side effects and output.



Then move on to use `input` to ask for name and print `hello, name`. Use this slide as a reference:

![](/files/CleanShot 2026-10-05 at 5.25.13 PM@2x.webp)

- Explain **concatenation**  ("a" + "b" = "ab", but 1 + 2 = 3, i.e. python is smart) in brief. 
- Explain **variables (**`answer`).



Then take the below example, explain them line by line, then ask them to turn their laptops on!

```python
name = input("What is your name?")
age = input("What is your age?")

print("Hello, " + name + "." + "You are " + age + " years old."
```

It is time for them to create a simple python file using terminal, open it using `open` and copy the exact content on the screen. Then save and run. 

#### Ask them to make mistakes on purpose

> So they get exposure to reading error messages

- Change `print` to `Print` (name error)

### REPL Session



Ask them to just run `python3` without any filename. Ask them to run as *asked*:

- `2*2`
- `2+7`
- `2**5`
- `5/2`
- `5//2`
- `age = 2` , `age = age + 1`, `age` (will print the age)
- `age = input(...)` , `age`, `age = age + 1` \[IMPORTANT\]
  - Explain the difference (`18` vs `'18'`) and the error
  - Show using `int` function
- `exit`

### Naming Variables

Three rules they should have by heart for naming variables in python:

1. **Must** not start with a number
2. Must not contain any special character other than underscore `_`
3. Must not be a reserved keyword (e.g. `if` )

Take a few valid and invalid examples in REPL and help them apply these rules.

### Syntax Highlighting

Ubuntu text editor will already do this so, explain in brief. Open the file in VS Code and show syntax highlighting and other perks (red squiggly lines).

### Homework

Write a python program:

- Ask for side of square, print area and perimeter
- Same for circle (float)
- Absolute value of a give number (hint to check python manual on student manual wiki)
- Ask for price and print discounted price if discount is 15%.



Share link and ask to install VS Code 😎



## Lecture 2

Variables re-iterated with the **box** analogy. Python makes a box, applies a label (variable name), and puts the value in the box. What if the box doesn't exist and you ask python for it anyways? (`NameError`)

### Data Types

- String
- Number: int, float

### Operators

- Arithmetic operations: `+`, `-`. `*`, `/`, `//`, `**` 
- Logical Operators (`and`, `or`, `not`)
  - Introduce and Connect `boolean` data type here
- Comparison operations: `<`, `>`, `>=`, `<=`, `==` (explain why not `=`) `!=` 
- Assignment operators: `=` , `+=` , `-=` , etc. (show with an example)



Help practice operators with output and trace table based questions, e.g.

```python
a = 2
b = 5
b = a + b
a = b ** 2
print(a, b)
```

### Homework



[Worksheet 1](wiki:decdf415d804) 

## Lecture 3

Review the worksheets submitted and do all questions explaining them things they missed and how they should have approached the problems.



Ended with:

- `end` , `sep` in `print` with examples. Gave them a worksheet with 100+ problems to sprint in a day or two: [Worksheet 2](wiki:32eb07bf6984)