Course Home
Check Yourself
Python Errors in English
CodeSkulptor FAQ

Online Lessons

Related Links

Online Development





Friday, August 7

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.

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 check out Google's Python Class.

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

Lunch begins at 11:00, so you'll need to start lining up at 10:40.

A Look Back

This course is about the things that can be accomplished when there's a good working relationship between the hardware in front of you and the wetware between your ears.

To get the computer to do its part, we looked at:

  • Video and exercises from Google's Python Class given by Nick Parlante
  • Nick Parlante's CodingBat challenging Python code puzzles.
  • Codecademy for guided practice in developing Python programs.
  • CodeSkulptor for experience with event-driven and object-oriented programming in Python.

To get our wetware to do its part, we took advice from Barbara Oakley's Google Talk

  • We used the Pomodoro Technique to allow our minds to alternate between focused mode and diffuse mode.
  • We learned to eat our frogs first in order to avoid procrastination.
  • We learned how sleep and exercise can improve our performance in the classroom.
  • We learned to appreciate hiker learning as well as race car learning.
  • We learned how memorization with flashcards and recall with quizzes can help us develop understanding.
  • We learned about the usefulness of bouncing ideas off of our colleagues.

We also worked with each other. We used pair programming to complete the Text scrolling challenge. We used teams to build and assemble the components of Pong. People also cooperated on exercises and programs of their own design.

What's next?

Review Material

We've covered a huge amount of material in a very short period of time. You can revisit any time to review material. I've also added new videos specifically for people who want to review. They feature a different presenter so you can get a fresh take on the material.

There might also be some material that you haven't had a chance to look at yet, like the Googleish programs posted on Wednesday, July 15, or some Codecademy or CodingBat exercises or CodeSkulptor examples.


There are links to ebooks in the left margins of each of the course pages. My favorite is Python the Hard Way.

Python Options After This Course
What if I want to continue to make games with simplegui?
  1. You can continue to use CodeSkulptor for as long as you want. The only caveat is that you have to keep track of where your programs are in the cloud, the class website will not (once the next class starts).Olivier Pirson has written a module SimpleGUICS2Pygame which provides simplegui on a normal Python implementation, using PyGame (which is downloadable) as a basis.
  2. The CodeSkulptor docs also include some pointers to using TKinter and Pygame to convert your code by yourself (select tabs SimpleGui --> Pygame and SimpleGui --> Tkinter). Click on the Demos button in CodeSkulptor, then click on the SimpleGUI->Pygame for info on Pygame or SimpleGUI->tkinter for info on Tkinter.
What are Tkinter and Pygame?

Tkinter is the standard Python interface to the Tk GUI toolkit. If you're running a standard version of Python (like the one you run from IDLE or the terminal), you don't need to install it. You can just import the module. this Tkinter page for more details.

Pygame is a set of Python modules designed for writing games that run locally on your computer (in IDLE or in your terminal). It requires download and installation.

Future courses

I hope everyone in this class will continue to pursue courses in programming and computer science. A good way to introduce yourself to Java is the Greenfoot class that I teach on Saturdays through CTD. I also teach an online Java Honors course through CTD's Gifted Learning Links program, and Brian Meyers teaches an awesome Java Honors course as part of the summer program. If you're particularly interested in math and graphics, I also teach a Gifted Learning Links course on Math and Computer Graphics that uses Java.

A lot of programming is also done in C# and C++. Both of these languages are covered in the Programming in C++ course that I teach online with Gifted Learning Links.

Try out some Java

For the Saturday Java class, I use video lessons from the Joy of Code web site This site is a blog, so the videos are arranged backwards. The first lesson is on page 8. When you're done with page 8, you move on to page 7, and so on, until you get to page 1.

Thursday, August 6



Course Eval

Prepping for EXPO!

Today we'll work on EXPO! projects. If you're done, you can work on Codecademy or CodingBat. If you're done with both of those, you can go further in the class web pages or ask Jimmy for a special challenge!

Sounds from Scratch

Angelina figured out a way to get sounds she recorded in Scratch into CodeSkulptor. The Scratch sounds get saved in WAV format. She uses to convert WAV file to OGG files.

Wednesday, August 5

No study session tomorrow

Tomorrow evening is the talent show!

Pong Game class and Paddle class

Pairs for Paddle class:

  • Charlie/Justin
  • Ronil/Zach
  • Nikky/Ojas
  • Stephen/Ben
  • Declan/Brantley
  • Joe/Elijah
  • Ilan/Seth
  • Taft/Andy
  • Max/Jimmy

The next step in completing Pong is adding the paddles.

Tuesday, August 4

Pong Game class and Ball class

  • Ronil/Ilan
  • Charlie/Justin
  • Max/Elijah
  • Brantley/Nikky
  • Taft/Declan
  • Seth/Ben
  • Zach/Joe
  • Angelina/Ojas
  • Stephen/Andy

We'll take a quick look at the Game class and Ball class we'll use for Pong and then do some pair programming to add the ball to the game!

Helping new neurons survive

For the next few days, we're going to try out a new exercise regimen to help our new neurons grow and thrive.

The RCAF's 5BX Plan in the morning.

Sun Salutations in the afternoon.


Today I'll come around to check in with everyone on their EXPO! plans. If you're not sure what you're going to show, we'll figure something out. You can show any of the work you've done in class, including Codecademy, CodingBat, pair program work, Pong, or any code you've written.

All You Can Eat

Everyone has made great progress so far. Think of this class as an all-you-can-eat buffet. Not everyone has the same size stomach at the moment. Some are more hungry than others. But everyone is getting a taste of everything! Familiarity with variables, functions, parameters, if/else blocks, classes, lists and dictionaries will help prepare you for work with Java.

Sound effects

There are a couple of ways to add sound effects

If you're using sound effects that you downloaded or created, you'll need to put them on Dropbox.

Here's some video help for adding sound to your game:

Angelina found another cool site for sounds

Google Class

Today we'll also make time for more Google material on Lists and Tuples, Dictionaries, or File I/O.

Here is a priorities list. Go down the list one item at a time. When you find one that you haven't completed, start working on it. When you finish that one, find the next one you haven't yet completed and work on that one. The purpose of the list is to make sure you have something to focus on for each Pomodoro. Remember, with the Pomodoro method, your goal is not to complete the task. Your goal is to do focused work for the length of the focused work period. Don't just watch the videos. Play along with a trinket console or your own terminal window (Cygwin for windows or Terminal for macs).

  • List Basics (video and console, quizlet, Strings, Tuples and Lists quiz)
  • Some List Methods (video and console, quizlet, quiz)
  • Codecademy lessons: LISTS & DICTIONARIES -> Python Lists and Dictionaries (lessons 1-9)
  • List Sorting (video and console, quizlet, quiz)
  • Tuples (video and console)
  • Trinket exercises
  • Download for additional exercises (optional)
  • List-1 CodingBat (you can also work on List-2)
  • Video lessons. These lessons don't have trinket consoles with them, so you'll have to use Cygwin or Terminal to play along.
  • Codecademy lessons from LISTS AND DICTIONARIES:
    • Python Lists and Dictionaries -> Dictionaries (10-14)
    • A Day at the Supermarket
  • Codecademy lessons from STUDENT BECOMES THE TEACHER
  • Codecademy lessons from ADVANCED TOPICS IN PYTHON -> Advanced Topics in Python -> Iteration Nation (1-3)
  • Quizlet
  • Quiz
File I/O
  • Video lessons
  • Quizlet
  • Quiz
  • Codecademy lessons: FILE INPUT AND OUTPUT
  • Video walk-through: Word Count. By working through this series of videos, you'll get a sense of how to build a reasonably sized program by taking it one small step at a time. You'll need to use a terminal window (Cywin for windows, Terminal for mac) and a text editor (Notepad++ for windows, TextWrangler for mac).
  • Mimic. This a project that you can download and try on your own.


Diffuse mode activity, sleep, and exercise all make us better learners and programmers, even though they don't directly involve learning or programming. Confidence can also enhance our performance. To learn more about confidence and body language, we'll watch a video by Amy Cuddy.

Monday, August 3

Surveys on Thursday

You'll have one last self-eval on Thursday and one survey to evaluate the course!

EXPO! on Friday

Friday is EXPO! day. Last session we went to lunch at 11am and had EXPO! at noon. During EXPO!, parents can come into the classroom so you can show them what you've been working on. I'll probably say a little something at some point. Parent conferences start at 1pm. Students are welcome at conferences.

CodingBat and Codecademy

I'm seeing some great progress on CodingBat and Codecademy! You'll need to be familiar with classes for the next Pong assignment. The following people should be sure to spend two pomodoros on Introduction to Classes followed by Classes:

  • Ben
  • Brantley
  • Nikky (Classes)
  • Taft
  • Elijah (Classes)
  • Declan (Classes)
  • Zach
  • Seth (Classes)
  • Justin

Classes are also used in most of the CodeSkulptor demos!

Everybody else should spend the first two pomodoros on Codecademy or CodingBat.

Tic tac toe demo

Here's a CodeSkulptor tic tac toe game for you to experiment with. Could you use it to make a CodeSkulptor version of Battleship?

Make a Scoreboard class

Use the videos below to create a Scoreboard class. Start with this scoreboard code.

Here's what you should have after the first video

Media formats for different browsers

The sound files supported by CodeSkulptor depend on the sound files supported by your browser. The best way to see if a sound will work in CodeSkulptor is to see if it will play in the browser you're using. For more info, see Media formats supported by the HTML audio and visual elements.


I've added more video lessons on animation to show you how to move an animated figure across a background image.

Friday, July 31

Moving forward with Pong.

The next stage for Pong is pulling our code into classes. We'll talk about how to get there.

Imposter Syndrome

Barbara Oakley will talk about the imposter syndrome, flash cards, and recall. We will also see a related video by Amy Cuddy.


First pomodoro work period is reserved for Codecademy or CodingBat. Priority is the lessons on classes.

I've added new video to the CodeSkulptor page and the Pong page. If you're not already working on an Expo project, spend at least one pomodoro period on these today. Even if you're already working on an Expo project, these videos might be helpful.

Making a program into a class

After you've completed the Codecademy lessons on classes, check out the Pong page to see how to convert the scoreboard program into a Scoreboard class. Next week, we'll take some completed Ball, Paddle and Scoreboard classes and make them into Pong!

Codecademy and CodingBat

We'll reserve a few Pomodoros for Codecademy and CodingBat today to get ready to move into our final week on Monday!


Next week, we'll finish up Pong. You can prepare by making sure you have:

  • Worked on Introduction to Classes and Classes in Codecademy. If you haven't finished these sections, you should work on them for 90-120 minutes or until you are done. If you finish in less than 90 minutes, you can move on to the next priority item.
  • Completed at least one of the "Something to Try" suggestions on the CodeSkulptor page.
  • If you've completed all of the "Something to Try" items and still have time left, you can try out the StopWatch mini-project.
  • If you've done all of those, you can work on your Expo project.

Thursday, July 30

Here's some sample code to help you see how to position something on a canvas

Week 2 Survey

Fill out this survey and let me know how week 2 is going!

Preparation for Pong: Specialty Teams

Today we'll set up specialty teams for different parts of the Pong project. Specialists need a working program that involves their specialty and they need to be able to explain how it works. Teams are:

Paddle Team

Your assignment is to make sure every member of your team has a CodeSkulptor program that allows the user to use arrow keys to move a rectangle on a canvas.

Team members: Ojas, Charlie, Joe, Ilan, Max, Ronil

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 rectangular polygon. What changes do you need to make to move the polygon and keep its shape?
  5. Add a test to the draw handler to keep the rectangle inside the canvas.

Here is a complete Paddle program.

Ball Team

Your assignment is to make sure every member of your team has a CodeSkulptor program with a ball that moves around the canvas and bounces off the sides.

Team members: Andy, Declan, Angelina, Stephen, Taft, Zach.

Start with this project based on the work you did yesterday with the scrolling text.

  1. Note how x, y, dx, and dy are used in this version.
  2. Make a circle move across the screen instead of text.
  3. Make the circle move in a random direction by setting dx to random.randrange(-10,10) and dy to random.randrange(-10,10). See Standard Modules->Random Module->random.randrange if you'd like to know more about randrange.
  4. When the circle hits a side of the frame, it make it bounce back. Consider this:
    • The center of the ball hits the left side of the frame when x == 0.
    • The center of the ball hits the right side of the frame when x == FRAME_WIDTH.
    • The center of the ball hits the top of the frame when y == 0.
    • The center of the ball hits the bottom of the frame when y == FRAME_HEIGHT.
    • You can reverse the x direction of the ball by setting dx to -dx.
    • You can reverse the y direction of the ball by setting dy to -dy.

The circle doesn't bounce until its center hits the edge of the frame. How could you take the radius of the ball into account to make a more realistic bounce?

Here is a complete Ball program.

Scoreboard Team

Your assignment is to make sure every member of your team has a CodeSkulptor program that displays a counter that is updated by a timer. You should be able to reset the counter to 0 by pushing a button.

Team members: Ben, Elijah, Justin, Nikky, Seth, Brantley

Work in pairs. Start with the opening CodeSkulptor page.

  1. Change the work message to the word score everywhere in your code.
  2. Make sure the code still works.
  3. Instead of setting score to "Welcome", set it to 0.
  4. Try running your code. What happens?
  5. Use the str function to change your draw handler as shown below.

        def draw(canvas):
                canvas.draw_text(str(score), [50,112], 48, "Red")

Change your button handler to add points to the score:

                def click():
                        global score
                        score += 1

Test out your code. Does the score go up when you click?

Something else to try

Can you change your code so to use a timer to increase the score instead of the button handler?

Here's a complete scoreboard program.

Wednesday, July 29

Working memory

Our Barbara Oakley segment of the day is on the role of working memory in learning.


We'll do a couple of Pomodoros on CodingBat this morning. The following people will go out with Jimmy to work on CodingBat at the breakout tech tables:

  • Declan
  • Ilian
  • Joe
  • Max
  • Ronil
  • Angelina
  • Stephen
  • Ojas

The rest of the class will have a short lesson on CodingBat and then do some CodingBat exercises on their own.

CodingBat Do's and Don'ts

  • Use the function header exactly as given
  • Use all parameters as given
  • Use a return statement to provide your answer
  • Indent with the space bar
  • Use literals for parts of the solution that don't change
  • Use parameters for parts of the solution that change
  • Change the function header
  • Leave out any parameters in your solution
  • Use a print statement to provide your answer
  • Indent with the tab key

Quizzes Due

The following people need to complete the Basic Operators Quiz

  • Seth
  • Zach

The following people need to complete the Boolean Operations Quiz:

  • Seth (retake)

The following people need to complete the first quiz on the CodeSkulptor page

  • Joe

We'll also set aside a Pomodoro so you can work on the CodeSkulptor page. That will prepare us for this afternoon's pair programming activity. Priorities are:

  • simplegui quiz
  • simplegui frames quiz
  • simplegui drawing quiz
  • simplegui timers quiz

The Text Scrolling Challenge

This is our first pair programming activity

The video below will explain what pair programming is and why we use it. We'll watch the video together as a group.

Programming pairs
  • Ronil/Ilan
  • Charlie/Max
  • Angelina/Ojas
  • Brantley/Nikky
  • Ben/Taft
  • Elijah/Seth
  • Joe/Declan
  • Justin/Zach
  • Stephen/Andy
  1. Open up
  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!"
            message = "Welcome!"

Tuesday, July 28


Our Barbara Oakley segment of the day is on the role of exercise in learning.

Morning Pomodoros

The following people should spend their first Pomodoro continuing the Functions lessons in Codecademy:

  • Brantley
  • Ben
  • Seth
  • Justin
  • Zach

If you finish Functions in your first Pomodoro, you can move on to working through Returning Results page and the Truth Table page as needed to prepare for the Boolean Operations quiz. Wherever you're at in Codecademy, you should move on to the Returning Results page in your second Pomodoro.

The following people should spend their first Pomodoro working through Returning Results page and the Truth Table page as needed to prepare for the Boolean Operations quiz:

  • Nikky
  • Taft
  • Elijah (retake)

After you have taken the Boolean Operations quiz, you can move on to the Introduction to Classes lesson in Codecademy

The following people should spend their first Pomodoro on Classes:

  • Ronil
  • Ilan
  • Max
  • Declan
  • Andy

The rest of you should be working through Object-Oriented Games. After you have worked through this page, you can design an object-oriented adventure game of your own.

We'll go over a couple of indentation examples:

Event-driven programming this afternoon

More details to come!

Monday, July 27

Room Change for Today

For today only, we're meeting in room 347.


We're starting to move into gaming work this week. There are two programming paradigms that commonly used in game programming: (1) object-oriented programming and (2) event-driven programming.

Our focus for today is to make sure that everyone has finished Taking a Vacation in Codecademy and has some familiarity with object-oriented programming. Tomorrow we'll start work on event-driven programming.

The following people should skip to Introduction to Classes and Classes in Codecademy and then the Object-Oriented Game page. If you have completed this page and created an object-oriented game, let me know. When you finish working through the videos, we can talk about creating an adventure game of your own design.

  • Ronil
  • Charlie
  • Angelina
  • Ilan
  • Max
  • Joe
  • Stephen
  • Ojas
  • Andy

For the rest of the class, priorities are:

  1. Complete all Codecademy lessons through Taking a Vacation
  2. Work through the Returning Results page
  3. Work through the Truth Tables page
  4. Take the Boolean Operations quiz
  5. Skip over to Introduction to Classes in Codecademy. If you have time, also work through the Classes lessons.

Barbara Oakley on sleep

The next topic that Barbara Oakley takes up in her Google talk is the role of sleep in learning.

Friday, July 24

Barbara Oakley on procrastination and pomodoro

Today we'll hear some great tips on how to get through your to-do list.

Work priorities for today

Looks like we're finishing up week one in good shape to start on interactive applications next week!

If you've done 5 or more problems in one CodingBat category, try some from a different category. For example, if you've done 6 problems from String-1, try some of the Warmup-1 or Logic-1 problems.

The Basic Operators Quiz is top priority for the following people:

  • Ronil
  • Charlie
  • Brantley
  • Ben
  • Nikky
  • Taft
  • Justin (retake)

Use the study material on the Basic Operators page as needed.

Priority for Zach and Seth is completion of Conditionals & Control Flow in Codecademy

Moving on

Next week, we start programming with CodeSkulptor, a Python environment you can use to build games. Everyone who has completed Functions and Taking a Vacation in Codecademy will be ready to begin work with CodeSkulptor.

Wherever you are in Codecademy or CodeSkulptor, you goal should be to spend 90 to 120 minutes on developing your programming skills over the weekend. Do not focus on reaching or completing a particular lesson.

If you have completed all Codecademy lessons through PygLatin...

Go to the Basic Operators page. Use the video and Quizlet to prepare for the Basic Operators quiz.

Work on Codecademy from wherever you left off for 90 to 120 minutes.

If you have completed all Codecademy lessons through Taking a Vacation...

Work through the pages on Returning Results and Truth Tables.

Take the quiz on boolean operations from the Truth Tables page.

If you have completed the boolean operations quiz...

Try a couple of the Coding Practice exercises in the trinkets at the bottom of the Truth Tables page.

Work on Codecademy from wherever you left off for 90 to 120 minutes.

If you have completed a couple of Coding Practice exercises...

Try out CodingBat

If you've already completed a number of exercises in one of the CodingBat sets (Warmup-1, Logic-1, String-1, etc.)...

Try working some in another set.

If you have completed more than 30 CodingBat exercises...

Start working through the CodeSkulptor page.

If you've already worked through the CodeSkulptor page...

Start working on a game!

Thursday, July 23

Tasks for today

Your first task after Barbara Oakley is to complete the Self Evaluation for this week.

The following people should start working on the CodingBat page and start working through the CodingBat exercises:

  • Ilan
  • Max
  • Joe
  • Stephen
  • Ojas?

The people listed below should work on the material on the Basic Operators page. When you're ready, take the Basic Operators Quiz.

  • Ronil
  • Elijah
  • Declan
  • Andy
  • Angelina

Everyone else should continue working through Codecademy until you finish Taking a Vacation. Let me know when you're done. If you don't get through Take a Vacation today, you should spend your homework time on Codecademy working towards it.

Priority for today is to complete these Codecademy lessons:

  • PYTHON SYNTAX (Python Syntax and Tip Calculator)
  • STRINGS AND CONSOLE OUTPUT (Strings and Console Output and Date and Time)
  • CONDITIONALS AND CONTROL FLOW (Conditionals & Control Flow and PygLatin)
  • FUNCTIONS (Functions and Taking a Vacation)

Python Errors in English and Codecademy

How can you use the Python Errors in English page to help you debug code in Codecademy? We'll start with a look at SyntaxError.

Send me a trinket

The video shows you how to share the work you do in a trinket. Send me a trinket that you've completed from the Strings page or one of the later pages.

Casual Fridays

I like to wear a Hawaiian shirt on Fridays. Feel free to wear something fun tomorrow. Just be sure to follow the CTD dress code:

  • CTD ID must be worn at all times.
  • Shirts and shoes must be worn at all times
  • Tops and bottoms must meet—no stomachs showing.
  • Underwear must not be visible.
  • Shorts or skirts must be an appropriate length.
  • All shirts must have two straps or sleeves (no spaghetti straps). Low-cut, revealing shirts are not allowed.
  • Clothing must not display profanity or offensive slogans/symbols.
  • Shoes must not have wheels.
  • Other clothing may be deemed inappropriate by CTD permanent staff.

Wednesday, July 22

Soft Skills

A valued programmer is one who has a solid set of soft skills in addition to technical skills. One important soft skill is conflict resolution. One of the best ways to resolve conflicts is to establish good relationships with your colleagues. This will make it easier to resolve conflict and reduce the likelihood of conflicts arising in the first place. The Check Yourself page gives you some tips on creating and maintaining good relationships.

Learning Skills

Since technology changes all the time, programmers must also be skilled learners. Today we'll start looking a Google talk by Barbara Oakley called "Learning how to Learn."

Quiz of the day and trinket exercises

Today I'd like everybody to get through the quiz on strings. After you're done, check out Nick Parlante's video on slices and do the exercises at the bottom of the Strings page.

If you've already taken the Strings quiz and completed the exercises on the Strings page, try out some of the String-1 exercises in Sign in with your email address and the password I'll give you in class. If you need help signing in, watch the video on the course CodingBat page.

Tuesday, July 21

Python Syntax Quiz Due Today

If you haven't taken the Python Syntax quiz yet, today's the day. You should plan to take it right after lunch at the latest. You can retake it as many times as you like.

First Study Session Tonight

Let's go over some details.

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

There are lots of students and only one instructor and one TA for this course. One thing that programmers need to learn is how to manage scarce resources. Before you ask Jimmy or me a question, you should:

  • 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 instructor or TA'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".

Monday, June 20

Welcome to Python Programming: From Games to Google!

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


  • Bathroom. Students need to be accompanied by an adult to the bathroom. Jimmy and I would like to be available as much as possible for Python questions, 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.
  • Morning break. Jimmy will take everyone outside after morning bathroom break.
  • Afternoon break. There will also be a bathroom break in the afternoon.
  • Weather. Depending on the weather, we may take breaks indoors. We won't go out if it's raining or if there's any weather advisory in effect, including heat advisories.
  • 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 Jimmy at 11:10am and return to the classroom at 12:10. 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 TA are both leaving the room the same time as you, you'll have to take your laptop with you. Laptops leave the classroom with their students at the end of each day.
  • 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.

Here's a list of everybody's names:

  • Ronil
  • Charlie
  • Angelina
  • Brantley
  • Max
  • Ben
  • Nikky
  • Taft
  • Elijah
  • Seth
  • Joseph
  • Justin
  • Declan
  • Stephen
  • Ojas
  • Zach
  • Andy
  • Ilan

Ground Rules

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.

Getting Started

You don't need to install Python to start programming in Python. Just go to the first page of lessons, Explore Python.

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, Jimmy 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.


Your homework each evening is to spend one hour on any material from the class web pages or CodeCombat. If you choose to work on CodeCombat, you are expected to create an account to keep track of your progress.

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.

Leone Learning Systems, Inc. (LLS) is a North Shore company that provides online courses for kids anywhere and local teaching and tutoring services for students in Chicago and the Northern Suburbs of Chicagoland. LLS also provides a free geometry software package for children age 6 and up, and free resources for teachers and parents. This site includes information about classes taught, availability for tutoring, learning activities for kids, lesson plans, and ongoing software and curriculum research and development efforts.