Drafting Behind Akamai (Travelocity

EECS 110: Lec 2:
What is Programming?
Aleksandar Kuzmanovic
Northwestern University
http://networks.cs.northwestern.edu/EECS110-s17/
Grading
Grades
Based on points percentage
if perc >= .90: grade = 'A'
elif perc >= .80: grade = ‘B'
elif perc >= .70: grade = 'C'
~ 75% Assignments
~ 25% Exams
Extra ~ 5% Participation
Exams
Note!
Midterm
Final
Wed April 26
Wed May 31
To pass EECS 110, you must have a passing grade on
both the exams and HW. I will also give quizzes in the
class, but they will not be graded.
2
Getting help!
•
Labs
•
•
Recitations
•
•
You should attend the labs because they will have
you solve about 50% of your homework
There will be a recitation class each Friday (1010:50 am): help with the rest 50% of the homework
Office Hours
•
TA1: Friday 1-3 pm (Wilkinson).
•
TA2: Sunday 3-5 pm (Wilkinson)
•
Professor: Tuesday: 9-11:30 (Wilkinson).
Communication
•
Professor:
•
•
[email protected]
TAs:
Annie Akbar, [email protected]
Melissa Perez, [email protected]
Yousef Issa, [email protected]
Kevin Wilde, [email protected]
•
Group e-mail:
•
via Canvas
4
Homework
Assignments
~ 4-5 problems/week
~ 100 points
20-25% extra credit available
Due Sunday evening - by 11:59 pm. You can submit 3 homeworks 1 day later
"Late Days"
Some problems are specified “individual-only.”
Others offer the option of working in a pair.
Collaboration
•You must share the work equally - typing and coaching
•Each of you should make ONE submission (2 per team)
•Be sure to indicate who your partner was at the submission site!
Honor Code
5
Honor Code
•
You may not share written, electronic or
verbal solutions with other students (present or past):
• You are encouraged to discuss problems with
other students, TAs, or instructors.
• You may not share written, electronic or verbal
solutions with other students (present or past):
• Copying of files except those provided by the
course material.
You will have the option of working in pairs for MANY of each
week’s problems: the same guidelines apply for each pair.
6
Book
CS for Scientists and Engineers, by C.
Alvarado, Z. Dodds, G. Kuenning, and R.
Libeskind-Hadas (Note: this is a preliminary
draft!)
Available at:
http://networks.cs.northwestern.edu/EECS110
-s17/cs5book.pdf
• (there is a direct link from the documentation page)
The book is recommended, but NOT required
7
Software and Web site
Web page:
http://networks.cs.northwestern.edu/EECS110-s17/
Programs: Python and Idle
open source, free from
www.python.org
installation instructions on the Web site
MAKE SURE TO DOWNLOAD
python-3.5.1
8
Submission site
https://canvas.northwestern.edu
Problems/issues:
[email protected]
9
Homework problems 3 and 4
Picobot
walls
Picobot
area not
covered
(yet!)
area
already
covered
Goal: whole-environment coverage
with only local sensing…
inspiration?
10
Picobot
walls
Picobot
area not
covered
(yet!)
area
already
covered
iRobot's Roomba vacuum
inspiration!
Goal: whole-environment coverage
with only local sensing…
11
Surroundings
Picobot can only sense things
directly to the N, E, W, and S
N
E
W
S
For example, here its surroundings are
NxWx
N E W S
Surroundings are
always in NEWS order.
12
Surroundings
How many distinct
surroundings are there?
N
E
W
S
24 == 16 possible …
xxxx
Nxxx
xExx
xxWx
xxxS
NExx
NxWx
xEWx
xExS
xxWS
NEWx
NExS
NxWS
xEWS
NxxS
NEWS
(won’t happen)
State
I am in state 0.
My surroundings
are xxWS.
Picobot's memory is a single
number, called its state.
State is the internal context of
computation.
Picobot always starts in state 0.
State and surroundings represent
everything the robot knows about the world
Rules
I am in state 0.
My surroundings
are xxWS.
Aha!
I should move N.
I should enter state 0.
Picobot moves according to a set of rules:
state
0
surroundings
xxWS
If I'm in state 0
seeing xxWS,
direction
new state
N
0
Then I move North, and
change to state 0.
Wildcards
I am in state 0.
My surroundings
are xxWS.
Aha! This matches x***
Asterisks * are wild cards.
They match walls or empty space:
state
0
surroundings
x***
direction
new state
N
0
here, EWS may be wall or empty space
What will this set of rules do to Picobot?
state
surroundings
0
0
x***
N***
1
1
***x
***S
direction
new state
->
->
N
X
0
1
->
->
S
X
1
0
Picobot checks its rules from the top each time.
When it finds a matching rule, that rule runs.
Only one rule is allowed per state and surroundings.
To do
Write rules that will always cover these two rooms.
(separate sets of rules are encouraged…)
hw0, Problem #3
hw0, Problem #4 (Extra)
but your rules should work regardless of Picobot's starting location
Alter these "up & down" rules so
that Picobot will traverse the empty
room…
the empty room
Ideas for the maze?
the maze
Python and Idle
Editor window: code
Shell window: running code
Here, you can save and change
programs. Hitting F5 runs your
program over in the shell
Here, you can try things out at
the command prompt >>>
21
If statements (1)
name = input('Hi... what is your name? ')
if name == ’Ning':
print('x1’)
# is it Ning?
else:
print('x2’)
# in all other cases...
print('x3’)
hw0pr1.py
Homework 0, problem 122
If statements (2)
name = input('Hi... what is your name? ')
if name == ’Ning‘:
print('x1’)
else:
print('x2’)
print('x3’)
23
CS
!=
programming
What is computer science (CS)?
Take EECS 101
CS
!=
programming
What is computer science (CS)?
Take EECS 101
"not equal to"
CS
!=
programming
programming : CS ::
machining : engineering
grammar : literature
Programming
equations : mathematics
CS
a vehicle, not a destination
26
CS == computing science
Study of complexity (or complex things?)
How can it be done?
How well can it be done?
Can it be done at all?
CS == computing science
Study of complexity (or complex things?)
How can it be done?
How well can it be done?
Can it be done at all?
"equal to"
Information
What information does Google work with?
What technical problems does Google face?
Information
What information does Facebook work with?
What technical problems does Facebook face?
Information
What information does the iPhone work with?
What technical problems does the iPhone face?
Computer Science and Information
Information is life’s fundamental building block
CS is a set of fundamental techniques for
understanding and leveraging this information
32
What is programming?
Programming as learning a foreign language
1) Expect it to be different!
2) Don’t feel you need to memorize it
3) Immersion == Experimentation
33
The foreign language of Python…
syntax?
How it looks
semantics?
What it does
intent?
What it should do
name = input('Hi... what is your name? ')
print
# prints a blank line
if name == ’Ning':
# is it Ning?
print( name, '??’)
print(‘You must be a TA!')
elif name == ‘Aleksandar’:
# is it Aleksandar?
print( ‘You must be an instructor!')
else:
# in all other cases...
print( 'Welcome to Python,', name, '!')
34
The foreign language of Python…
syntax?
How it looks
semantics?
What it does
intent?
What it should do
name = input('Hi... what is your name? ')
print
# prints a blank line
if name == ’Ning':
# is it Ning?
print( name, '??’)
print(‘You must be a TA!')
elif name == ‘Aleksandar’:
# is it Aleksandar?
print( ‘You must be an instructor!')
else:
# in all other cases...
print( 'Welcome to Python,', name, '!')
35
The foreign language of Python
syntax?
How it looks
semantics?
What it does
intent?
What it should do
• how punctuation is used
• the language keywords that are used
• use of whitespace
• peculiarities of formatting
• how behavior is affected …
36
HW 0, Problem 2
syntax?
How it looks
semantics?
What it does
intent?
What it should do
• Save hw0pr1.py under a new name, hw0pr2.py
• Change hw0pr2.py to play rock-paper-scissors.
It does not have to play fair!
Feel free to add to the dialog, if you wish…
• Submit your hw0pr2.py in the usual way.
Stepping back from Python for a moment…37