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

Online Lessons

Related Links

Online Development

Lessons

Reference

eBooks

Python Programming: From Games to Google

  • For students completing grades 4-6. Middle school students may also apply.
  • Course Description: Python is a powerful programming language that is used to drive the Google search engine, YouTube, and applications at NASA and the New York Stock Exchange. It has also been used to build many popular computer games. Because of its power, simplicity and complete object model, Python is an ideal language for learning the fundamentals of object-oriented programming, which prepares students for further Python development and can be applied to other object-oriented languages like Java and C++. Students learn to create Python scripts that use expressions, variables, conditionals, loops, lists, dictionaries, functions and objects. The course draws on a variety of resources, including video, interactive learning environments, and an online development environment that help students build their own computer games.
  • NOTES: Students are required to bring a laptop computer for use in the course. Eligible for Sandra Dennhardt or Gary Greenberg Technology Scholarship.
  • OFFERED: Session 1 (June 25 - July 14, 2017) & Session 2 (July 16 - August 4, 2017)
  • HOURS: 8:30 am to 2:45 pm
  • ADMISSION CRITERIA: EXPLOREŽ test; OR ?95th national percentile rank in math on standardized achievement test; OR Admission Portfolio
  • Location: Evanston Campus
  • view syllabus for session 1 view syllabus for session 2

Course Formats

In addition to whole class, small group and one-on-one discussions, lessons are delivered in a range of online formats to support independent study and differentiate instruction based on your needs.

  • Video Lessons on various topics
  • Readings with problem-solving tips
  • Examples of solutions to sample problems in text and MicroWorlds project formats
  • Problems for you to solve, with solutions
  • Study Material for Exams with solutions
  • Support Material for Project Development including online documents and sample projects
  • Email Accounts for communicating your reflections, questions and concerns about the course and its content, and receiving help
  • Course workspace with more details on course requirements

Python

Python is used daily to drive the Google search engine, YouTube and applications at NASA and the New York Stock Exchange. In the previous Python course, you built games using the predefined classes and simplified framework of the MicroWorlds development environment. In this course, you will learn to build classes from scratch as they develop their own game engine. This understanding of object-oriented programming will serve them in further Python development and can readily be applied to other object-oriented languages like Java and Objective-C.

The learning objectives of the course are guided by the documents Computer Science Curriculum 2013, from the Joint Task Force on Computing Curricula. The Computing Curricula volumes are developed jointly by the ACM and IEEE Computer Society.

This page does not include anything about software development methodologies like agile or design patterns or refactoring or any of that stuff. That will come at another time on another page.

What does Python programming look like?

The video below introduces you to Python and gets you started on Python programming. The video will show you how you can run Python yourself from this web page.

Click on the right-facing triangle below to run the Python code in the window.

Click on the pencil above to see the code again.

You can also execute Python in a console like the one below.

How can I save or share my trinkets?

The code you write in a script trinket (any trinket with a right-facing triangle button) has sharing and other features. The video below shows you how to make your trinket full screen and how to email it.

How do I get Python for my computer?

There are a number of different Python programming environments. Many of your programming activities will take place online.

There are also different options for running Python locally. The most important thing to keep in mind here is that the examples and lessons in this course are designed for Python.x (for example, 2.6 or 2.7), not Python 3.x. Here are suggested options:

  • Python with IDLE version 2.7.13 is available for many platforms, including Windows, Linux/UNIX, and Mac OS X.
  • Windows users will need to get the Python with IDLE mentioned above. The IDLE environment is usable, but for some applications you'll want a nice Unix-style console. For that I recommend cygwin
  • Linux users will have Python, but you should check which version you have. Open a terminal window and type Python -V or Python --version If you see something like Python 3.3.2 (a 3.x version), let me know, and we'll figure out how to set you up with a 2.x version.
  • If you have a Mac, you probably already have a 2.x version of Python installed. Open Terminal (Applications->Utilities->Terminal) or your favorite alternative (I like iTerm2). At the command prompt, type Python and press Enter. If you get the >>> prompt that you see in the trinket console window, you've got Python!
  • For Chrome, you can get a console by entering developer mode.

Editors

To edit files, you can use IDLE or your favorite text editor. For Windows, I recommend Notepad++. For the Mac, I like BBedit.

What's going to happen in the classroom?

The theme of this course is "Games to Google". We'll spend most of our time learning about processing text, since that's a core part of Google's business.

To keep things interesting, we'll use Python's text processing power to build games. We'll also spend some time building 80's style arcade games.

What will students learn in this course?

Not all of the content below will be covered in the course. I always plan for more content than I can possibly include in a single course because I want to make sure everybody gets their fill. Not all kids will receive all of the same content

In other words, this is an explanation of the nutritional value of the class, not its flavor.

The curricular material below was selected from the Computer Science Curricula 2013

Core Concepts

  • Basic syntax and semantics of a higher-level language (Python)
  • Variables and primitive data types (e.g., numbers, characters, Booleans)
  • Expressions and assignments
  • Simple I/O including file I/O
  • Conditional and iterative control structures
  • Functions and parameter passing

Programming Paradigms

Python code can run with or without defined procedures. In addition, programmers can optionally add features found in object-oriented languages like Java or C++ (classes, fields, methods and inter-object communication) or functional programming features like those found in LISP (e.g., map(), reduce() and filter()) or Haskell (list comprehensions and generator expressions). There are also extensions of Python that support event-driven programming.

In this course, students will be engage in imperative, procedural, event-driven and object-oriented programming, with some exposure to functional programming.

Software Development Practices

Students will learn about unit testing by performing provided tests on their code. They will also engage in pair programming.

Learning Outcomes

Levels of Mastery

For technical skills, different levels of mastery are expected for different outcomes. Three levels of mastery are considered:

  • Familiarity: The student understands what a concept is or what it means. This level of mastery concerns a basic awareness of a concept as opposed to expecting real facility with its application. It provides an answer to the question "What do you know about this?
  • Usage: The student is able to use or apply a concept in a concrete way. Using a concept may include, for example, appropriately using a specific concept in a program, using a particular proof technique, or performing a particular analysis. It provides an answer to the question "What do you know how to do?"
  • Assessment: The student is able to consider a concept from multiple viewpoints and/or justify the selection of a particular approach to solve a problem. This level of mastery implies more than using a concept; it involves the ability to select an appropriate approach from understood alternatives. It provides an answer to the question "Why would you do that?"
Technical Skills
  • Analyze and explain the behavior of simple programs involving the fundamental programming constructs variables, expressions, assignments, I/O, control constructs, functions, parameter passing. [Assessment]
  • Identify and describe uses of primitive data types. [Familiarity]
  • Modify and expand short programs that use standard conditional and iterative control structures and functions. [Usage]
  • Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, the definition of functions, and parameter passing. [Usage]
  • Write a program that uses file I/O to provide persistence across multiple executions. [Usage]
  • Choose appropriate conditional and iteration constructs for a given programming task. [Assessment]
Soft Skills
  • teamwork
  • verbal and written communication
  • time management
  • problem solving
  • flexibility
Personal Attributes
  • risk tolerance
  • collegiality
  • patience
  • work ethic
  • identification of opportunity
  • sense of social responsibility
  • appreciation for diversity

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.