A gentle intro
to coding

Continued!

view these slides here: 
goo.gl/KWWMT

welcome back!

Introductions

Because I always forget names too

MAËlys

Serena

MAdo

Quinn

territorial acknowledgement

last week i spoke of how we were on  the traditional unceded territory of the Algonquin Anishnaabeg people

I want to continue the discussion this week by talking about history

for thousands of years indigenous people lived on these lands

rich histories largely ignored by our school's textbooks that focus on after colonization by europeans

while saying next to nothing of the brutality of colonialism

with colonialism, indigenous peoples' LAnds were taken, and there was a concerted effort to destroy their languages, religions, and cultures

The indian act made it illegal for indigenous peoples to raise funds for, or hire, a lawyer to address land claims

indigenous celebrations were outlawed under the indian act until 1951

indigenous people in canada did not get the vote until 1960

children were forcibly ripped from their parents and sent to residential schools

where they were beaten for speaking their own language

“When ... the child lives with its parents, who are savages, and though he may learn to read and write, his habits and training mode of thought are Indian. ... Indian children should be withdrawn as much as possible from the parental influence ... put them in central training industrial schools where they will acquire the habits and modes of thought of white men."

- Sir John A MacDonald

residential schools did not stop operating until 1996

between 1981 and 2012 over 1,100 indigenous women were murdered or went missing

some estimates put that number at over 4,000

this history isn't just in the past

IT CONTINUES IN THE PRESENT

AND we live in a culture that actively opposes
Truth & reconciliation

by living on this land our histories are intertwined

and we, as settlers, have agency over what future historians will say of our timeS

if this oppression isn't to be perpetuated into the future

then we must listen to
indigenous voices

And help implement the changes asked of us

Review of
last week

last week we covered

Software development

programming languages

a bit of python programming

We learned about

functions

variables

comments

def simple_example():

    a = 20
    b = 4
    print(a / b)

variables



    a = 20
    b = 4

using A function



    a = 20
    b = 4
    print(a / b)

defining A function

def simple_example():
    # Simple math example
    a = 20
    b = 4
    print(a / b)

comment

It sounds like a lot
I know that

WE'RE GOING TO TAKE IT A
STEP AT A TIME

Please launch
visual studio code

it should open to the project from last week

and the terminal should be
open on the bottom

create a new file called "Review.py"

result = 8 / 2
print(result)

write this code in

test that this works by running the program in the terminal

python review.py
py.exe review.py

(        )

# Call the function. 
result = divide_by_two(8)
print(result)

now replace your code with this

the                             
function isn't created yet

divide_by_two()

I want you to
Create it

Try to figure it out on your own or with people around you

def multiply(a, b):
    return a * b

result = multiply(3, 4)

example from last week to refresh your memory

}

don't forget about the indentation
(TAB in a function)

def divide_by_two(value):
    return value / 2

# Call the function. 
result = divide_by_two(8)
print(result)

a solution
(there ARE many right answers)

If you're still uncomfortable
it's okay

You  don't need to be great at what we did last week to continue

I know for some people (me) asking questions is haaaaaaard

remember that anything you ask openly, someone else might have been too shy to ask

And you're helping them too

any questions?

Boolean

( true & False )

last week we covered variables

they looked like this

a = 5
b = 4
c = a / b

message = "hello there!"

they're like a container you can store data in you want to use later

we saw two kinds of information to store

a = 5
b = 4
c = a / b

message = "hello there!"

numbers

Text

there's a third type of information you can put in that I want to cover this week

they're called
booleans

and that just means it can be true or false

a = 5
b = 4
c = a / b

message = "hello there!"

is_corgi = True
has_feet = True
has_tail = False

here's what it looks like when it's used

this is pretty useful

there's a lot of situations where a simple yes (true) or no (false) is preferable to numbers or text

for instance

a variable that saves the answer to
"can I read this file?"

works better as a true/false than a number or text

comparisons

there's another situation where booleans come in

I'll show you
through example

create a new file called "comparisons.py"

print(10 > 5)

print(10 < 5)

write this code in

run the program in the terminal

python comparisons.py
py.exe comparisons.py

(          )

what do you notice about the output?

we didn't write true or false here

But we're seeing true & false in the output

This shows up AS true

print(10 > 5)

this shows up as false

print(10 < 5)

in python you can compare things

the result of those comparisons show up as true or false

the result is a boolean!

let's look at those comparisons again

print(10 > 5)

print(10 < 5)

there are two types of comparisons here

print(10 > 5)

a > B
Is a greater than b

print(10 < 5)

a < B
Is a Less than b

now it's your turn

add two more lines of code that do comparisons

Ideas

# is 4.0 less than 4?
print(4.0 < 4)

# is 2 + 2 less than 5?
print(2 + 2 < 5)

# is 2 times zero greater than 1?
print(2 * 0 > 1)

there's a third type of comparison

print(2 + 2 == 5)
print(2 + 2 == 4)

print("cat" == "dog")
print("cat" == "cat")

add the following lines to the "comparisons.py" file

run the program in the terminal

python comparisons.py
py.exe comparisons.py

(          )

this shows up as false

print(2 + 2 == 5)
print("cat" == "dog")

This shows up AS true

print(2 + 2 == 4)
print("cat" == "cat")

What does the "==" mean?

print(2 + 2 == 4)

print("cat" == "dog")
print("cat" == "cat")

a == B
Is a equal to b

i know it's a bit weird to use == to mean
"Is it equal?"

when a single = is already a thing in python

It's like that because python would be confused by the other way we use the = sign

# Store "5" in variable "a"
a = 5

# Give a True/False answer for
# whether "a" is equal to "5"
a == 5

remember: programming languages aren't very smart

we just saw a lot of stuff

here's the take-away

in python you can store numbers, text, and booleans in variables

and booleans just mean a value that is true or false

in python you can also make comparisons

so you can see whether one thing is bigger than another, or equal to another

those comparisons give a true or false answer

it's your turn Again

What do the ">=" and "<=" comparisons do?

print(1001 >= 1000)
print(1000 >= 1000)
print(999  >= 1000)

print(1001 <= 1000)
print(1000 <= 1000)
print(999  <= 1000)

you now know of The following comparisons:
>   <   >=   <=   ==

a = 5
b = 3

print(a > b)
print(a < b)
print(a >= b)
print(a <= b)
print(a == b)

add three more comparisons to your file

Reminder of what comparisons look like:

conditionals

( IF & ELSE )

In the real world programs often have to make decisions

do I do this

...or do I do that?

your phone has to decide when to show pictures of adorable dogs on the internet

you don't want those pictures to show up while you're trying to order an uber

you want to show it when you GO to a website Of cute adorable dog pictures

decisions

in python, one way to have your program make decisions is by using conditionals

that's a big word to mean if this is true then do a thing

value = 4

if value == 4:
   print("value is 4!")
else:
   print("value is NOT 4!")

in python, we can do that with if and else

value = 4

if value == 4:
   print("value is 4!")
else:
   print("value is NOT 4!")

if value is equal to 4

...then show this

...otherwise show that

value = 4

if value == 4:
   print("value is 4!")

}

It's here too

remember how there was indentation in functions?

Indentation is there to distinguish this

value = 2

if value == 4:
   print("value is 4!")
   print("yay!")

...From this

value = 2

if value == 4:
   print("value is 4!")
print("yay!")

"yay" shows up only when value is 4

"yay" Always shows up

Let's try this out

create a new file called "Conditionals.py"

value = 4

if value > 10:
   print("value is over 10")
else:
   print("value is equal to 10 or less")

Write the following code

run the program in the terminal

python conditionals.py
py.exe conditionals.py

(          )

does anyone not see 

"value is equal to 10 or less"

in the output?

now change the conditional ">" to something else like <, <=, >=, or ==

Then change the "4" and "10" to different numbers

check that the output when you run the program is as you expect

beneath that code

create another if... else

this time, make it do this:

If the variable value is equal to the text "dog"

make the program print "Woof!"

If the text is not "dog", print "meow!"

does anyone not get the result they expected?

user input

In everything we've done so far, you haven't been able to interact with the program after it starts running

so far You run the program and You get an output immediately

But sometimes you want to ask something to the user when your program is running

In python, there is an input function

which lets the user write text that's saved to a variable

age = raw_input('Enter your age:')

print("You are this age:")
print(age)
age = input('Enter your age:')

print("You are this age:")
print(age)

Python 2

Python 3

if you want to know what version of python you are running

run the Following in the terminal

python --version
py.exe --version

(          )

if you're on a mac or Linux

and you're running python 2.x

Run this in the terminal:

python3 --version

if it now says python 3.x

then you can write things for python 3 and use this command to run programs

python3 some_file_name.py

I would prefer it if you wrote things for python 3 if possible, since it's newer

now to write some code!

create a new file called "input.py"

Write the following in the new file

name = raw_input("Enter your name:")

print("Hello")
print(name)
name = input("Enter your name:")

print("Hello")
print(name)

Python 2

Python 3

run the program in the terminal

python3 input.py
py.exe input.py

(     )

python input.py

Does anyone not see something like this in the output?

# Python 2
species = raw_input('What species are you?')

Add the following code to the file

# Python 3
species = input('What species are you?')
# Both Python 2 & 3
if species == "human":
   print("Hallo human!")
else:
   print("Hallo other being!")

run the program in the terminal

python3 input.py
py.exe input.py

(     )

python input.py

Does anyone not get the output they expect?

One last example

# Python 2
number_one = raw_input("Enter a number: ")
number_two = raw_input("Enter another number: ")

Add the following code to the file

# Python 3
number_one = input("Enter a number: ")
number_two = input("Enter another number: ")
# Both Python 2 & 3
print("The sum of both numbers:")
print(number_one + number_two)

run the program in the terminal

is the result what you expected?

All input is understood as text and not numbers

So when you do text + text thinks you want to join them

use the function int() to convert text to numbers

# Python 2
number_one = raw_input("Enter a number: ")
number_two = raw_input("Enter another number: ")
# Python 3
number_one = input("Enter a number: ")
number_two = input("Enter another number: ")
# Both Python 2 & 3
print("The sum of both numbers:")
print(int(number_one) + int(number_two))

run the program in the terminal

Does anyone get a result they don't expect?

now it's your turn

make the program ask a new question

ideas

Ask what city you live in

ask for a number

Then have the program tell you if it's in canada

Then print out that number multiplied by itself

self-directed project

we've looked at a number of different things

so here's a project you can do to combine a lot of these ideas together

make a calculator!

create a new file called "calculator.py"

you will write your code in here

requirements

the program must ask you to enter two numbers

the program must ask you to enter the name of an operation ("ADD", "SUBTRACT", "MULTIPLY" OR "DIVIDE")

The program must then perform the addition, subtraction, multiplication or division

1.

2.

3.

Example of the program running

working in groups is welcome

that's it for coding this week!

we covered a lot of ground

so if you feel uneasy with it it's okay!

learning stuff is hard and it takes time

these slides are online for you to revisit

and I'll be giving you a list of resources for where you can learn more

sometimes we can feel down on ourselves for not being as quick to grasp stuff as our neighbour

just try to remember that it's not about them, it's about being a little ahead of where you were

And I hope this helped you learn a little more than what you knew going in

Resources

Stack overflow

stackoverflow.com

Running into errors while programming you can't figure out? The answer is probably here.

 

An invaluable resource for coders.

don't try to write all of this down

I'LL GIVE YOU a LINK TO
THESE SLIDES

Learn python

learnpython.org

Free, interactive, online teaching material to get more in-depth in Python.

Harvard cs50

edx.org/course/cs50s-introduction-computer-science-harvardx-cs50x

Free introduction to computer science course from Harvard. Getting a certificate costs $90.

Free Code camp

learn.freecodecamp.org

Free online courses to learn web development basics.

LEAP

leap.ycombinator.com

Community by & for women in tech, with a focus on startups.

startup school

startupschool.org

Free videos and material to teach how to start a startup. You can audit courses.

Deadline is August 13th.

This is an
incomplete list

There are tons of free resources out there

hacker news is a good source to find out about free new learning materials

Text

news.ycombinator.com

A word for those interested in this as a career

do it.

i have a degree in
physical geography

This is one of the few technical fields where university education isn't a requirement

especially not in startups

source: https://www.digitalocean.com/currents/june-2018/

here's the thing

the qualities of the best programmers

are those who make unimpressive code

code that is
easy to read

and the best coders are those who are kind to colleagues

and are able to both give and listen to feedback constructively

because this is a very cooperative field

anyone can do this as a job

Like anything

It's about practice

And a desire to learn

you got this.

questions?

if you think of anything you want to ask, contact me via my site

maelys.bio

Thank you to our volunteers

Thank you!

get slides here: 
goo.gl/KWWMT

my website: 
maelys.bio

Bonus content!

files

has anyone ever written a complicated excel formula? 

sometimes it's easier to write a program to do the same thing 

but you don't want to store the data in the program

Because then you'd have to change the program every time

What if...

PROGRAMS COULD READ FILES with the data in them

then the program would stay the same

You could just change the data in the file

okay I know this isn't new information

we're going to write a program that reads a file full of numbers

Yes... more numbers

I know it's annoying to do numbers numbers numbers but srsly it makes code simpler and easier to learn

we're going to write a program that reads numbers and multiplies them by 3

But first let's create the file with the numbers

create a new file called "numbers.txt"

write the following in the "numbers.txt" file

3
100
123456
333

do not have empty lines or the program will complain

create a new file called "files.py"

# Open the file.
with open("numbers.txt") as number_file:

    # Read each line in the file.
    for line in number_file:

        # Multiply number by 3.
        result = int(line) * 3
        print(result)

Add the following code to the file

run the program in the terminal

python3 files.py
py.exe files.py

(     )

python files.py

Did anyone get a result they did not expect?

new things were introduced with that code

# Open the file.
with open("numbers.txt") as number_file:

open() is a function to open files

in programming languages like python, files also have to be closed when you're done with them

# Open the file.
with open("numbers.txt") as number_file:

with tells python to close the file after the indented stuff is over

# Open the file.
with open("numbers.txt") as number_file:

number_file is a variable that contains the data that's in the file

You can call this variable whatever you want

next line

    # Read each line in the file.
    for line in number_file:

For ... in repeats the code that follows, in this case for every line in the file

    # Read each line in the file.
    for line in number_file:

Line is the variable that stores the contents of a line in the file

You can call this variable whatever you want

next lineS

        # Multiply number by 3.
        result = int(line) * 3
        print(result)

int() is A function that converts the line, which is text right now, into a number

This takes the number on the line and multiplies it by 3

I know this seems really convoluted

Let's do another example

create a new file called "text.txt"

add these lines in the "text.txt" file

the flag is red
the door is green
the jar is transparent

do not have empty lines or the program will complain

with open("text.txt") as number_file:
    for line in number_file:
        if "green" in line:
            print("This is green.")
        else:
            print("This is not green.")

Add the following code to the "files.py" file

run the program in the terminal

python3 files.py
py.exe files.py

(     )

python files.py
with open("text.txt") as number_file:
    for line in number_file:
        if "green" in line:
            print("This is green.")
        else:
            print("This is not green.")

What does the if "green" in line do?

Now it's your turn

create a new file called "names.txt"

put five people's names in this file

Make sure each name is on its own line

now modify the code in "files.py" so that it opens the "names.txt" file

and lets you know which names are longer than eight characters

name = "Maya Angelou"
length_of_name = len(name)
print(length_of_name)

Reminder: the len() function lets you know how long text is

does anyone not have the result they expected?

A Gentle Intro to Coding - Continued

By Maëlys

A Gentle Intro to Coding - Continued

This is the continuation of a two-part workshop to teach non-programmers a bit about coding.

  • 1,215