The following is a sample curriculum of the course implemented in a ten-week program. The course is flexible enough to allow the class time to explore what interests them and plays to students strengths while still introducing them to a broad range of computer programming concepts.
Week 0
Introduction
- What is programming?
- Hardware vs. Software
- Hardware Overview
- Hands-on with an all-in-one board (Raspberry Pi, Kano, Arduino)
- We will build a computer with peripherals from an all-in-one board like the Raspberry Pi and discuss networking, input and output, and what drives a computer
- Software Overview
- Software as a set of instructions and sequences
- Exercise: Student-led exercise to get computer-like actor to build a peanut butter & jelly sandwich
- How does this relate to computer programming?
- Exercise: Human Computers, students will be assigned areas of responsibility — some will be the math unit, some the display, others the CPU — and will execute a series of instructions
Week 1
Programming with Logo
- Logo, our first programming language
- Introduction to Logo commands
- Exercise: Turtles in Real Life, students will use Logo commands to navigate their classmates around a grid to specific targets
- Our first program — drawing a line with the turtle
- Our second program — drawing a square with the turtle
- Programming Concept: Loops — a framework for handling repetitive tasks
- Hands-on: Converting our first program to use a loop
- Programming Concept: Debugging — how to handle failure and discover why something doesn’t work the way you expected it to
- Challenge: What else can you draw with Logo? Using the basic building blocks from the Logo commands reference, what can the students make?
Week 2
Programming with Python
- Reviewing Logo
- Introduction to Python
- Programming Concept: Variables — how we store data our program is using or will process for us
- Exercise: Mad-libs and Roll the Dice
- Detour: How variables are stored — we look at the physical and logical way memory is laid out for use by computers
- Programming Concept: Blocks — a way to structure our code so we can re-use logic and group sets of operations we might want to perform
- Exercise: Jumping jacks functions and define our own function
- Programming Concept: Program flow — programs are more interesting when they receive input; from a user, from a service, and we learn some tools and techniques for controlling how our program behaves
- Challenge: Building your first interactive program
Week 3
Programming with Python
- Reviewing variables and blocks and program flow
- A detour into how to re-use code and reinforcement of the previous class’s concepts
- Programming Concept: Conditions — related to program flow, conditions allow us to make decisions about what code we will execute given a certain set of circumstances
- Exercise: Conditional Cards, invent your own card game
- Detour: Problem solving — oftentimes, as a programmer, you need to figure out how you might do something in a programming language or platform, and we will explore various techniques for doing so
Week 4
Programming with Python
- Reviewing conditions and problem solving
- Programming Concept: Math — computers excel at math, and we can use this to our advantage and use it to control the flow of our program
- Hands-on: Building a counter
- Programming Concept: Collections and data structures — we explore various ways of storing data
- Hands-on: Playing with lists
- Challenge: Build your own quiz program — using conditionals, variables, and interactivity students will build their own quiz program
Week 5
Building & Designing a Program
- Challenge: Build your own quiz program — using conditionals, variables, and interactivity students will build their own quiz program
Week 6
Intro to Object-Oriented Programming
- Object-oriented programming, an introduction
- Programming Concept: Classes & Objects — a popular programming methodology, object-oriented programming helps us re-use code and model our real world problems in code
- Challenge: Replicate your Logo exercises with turtle objects in Python
- Programming Concepts: API: Application Programming Interface
- Exercise: Make something functional object-oriented
- Programming Concept: Inheritance — a powerful programming concept in which objects can inherit behavior and functionality from other objects
- Mixed Bag:
- Lego Education and Scratch
- A quick detour through building physical structures and programming them
- The students will build a Lego structure and, using the Scratch programming interface, control its movement, utilize the tilt and motion sensors
- MadLibs with Python
- Text Adventure with Python
- Turtle Graphics Programming with Python
- Lego Education and Scratch
Week 7
Introduction to Java
- Reviewing object-oriented programming with Python
- Introduction to Java
- Programming Concept: Compiled vs. Interpreted programming languages
- Object-oriented programming, continued
- Programming Concept: Encapsulation — we revisit API and interfaces and a common object oriented programming technique
- Introduction to Greenfoot, a Java programming platform
- Hands-on: Create a new scenario in Greenfoot and populate it with a custom world and actors
- Programming Concept: Documentation — similar to our problem solving lesson, we will explore typical sources of information about an API or programming language
Week 8
Building & Designing a Game
- Challenge: Build and design your own multi-player program — using inheritance, encapsulation, coordinate planes, the students will build the Hungry Bear Pizza Game in Greenfoot and Java
Week 9
Final Project
- Challenge: Complete the multi-player Hungry Bear Pizza Game
- Challenge: Sensing Space — a project using the Sense HAT for the Raspberry Pi, we will use the various sensors — temperature, humidity, pressure, motion — to simulate activities astronauts have carried out on the International Space Station
- Challenge: Sorting Hat Project — on the Raspberry Pi, students will build a Harry Potter-style sorting hat that will sort students into various groups