class: center, middle

# Introduction to Programming
## Irene - Jun 11, 2023

---

# Basics of Computers

Computers are made of three basic parts

1. Processing
2. Input/Output
3. Storage


???
Start by talking about how a computer has three parts. Draw an analogy to the human body.

Draw this diagram on board to explain the interaction

```
-----------      ----------------         -------------
|  Input  | <--> |  Processing  |  <--->  |  Storage  |
-----------      ----------------         -------------
                       ^
                       |
                       v
                   ------------
                   | Output |
                   ------------
```
--
- Processing is done by the CPU.
- Input/Output devices are for instance: keyboard, mouse.

---
# How do Computers Speak?

Computers use a different language than humans. Just like humans communicate in
natural languages like Hindi, Kashmiri, English, etc, computers communicate in
binary.

- English: `marker`
- Binary: ` 01101101 01100001 01110010 01101011 01100101 01110010`

???

DO NOT dive into binary conversion.

Simply use electric signals as two states - hence 1, 0.

---

# How does code run?

- Computers read a piece of code from memory.
- Each number is a special instruction.
- The number tells the computer what to do.
- The computer executes this and then moves on to the next instruction.

<div class="asm">
  <img src="./asm.png">
  <video controls muted>
    <source src="./asm-example.mp4">
  </video>
</div>
???

Use the menu analogy. We visited a restaurant some time ago.

Build a hypothetical machine. Create ASM for it.

```
0001 ADD
0010 SUB
0011 MUL
0100 DIV
0101 INP
```


---

# Programming Languages

- Early on, programs were written in binary.
- Then to make things simpler, programs were written in Assembly.
- And the progression continued to make higher and higher languages.

???
explain the transition

give examples of ADDR and 00101110

e.g.

```
01000010 01100001
```

```
ADD 0xff
```

--

## Example code

```python
name = input("What is your name?")
print("Welcome", name)
```

---

# How do you create apps?

There are multiple languages that help us in various different tasks

--

- General Purpose Languages are used for a variety of things

  - Python is used in Desktop Apps, Data Science, Machine Learning, Web Servers, etc.
  - JS is used for website development, backend development, etc.
  - Java is used for servers, Android Applications, etc.

--

- Special Languages help us develop specific things.
  - HTML is used for creating content of websites.
  - CSS is used for styling webpages.
  - XML is used for storing data.

---

# Python

Python is a general purpose programming language. It is a beginner friendly
programming language. For this session, we will skip the installation but you
can simply install it by downloading the setup from
[python.org](https://python.org).

We will be using an application called IDLE to run our code.

???

Open IDLE and explain how running the code works and how we can store files and
run the code inside them. Introduce to some basic ideas like using interpreter
as a calculator, stdout and thus print.

---

# Memory and Variables

Memory is where our program stores data. It is different than Hard Disk as it
is a temporary storage. When we write programs, we store tiny bits of data to
this storage. We can access this data by variables.

```
*a = 100
print(a)

*b = "Jinal"
print(b)
```

???

Explain memory in depth. Drop into idle and run the code. Explain that we are
storing data in the memory and print is the command to send it through to
output

---

# Data Types

Python has various data types. The basic data types available are:

- Boolean
- Integer
- Float
- String

???

Explain type conversion and introduce to int and float functions. Explain addition on types.

---

# Task: Ask for two numbers and add them

--

```python
str1 = input("Enter Number 1: ")
num1 = int(str1)
```

--

```python
str2 = input("Enter Number 2: ")
num2 = int(str2)
```

--

```python
total = num1 + num2
print(total)
```

---

# Operators

There are various types of operators in python.

--

- Arithmetic
  - `+ - * / % **`

--

- Comparison
  - `== > >= < <=`


--

- Logical
  - `and or not`

---

## Out of today's scope

- Assignment
  - `= += -= *= /= //= %= **=` etc

- Bitwise
  - `| & ^ >> << ~`

- Membership
  - `in, not in`

- Identity
  - `is, is not`


---

# Conditionals

We can branch our code based on the result of conditions.

```python
if condition:
    some_statements
elif condition_2:
    some_statements
elif condition_3:
    some_statements
else:
    some_statements
```

---

# Small example to tie it all together

Write a program that asks the user to enter a number

- If the number is divisible by 3 and 5, print `"divisible by 3 and 5"`
- If the number is divisible by 3, print `"divisible by 3"`
- If the number is divisible by 5, print `"divisible by 5"`
- Else print the number

--

## Solution

```python
number = int(input("Enter a number: "))

if number % 3 == 0 and number % 5 == 0:
    print("divisible by 3 and 5")
elif number % 3 == 0:
    print("divisible by 3")
elif number % 5 == 0:
    print("divisible by 5")
else:
    print(number)
```

---

# Some questions to try

- Write a program to check if the user entered a vowel or a consonant

- Write a program to print out the signum value of a function. If the number is negative, print -1, if it is zero, print 0, if it is positive, print 1.

- (Math heavy) Take the x, y coordinates for two points and calculate whether the line through them touches the y-axis and where?


---

# Thank you

<div class="text-qr">

<p>
Slides: <a href="https://webionite.com/agatsu2/">webionite.com/agatsu2/</a>
</p>

<img src="./qr.png">

</div>

## Reach out to me at

<div class="text-qr">

<p>
<a href="https://webionite.com/">webionite.com</a>
</p>

<img src="./webionite-qr.png">

</div>
