CS30 - Spring 2015 - Class 1
Example code in this lecture
bbq.py
Lecture notes
https://www.youtube.com/watch?v=WnzlbyTZsQY
Goals of the class
Course Administrative (
http://www.cs.pomona.edu/~dkauchak/classes/cs30/administrivia.html
)
- Schedule
- T/Th class with W lab
- Roughly weekly assignments, often due on Thursday nights
- All material will be posted on the course web page
- We have a discussion board setup on piazza linked from the course web page
- Use this to ask any content-based questions
- Check it regularly (or sign up for e-mail feeds)
- Late Policy
- Grading
-
Honor code
and collaboration (read the policy!)
Other misc. announcements
- Make sure you're registered for a lab section
- We will have our first lab session tomorrow
- First assignment (assignment 0) will be posted later today and due on Thursday
Style of the course
- interactive!
- ask lots of questions
- participate
- be expected to do group work in class
- You'll be expected to be here in class and lab
- I'll post my notes and examples online. You may still want to write some things down, but you don't have to write every word down
Pacing
- I assume no prior computer science, programming or science background
- The pacing may be a bit slow for some early, but it will get harder
Wing IDE 101
- We'll be using Wing IDE for this course as our interface into Python
- What is an IDE?
- Integrated Development Environment
- Incorporates a text editor with other tools for running, debugging and navigating through the code
- When it starts, a number of different parts of the window
- For now (and most of this course), we're only going to be using two main components:
- Python Shell
- Main editor window
- You can rearrange them however you'd like, but I prefer main editor on left and Python Shell on right
Python
- Python is an interpreted language
- you can type commands and get an immediate response back
- many programming languages require you to compile the program first and then run it
- Python makes a great calculator
- the ">>>" is the interpreter prompt where you type statements
- when you hit enter/return, Python executes the statements and gives you the answer
- Python has all of the standard mathematical operations
- What operations might you want?
- +, -, *, /
- ** (power or exponentiation)
- % (mod aka remainder)
>>> 4+4
8
>>> 15*20
300
>>> 20/4
5
>>> 10-20
-10
>>> 10+4*2
18
>>> (10+4)*2
28
>>> 2**10
1024
>>> 2**30
1073741824
>>> 2**-2
0.25
>>> 10%4
2
>>> 11 % 7
4
- What is operator precedence?
- Python follows the normal operator precedence you're used to for math
- things in parenthesis get evaluated first
- ** is next
- %, * and / next
- + and - last
- What should be the answer for 11/2?
>>> 11/2
5
- Why 5?
- Expressions
- anything that represents a value (e.g. a number) is called an expression
- contrast this with a statement, which tells the computer something to do
- for example, "walk over there" is a statement in English
- or, for computers, something like, "print this out" or "draw that on the screen"
- All the things we've seen so far have been expressions
- In Python (and many programming languages) all expressions have a type
- 11 is an expression
- 2 is an expression
- types
- the "type" of an expression determines how Python interprets and understands an expression
- Python is a "strongly typed" language: every expression in Python has a type
- what are the types of the expressions above?
- they are both numbers, but Python makes a distinction between integers and floating point numbers (i.e. numbers with decimals)
- Does this explain why 11/2 gave us 5?
- Because both 11 and 2 are integers, the result is also an integer
- Python rounds down (i.e. towards -infinity or to the smaller number) when doing integer division
- What should be the answer off 11/-2?
-6
- We can make a number a float by adding a decimal point
>>> 11.0
11.0
>>> 2.0
2.0
>>> 11.0/2.0
5.5
>>> 11.0/2
5.5
>>> 11/2.0
5.5
- for a given operation, if one of the numbers is a float, then the other is converted to a float and the result will be a float
- what is the result of
- (11/2)*4.0?
- 20.0
- the parenthesis will get evaluated first (11/2) will give us the integer 5
- we'll then do floating point multiplication by 4.0, giving us a float of 20.0
- (11.0/2)*4
- 22.0
bbq party
- you're having a party and you're trying to figure out how many hot dogs to buy. Here's what you know:
- tim isn't a big fan of hot dogs, so he'll only eat 1
- amy generally eats 2
- todd always eats twice as many as amy
- brenda eats one less than todd
- mark eats half as many as brenda, but likes to take an extra on his way home
- try and do this on paper
- 13 (assuming that if someone eats half a hot dog, we still have to count the whole thing)
- how did you do it?
- how could you figure this out in Python?
- might be able to do it, but would require a lot of remembering (or writing things down)
variables
- variables allow us to store things and then use them in other expressions
- a variable is storage for a value
- it holds a value
- we can change its value
- we change the value of a variable using '=' (also know as assigning to a variable)
- changing the value of a variable is a statement. It tells the interpreter to do something, but does NOT represent a value
tim = 1
amy = 2
todd = 2 * amy
brenda = todd - 1
mark = (brenda+1)/2 + 1
total_hotdogs = tim + amy + todd + brenda + mark
total_hotdogs
- When assigning to a variable, Python evaluates what is on the right hand side of the equals sign and then assigns this value to the variable
- if I then type amy = 4, what happens to todd?
- todd stays the same
naming variables
- generally you want to give good names to variables (x and y are not good names unless they represent x and y coordinates)
- variables should be all lowercase
- multiple words should be separated by an '_' (underscore)
what if you get a text from amy and she now says she's planning on eating 4?
- we'd have to re-enter each of the lines (well except the first one)
programs in Python
- besides interacting with the shell, we can write statements in a file and then run them
- the top window in the Wing IDE allows us to do this
- on many levels, it behaves a lot like a text editor (e.g. Word). You can:
- create new files
- open files
- save files
- edit files
look at
bbq.py code
- I've typed in the same code we'd typed into the shell, but now in the text editing section
- I've saved it in a file called bbq.py
- we'll use the extension .py by convention to indicate a Python program
- Anything different from what I'd typed before into the shell?
- In a program (vs. typing it into the shell) if you want to see the value of a variable or an expression, you need to "print" it
- If I didn't include this, I wouldn't get any answer (in fact I wouldn't see anything)
- I've used whitespace
- you can use spaces without affecting how the code executes
- we use blank lines to make the code more understandable
- I've included "comments"
comments
- comments in Python are designated using '#' (the pound sign)
- python ignores everything from the # to the end of the line
- you can put them on lines by themselves
- or if you have short comments, you can add them at the end of a line
- comments are VERY important
- they allow you to communicate in plain English (to others and to yourself when you look at the code later)
- you will be required to put them in your programs for this course
running the code
- With an IDE, not only can you edit code, you can also run it
- the green arrow, runs the program
- when you run a program, you get a brand new shell session (in the python shell)
- Any variables, etc. you may have manually created in the shell window will NO LONGER EXIST
- it executes your program a line at a time from the top
- it's like you typed all of those commands in the shell
- the one difference is that you don't get line-by-line feedback
- for example, if you put 4+4 in a program on a line by itself, you won't see anything
- if you want to see the value of a variable or an expression, you need to "print" it
- if we run this program, we see 13 printed out, like we would expect
What is the syntax of a language (say English)?
- It describes what are valid things to say in that language
- "I like dogs" is syntactically correct (it's a determiner followed by a verb followed by a noun)
- "I dog like" is not syntactically correct (it's a determiner followed by a noun followed by a verb)
- programming languages also have there own syntax
- it describes what is valid in a language
when syntax fails...
- have we seen any examples of syntax so far?
- all of the math operations have implicit syntax
>>> 4+
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
invalid syntax: <string>, line 1, pos 3
- this big mess tells us that we had a syntax error
- assignment as well
>>> dave =
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
invalid syntax: <string>, line 1, pos 7
- the nice thing about using the WingIDE is that when you save a file, it checks the syntax and tries (but doesn't always succeed) at highlighting where the syntax error is
- sometimes look at the line right before it if you can't find it on that line
functions
- how did we convert an int to a float?
- another way is to tell the shell you want the value represented by that expression to be a float
>>> float(11)
11.0
>>> float(11)/2
5.5
- float is a "function". What is a function in mathematics?
- A function in Python
- has a name
- has zero or more parameters
- how many parameters does float have?
- generally does something
- often gives us a value
- what type of value does float return?
- a float :)
- Python has many built-in functions. What are some that might be useful from a math standpoint?
- abs (absolute value)
- round
- int (throws away the decimal part)
- many more...
>>> abs(10)
10
>>> abs(-10)
10
>>> round(10.4)
10.0
>>> round(10.5)
11.0
- Another interesting function: type
- gives you the type of the expression
>>> type(11)
<type 'int'>
>>> type(11/2)
<type 'int'>
>>> type(11.0/2)
<type 'float'>