Course Home
Announcements
Check Yourself
Python Errors in English
CodeSkulptor FAQ
Reflections

Online Lessons

Related Links

Online Development

Lessons

Reference

What's next?

Congratulations on completing Python: Games to Google!

Here are some ideas for continuing your adventures in coding:

  • Continue with Codecademy
  • Start or continue with CodingBat
  • Want to learn Java or develop your Java skills further? Check out Greenfoot.org. Greenfoot is a development environment for Java.
  • CTD generally offers a Java programming class in the fall (starting in October) for students in grades 6-8.
  • There is also an Introduction to Java Programming Honors course offered by CTD in the summer. Check the CTD catalog for more information about credit and prerequisites.

Friday, July 14

Student Projects

Below are projects that students have shared so far.

Below is Escape Shepard by Lavanya

Below is the Game of Life created by David and Rohan.

Here are Ten Facts You Should Know from Vinson

Vison's adventure game

Peter and T Oliver's Zombie Survival Game

EXPO! Today!

Your priority for your EXPO! project should be to save a version that works, even if it doesn't have all the features you want to add. Remember, there is no such thing as an ultimate version of Word, or Excel, or Minecraft, or Windows. There are just versions. In general, users would rather have you fix bugs before adding any features.

What We Have Done

Codecademy, CodingBat, CodeSkulptor, Monty Python, Projects

What We Have Learned

Math and Physics

  • Variables
  • Operators (arithmetic, comparison, boolean)
  • Functions
  • Coordinate Systems
  • Boolean Logic
  • Modular Arithmetic
  • Vectors (position, velocity, acceleration)
  • Collision detection

Programming Paradigms

  • Imperative Programming (trinket.io)
  • Procedural Programming (Codecademy)
  • Functional Programming (CodingBat)
  • Object-oriented Programming (Classes in Codecademy and CodeSkulptor)
  • Event-driven Programming (CodeSkulptor SimpleGUI)

Programming Concepts

  • Basic syntax and semantics of Python
  • Variables and data types (numbers, strings, booleans, lists, tuples)
  • Expressions and assignments
  • Conditional and iterative control structures (if, elif, else, for, while)
  • Functions and parameter passing

What do we do when we're done with our Expo projects?

Once you have a version that is complete, test it for bugs. Then ask someone else to test it. When you are satisfied that it is ready to demo, save your demo version. After that, you can work on adding features, or do some Codecademy, CodingBat, or continue working through the Google material on the course web site (Lists, Dictionaries, List Comprehensions, File I/O, Regular Expressions, Utilities).

You can also work on any Codecademy or CodingBat exercises you haven't completed.

Another thing you can work on is An Introduction to Interactive Programming in Python (Part 1) on the Coursera web site.

You can check out Google's Python Class.

If you"re interested in working with Python locally (not on the web with CodeSkulptor), see the sections below.

Programming Locally

CodeSkulptor and other online IDEs allow you write and run Python code on the web. If you want to develop code locally, you can download Python 2.7.13 and work in IDLE. If you'd like a programming environment that looks more like the environment used in Google's Python Class, see the suggestions below.

Using Python Locally on a PC

Using Python Locally On a Mac

Tkinter

SimpleGUI is not available on standard installs of Python. The video below introduces two modules (Tkinter and turtle) that you can use to get some interesting graphics on your local version of Python.

CodeSkulptor provides the SimpleGUI module for interactive programs. However, SimpleGUI is available only inside CodeSkulptor. tkinter is a commonly-used (but significantly more complex) module for interactive programs in Python. The following resources describe how to port programs from SimpleGUI to tkinter.

Examples of converting SimpleGUI code into tkinter, Bill, Fall 2012 & Spring 2013

The examples in this section are from CodeSkulptor docs built by John Greiner. I don"t know who Bill is. --TJ

Here are some examples of converting code from using SimpleGUI to Python's default GUI, tkinter. I"m not a programmer so don"t expect any coding wizardry, but I think these examples will help people looking for a different GUI they can use outside this class. To use these you"ll need to go to the CodeSkulptor link and copy the code into a new window in IDLE or another Python environment. I suggest naming them like I did, but that's up to you. These were coded in Python 3.2.3. Python 3 uses the module name tkinter, whereas Python 2 uses the module name Tkinter. Thus, you"ll need to edit the module name to run in Python 2. In later examples, I"ll show you how to write your code to run in both versions without an edit.

Remember that while the example programs are provided as CodeSkulptor links, they will not run in CodeSkulptor since they use tkinter, not SimpleGUI.

sg_tick_tkinter.py Converts Scott Rixner's SimpleGUI tick function to use tkinter. Details
sg_tick_tkinter_add_tb.py Introduces two new tkinter widgets: Frame and Text. Details
sg_calculator_tkinter.py Demonstrates tkinter widgets Frame, Button, Label, Entry, Text and Scrollbar by converting Joe Warren's calculator example to tkinter. Details
sg_calculator_tkinter_error_check.py Adds Python error checking for divide-by-zero and for non-numerical input. Student project: Extend the error-checking messages. Details
sg_calculator_tkinter_fonts.py Adds font support for Buttons and shows Scrollbar layout error. Details
sg_calculator_tkinter_fonts_layout.py Uses multiple frames to fix the scrollbar problem. Details
sg_welcome.py Converts the Codeskulptor “Welcome!” home page to tkinter. Introduces the Canvas widget and writing text to the canvas. Details
import_example.py Explains import library vs. import library as x vs. from library import * and shows a sample error. Details
z_flag_norway_sudan.py Draws line and polygon shapes to make flags on two Canvas widgets. Runs in both Python 2 and Python 3 without edits. Details
z_flag_maldives.py Adds more shapes on the Canvas. Introduces drawing arcs, ovals, and circles andetting a closer color match. Details
tk_radiobutton_example.py Introduces the Radiobutton widget, shown in two modes. This is a very important widget for many forms. Details
tk_graphical_rpsls.py Converts “Rock-Paper-Scissors-Lizard-Spock” (RPSLS) project to tkinter, with basic graphics. Includes a Scott Rixner mode. Details
tk_gtn.py Graphical version of “Guess the Number” project. Much better layout of Canvas and Frame (Figured THAT out, finally.) Details
tk_scale_0.py Per a request from a student, I made a demo of the Scale widget. You can use this in “Guess the Number” to avoid input errors, plus learn another cool graphical interface. Details
tk_list_selection_example_0.py Demonstrates capturing mouse clicks, per a student request. Details

Thursday, July 13

How Google Search Works

The video below explains the role of spiders in a Google search.

In class, we'll see how you can use BeautifulSoup and Python to find links on a web page and how to follow links like a spider does.

Self-Evaluation

Right after lunch, we'll self-evaluations.

Student Survey

Here is the Student Survey where you can evaluate your experience at Northwestern.

We can also do Quizlet.live on classes today.

Student Projects

Below are projects that students have shared so far.

Below is Escape Shepard by Lavanya

Below is the Game of Life created by David and Rohan.

Here are Ten Facts You Should Know from Vinson

Wednesday, July 12

Why do we have to learn about classes?

Classes are used in all object-oriented languages, including Java, C++, C# and Objective-C. Object-oriented programming is an important programming paradigm. Another one is event-driven programming.

Here is a version of Pong that encapsulates data and behavior of the ball and the paddles.

Below are the flash cards for the Quizlet on classes:

Tuesday, July 11

Expectations for Outside Breaks

Before we go outside today, let's make sure we're clear about what we need to do to watch out for each other and the outdoor environment.

Working Towards EXPO

A number of people expressed interest in doing Pong or a graphic adventure game for EXPO. We'll have some more in-class discussions on these and make sure everybody is clear on what they need to work on.

Here's our work on the paddle from yesterday to download or copy and paste.

Here's the Pong template from the Pong mini-project at Rice University from Week 4 of their Coursera course and the Pong mini-project description. Here are Code Clinic Tips for the Pong mini-project from Rice

Codecademy and CodingBat

If you want to take a break from project work, or if you've finished a project and aren't sure what you want to do next, you can work on Codecademy or CodingBat.

Monday, July 10

Efficient use of time

We have four full days and Friday morning to prepare for EXPO. One way we can have more time to prepare is to be more efficient in getting outside for outside breaks.

As we did last week, students may choose to work through video breaks and only participate in movement breaks.

Another way you can get more time project work is to be excused from lessons. Students can be excused from some lessons if they've already demonstrated enough understanding of the lesson's material. Understanding may be demonstrated through progress in Codecademy or project work that has already been completed.

In order to complete your project, you may need to learn about something that hasn't been presented, or that I won't have time to present. A wide range of video lessons and other resources are available on my web site. If you don't see what you need for your project, ask about it.

Some projects may be too complex to finish by Friday. Check in with me on your ideas. It may be the case that your EXPO project will be a work in progress, or you may decide to build something that you are more likely to complete in time.

A Couple of Demos

On Friday, Arjun came up the idea of making a Game Over screen. If you would like to do that too, here's some code that can help you with that.

We'll look at a version of Zuul for CodeSkulptor that you can use to create illustrated adventure games.

Codecademy Classes

If you haven't finished the Classes unit in Codecademy yet, you can skip ahead to that section and work on it. If you have completed it, you can work on your project or help someone else finish that unit. If you have completed the Classes unit, you can go on to your independent project.

Pair Programming with CodingBat

We didn't have time to do pair programming for Logic-1 in CodingBat last week. Let's get through that today. When you have completed two Logic-1 CodingBat problems, you can go on to your independent project.

Random team picker

Let's use the simple-shuffle.py program to do a random pick of teams before we go outside today. Let me know who's going to play before we do the picking.

Finishing the Paddle

Today we will make our Pong paddle stop when it hits the top or bottom of the canvas. Adam has already done some work on getting the ball and the paddle onto the same canvas. Let's take a look at that as well.

If you can't download the file, click here and copy and paste the code that appears.

Friday, July 7

Self-Evalution

Fill out your this survey for week 2 to give me more data on your progress.

Pair Programming with CodingBat

With your pair programming partner, do at least two Logic-1 problems.

More CodeSkulptor

Take this simplegui quiz based on yesterday's Quizlet.

More CodeSkulptor Challenge

We'll go over how to make a ball move on its own and review Vinson's solution to yesterday's CodeSkulptor challenge.

Today's CodeSkulptor Challenge is: Draw a line on the screen that you can move up and down (but not left or right) with the up and down arrow keys. The line should move as long as you are holding the arrow key down, and stop moving when you lift the arrow key up. Hints: (1) use a variable for the velocity of the line, and (2) use separate handlers for pressing the key down (e.g. keydown) and releasing the key (e.g. keyup).

Extra challenge: Add code to keep the line from leaving the canvas.

Need more help with the Challenge?

You can pair up with a partner and try this:

Start with the Ball velocity example.

  1. Remove conditions in the draw handler and the keydown handler that allow left and right movement, since our paddles will only go up or down.
  2. Get rid of the acc variable in the keydown handler. Set vel[1] to 5 when the down arrow is pressed and -5 when the up arrow is pressed.
  3. Add a key release handler to set the velocity to 0 when a key is released. You will need to do this for each key that is pressed.
  4. Instead of drawing a circle, draw a line. What changes do you need to make to move the line and keep its shape?
  5. Add a test to the draw handler to keep the rectangle inside the canvas.

Codecademy: Classes

A couple of people have started or completed Classes in Codecademy. Everybody should skip ahead to Classes today, because we'll need them next week.

CodeSkulptor Examples

A lot of our examples start with this simplegui template.

Thursday, July 6

Argument Clinic

The first thing we're going to do this morning is have an argument.

Pair Programming with CodeSkulptor

For this Pair Programming exercise, the Navigator should read the directions on this page and the Driver should type in the code. Switch roles after step 6. Remember the rules of pair programming:

Do

  1. Talk
  2. Listen
  3. Rotate Roles
  4. Be Patient
  5. Respect
  6. Take Breaks
  7. Prepare
  8. Clean
  9. Have Fun

Don"t

  1. Be Bossy
  2. Be Intimidated
  3. Be Quiet
  4. Suffer in Silence

Pair Programming Instructions to be Read by the Navigator

  1. Open up codeskulptor.org
  2. On line 11, create a variable named position and intialize it to [50, 112]
  3. In the draw() event handler, replace [50, 112] with the variable position
  4. Test to make sure that the program still works.
  5. In the draw handler, add the line

    position[0] += 1

  6. Test the program again. What happens? Why?
  7. Starting at line 10, add these lines:

    WIDTH = 300

    HEIGHT = 200

    FONT_SIZE = 48

  8. Add this line to your draw handler after position[0] += 1:
    
            if position[0] >= WIDTH:
                    position[0] = 0
    
    
  9. Test the program. What happens? Why?
  10. We can make scrolling a little smoother if we start the text farther to the left. frame.get_canvas_textwidth(message, FONT_SIZE) will give us the length of the message string for the given FONT_SIZE. Try changing the if statement in your draw function to this:

    if position[0] >= WIDTH:

    
            position[0] = -frame.get_canvas_textwidth(message, FONT_SIZE)
    
    
  11. Test out your change. What happens? Why?
  12. It would be nice if clicking the button could toggle the text back and forth between "Welcome!" and "Good job!"
  13. Try changing your click() function like so:
    def click():
        global message
        if message == "Welcome!":
            message = "Good job!"
        else:
            message = "Welcome!"
    

CodeSkulptor Challenge

Here's a CodeSkulptor program that draws a ball that moves around the canvas and bounces off the sides. But there's a problem. The ball doesn't bounce exactly off the sides. It doesn't change direction until it is half way into a side. Can you fix it so that it bounces exactly?

Programming with Class

Today you should skip ahead to "Introduction to Classes" in Codecademy. Everyone should be finished with "Introduction to Classes" by the end of the week.

Wednesday, July 5

Take the list quiz based on the Quizlet we did yesterday.

After the quiz we'll make new random pairs for some more CodingBat pair programming.

When you're done with CodingBat, you can do more Codecademy or work on your project.

This afternoon's Quizlet Live and TestMoz will be on the Quizlet from Introduction to CodeSkulptor

Tuesday, July 4

Happy Fourth of July!

Game loop and FSM review

Talk to me if you're already working on an FSM game or CodeSkulptor game with a partner and would like to be excused from this review.

Project planning

Let's discuss how you can get started on a project with a partner.

CodingBat

We need to make sure that everybody's work has been recorded before we go to the next CodingBat pair programming.

Quizlet on Lists

If you haven't completed the Lists unit in Codecademy yet, you should review the List Basics material before this afternoon's Quizlet.

Student Shuffle

Here is the program I use to make random pairs for pair programming.

FSM Discussion

Here is the star-wars.py file we ended up with after the video.

In our adventure games with finite state machines, we have:

  • STATES
  • A GAME LOOP
  • HANDLERS
  • A FUNCTION CALL TO START THE GAME

STATES name the places in the game. We used FINISHED as a state that gets you out of the loop and ends the game.

Examples:

FINISHED = -1
AIRVENT = 0
DOCKS = 1
TRAPDOOR = 2
INTERROGATION_ROOM = 3
ESCAPEPOD = 4
			

A GAME LOOP picks the handler that goes with the current state and uses it to get a new state.

Example:

def play():
    state = AIRVENT
    while state != FINISHED:
        if state == AIRVENT:
            state = handle_airvent()
        elif state == DOCKS:
            state = handle_docks()
        elif state == TRAPDOOR:
            state = handle_trapdoor()
        elif state == INTERROGATION_ROOM:
            state = handle_interrogation_room()
        elif state == ESCAPEPOD:
            state = handle_escape_pod()
        else:
            print "I don't know how you got here!"
            state = FINISHED
    print "Bye."
			

EACH HANDLER does the following:

  1. Gives the user a description of where they're at.
  2. Prompts the user to make a choice about what to do next.
  3. Returns a new state based on the user's choice.

Example: The air vent handler prints out a string to describe the air vent location and returns TRAP_DOOR if the user chooses "steal":

def handle_airvent():
    description = "You are in an air vent"
    prompt = "Type escape or steal: "
    print description
    choice = raw_input(prompt)
    if choice == "escape":
        return DOCKS
    elif choice == "steal":
        return TRAPDOOR
    else:
        return FINISHED
			

A FUNCTION CALL TO START THE GAME LOOP is added to the bottom of the program to start off the game.

Example:

if __name__ == '__main__':
    play()
			

Monday, July 3

Soft skills

"You can be the smartest guy ever, but I don’t care. I need to be comfortable working every day with you." (So Much for Qualifications: Employers Hire People They Like, Time Magazine, December 2012).

A lot of software development is done in teams, including some of the development we will do in this class. To work effectively in teams, programmers make use of various soft skills. Here are some good soft skills to practice:

  • Listen. People are also more likely to listen to you if you listen to them first.
  • Pay attention to the comfort of others. People will let you know if you are making them more or less comfortable. Here are some ways to check yourself to make sure you are paying attention to the comfort of others.
  • Help other reach their goals. This could be something as simple as packing up or lining up quickly so that other people don't have to wait for you to go out on break. It also means sharing your expertise.
  • Be nice. Being nice contributes to more effective teams and a better learning experience for everyone.

In this classroom, we have a lot of excellent examples of people practicing soft skills. We can all learn from them. Notice the people you like to work and play with and think about why you work and play well together.

How to do Pair Programming

Today we're going to do our first pair programming activities. To learn how pair programming works, we'll watch a video together as a group.

Pair Programming Assignment

We'll create random pairs and do two CodingBat assignments. Then, you will do the following:

  • Decide which of you will be the Navigator and which be the Driver for the first assignment.
  • For the first assignment, the Driver needs to log in to CodingBat and go to the first String-1 exercise on the CodingBat site, called hello_name.
  • To log in, use your email account for id/email. I'll give you the password in class.You must be logged in so that your progress can be tracked properly
  • Navigator and driver should complete this exercise.
  • When you are finished with hello_name, Navigator and Driver should switch roles.
  • The new Driver should log in to CodingBat and do the next exercise in String-1 called make_abba.

When you are done, make sure that both of you have complete working answers for both exercises.

What do I do now?

After your pair programming is complete, you can:

  • Do some more CodingBat problem.
  • Work on Codecademy
  • If you don't already have a Python IDE installed, you can try installing this one.. With an installed version of Python, you might want to check out some online tutorials or download the zuul game shell that I demonstrated last week.
  • Work through the CodeSkulptor lessons on the Introduction to CodeSkulptor and More CodeSkulptor pages. It looks like there are currently problems with saving CodeSkulptor files online, but you can copy and paste CodeSkulptor code into a local .py file using your Python IDE. NOTE: The simplegui module is only supported in CodeSkulptor

Quizlet or Kahoot!

We'll need to figure out what we're doing for Quizlet or Kahoot today. If we decide to do a Quizlet on Lists, you should be sure to see the video on the List Basics page before we start.

Codecademy

The Codecademy goal for this week is to get through Loops. This week, you don't need to complete the project piece for each unit, since we'll be doing plenty of project work outside of Codecademy.

CodeSkulptor

If you have finished the Loops unit, you can start looking at CodeSkulptor on the Introduction to CodeSkulptor page and the More CodeSkulptor pages. These pages include exercises you can work on to develop the skills you need for creating games with CodeSkulptor.

Diversity

This afternoon's talk is "Diversity: What Google thinks about it and what they do about it".

Friday, June 30

Sleep

Sleep is important for human learners because it helps wash toxins out of the brain and turn short term memories into long term memories. If you need help with sleep or stress reduction, check out these sleep resources from MIT.

Self evaluation

Complete this Self Evaluation to let me know how you feel about what you've accomplished this week.

Codecademy goal

If you didn't get a chance to finish up Functions yet, that's your goal for today.

Quizlet or Kahoot?

Does anybody want to work on a Quizlet or Kahoot with the material we've covered this week? You will need to be done with Functions before working on this. It will need to finished by lunchtime.

Adventure game

Here is the shell of an adventure game that I showed you this morning:

CodeSkulptor

Here are links to the CodeSkulptor demos from this morning:

Here's a link to CodingBat

Emotions

One of the questions we considered on Monday was whether computers should have emotions. Today let's back up a bit and consider why humans have emotions. What are the advantages and disadvantages of our own emotions? Could that give us insight into the pros and cons of emotions for machines?

Thursday, June 29

Reflections

If you didn't get me your reflections yesterday, that's job number 1 for today.

Pomodoro: Is 25 minutes too short?

I got some feedback yesterday that 25 minutes might not be long enough for a focused work period. Should work periods be longer?

Codecademy

It looks like most people have at least started on Conditionals & Control Flow. Your goal for today should be to get through PygLatin.

If you haven't completed PygLatin by the end of today will need to work on Codecademy during study session tonight.

If you have already completed PygLatin, you can do one of the following:

  • Continue with Codecademy. There will be more Codecademy to do next week, and you are encouraged to get through as many lessons as you can. Some students may prefer to work through as much Codecademy as they can now.
  • Work on the visual introduction to python at trinket.io
  • Check out Google's Python Class. This class will show you how to set up a local Python environment on your computer. The video lessons were developed for learners with experience in other languages, like Java.

Quizlet and Kahoot

Today we'll get some more practice with operators using the Quizlet cards below:

Then we'll test ourselves using Kahoot!

Wednesday, June 28

Interpersonal and Social Skills

Programmers typically work on teams where interpersonal and social skills are important. We also work in teams in the classroom, as we did yesterday with Quizlet Live and as we'll do later with pair programming and game development. Working on these skills will also contribute to your success as student. We'll discuss ways to practice and grow these skills this morning.

Pomodoro and Reflections

Today we'll start using a Pomodoro timer and writing reflections at the end of the day

Codecademy Progress

You'll be well prepared for next week if you can at least get through Functions by Friday.

Quizlet Live

Today's Quizlet Live will be based on the Quizlet on the Basic Operators page.

Here's your basic operators quiz

Tuesday, June 27

Python Syntax quiz This Morning

This morning's TestMoz quiz is based on the Codecademy lessons in Python Syntax. You need to pass this quiz with no more than one wrong. You'll find some review material on my Python Syntax page. If you get more than one wrong on the quiz, review and retake the quiz until you complete it with no more than one wrong. Sign in with your first and last name.

Quizlet Live This Afternoon

This afternoon, we're going to have a Quizlet Live session. To prepare, work through the material on the Strings page of this site.

After Quizlet Live, take the quiz on the Strings page.

Understanding Python Error Messages

Python error messages can be helpful if you learn how to read them. I've added a resource that explains some common errors. We'll take a look at a few of them together and see how they can help us debug our programs.

Getting Help

People have been using some great strategies for directing their own learning. Here are a few that I've seen:

  • Check the Python Discussion Forum.
  • Try Google. If you type in the word "Python" followed by your question, you'll often get just the answer you need.
  • Try experimenting. Sometimes you just need to try out different things in a Python console or script.
  • Ask a classmate. Someone else in class might have already come across the same problem and found a solution.

If you've exhausted these possibilities, follow these steps to make the most efficient use of your guide's time:

  • Be ready to demonstrate the problem. Make sure the problem is still happening and you know how to make it happen. We can't help you fix a problem if you can't show it to us.
  • Be ready to explain what you've already done to try to solve the problem. That way, your instructor or TA can eliminate possibilities that need to be explored.

Don't suffer in silence! Everybody runs into trouble at some point. Remember Linus's Law: "given enough eyeballs, all bugs are shallow".

What if I don't have anything to do?

If you're not sure what you should be working on at any point in the day, here are some ideas:

  • Work on material from any of the course web pages. Be sure you're familiar with the Strings material for this afternoon's Quizlet Live session.
  • Continue working on Codecademy
  • Play CodeCombat. If you choose to work on CodeCombat, you are expected to create an account to keep track of your progress.
  • Another thing you might like to try is trinket.io.

Monday, June 26

Welcome to Python Programming: From Games to Google!

We will spend the morning getting acquainted with each other and start exploring Python.

Logistics

  • Room assignment.We have so much love for Python this summer that we have to move up to TECH M349 to hold all our students! The Tech building is where most of the university level computer science courses are taught.
  • Bathroom. Students need to be accompanied by an adult to the bathroom. Your class guides (TJ, and Sarah) would like to be available as much as possible to help you with your work, so we'll schedule whole class bathroom breaks. One of us will accompany anyone any time they need to go, but try to go during scheduled breaks.
  • Outdoor breaks. Outdoor breaks will coincide with scheduled bathroom breaks. During that time, you will take your break with two of your class guides while the third watches the computers. You will either go to the bathroom or hang out in the area designated by your guides. You must be in sight of a guide at all times. You arrive in the classroom at 8:30am. We will take our morning outside break around 9:25. You'll leave for lunch around 10:45am so you can be in the lunch room by 11:00am. We will also take an afternoon break outdoors around 1:25pm
  • Pomodoro breaks. We will also take short Pomodoro breaks so we have some kind of break every 25 minutes or so.
  • Food and Drink. Students can bring food and drink for break time. You can drink water in the classroom if it is in a water bottle.
  • Lunch. Students will leave for lunch with their TAs at 10:45am and return to the classroom around noon. This will give you time to walk to the cafeteria, eat, and then have some time to hang out or play outside.
  • Laptops cannot be left unattended. If your instructor and TAs are all leaving the room the same time as you, you'll have to take your laptop with you.
  • Noise Level. There are Northwestern students and faculty at work in this building. Noise level should be adjusted appropriately, especially in hallways.
  • Homework. CTD requires one hour of homework per day. We'll go over details this afternoon, when it will make more sense.
  • Headphones. If you have your own ear buds or headphones, you are welcome to bring them. Otherwise, headphones will be provided to you.

Getting to Know Each Other

Let's take some time this morning to learn a little about each other.

Fill out this survey so we have an idea the knowledge you have to share and what you want to learn.

How do you learn best?

Getting Started

You don't need to install Python to program in Python. Here's how to get started:

  • Send an email to tj@tjleone.com so I'm sure I have your correct email address. If you don't have email, let us know and we'll set you up.
  • Get your Codecademy login from TJ or Sarah. Log in to Codecademy and start learning some python!
  • After you've done a few lessons, feel free to do some more, or go to the first page of this sites lessons, Explore Python to do some free exploration in Python.

Getting Help

We'll discuss different ways to get help from your peers, class guides, and the internet. For now, a good Codecademy resource is the Python Discussion Forum. You can also raise your hand. Guides will try to work with students in an order and length of time that seems fair. We'll work out a more formal way of spreading our expertise as the course goes forward.

Review of survey

Some time after our first break, we'll go over the survey as a group

Code of Conduct

Every work environment needs ground rules to keep things running smoothly. Here are some to get us started:

  • Treat others as you would like to be treated.
  • Respect other people and their property.
  • Laugh with anyone, but laugh at no one.
  • Be responsible for your own learning.
  • Do not disturb people who are working.

We'll discuss ground rules throughout the course, and add or change rules as needed.

What should be the consequences for breaking a rule? Here are three types I use:

  • You break it, you fix it.If something is taken, it should be returned. If something is broken, it should be replaced. If someone is physically or emotionally hurt, the damage should be repaired.
  • Temporary loss of privilege. If someone misuses bandwidth, they temporarily lose internet access.
  • Take a break. Sometimes students need some time away from a situation to clear their heads.

Any other ideas?

What should be the consequences for following the rules? We'll discuss this more in days to come.

Developing Talent

Since we're part of the Center for Talent Development, we need to discuss how to make this classroom a good place for developing talent. This is another topic we'll come back to throughout the course.

  • Everyone in this room has demonstrated the potential to develop cool software. Your job over the next three weeks is to develop that talent.
  • Each of you are already at different points in developing that potential. It will take more or less effort for you to develop your talent in different parts of the course. The thing to focus on is maintaining the effort to improve.
  • In order to create an atmosphere that supports continual development, part of your job is to encourage others.

Where Did Python Get Its Name?

Python was not named for the snake. It's inventor, Guido van Rossum, had a different Python in mind.

Python Setup

You can do most of the Python exercises through your browser, but at some point in the course, you'll probably want to run Python locally. Check out this web page to see if you already have Python installed and make sure you have the right version. If you need help with installation, Sarah and I will be available, and there will probably be other students who can help you as well.

A local version of Python won't be necessary until some of the later activities. As long you have a working browser, you'll be able to complete all the activities for at least the first week.

Code Combat

Sarah will show you how to get into CodeCombat and join the class.

Homework

For your homework, you can:

  • Work on material from any of the course web pages
  • Continue working on Codecademy
  • Play CodeCombat. If you choose to work on CodeCombat, you are expected to create an account to keep track of your progress.
  • Another thing you might like to try is trinket.io.

About the Center for Talent Development

Center for Talent Development (CTD), housed at Northwestern University's School of Education and Social Policy, is an accredited learning center and research facility that identifies, educates and supports gifted students and their families and serves as a leader in gifted education. Learn more about the Center for Talent Development.