Prototyping a Coding Class for All

We believe that all learners should be exposed to programming regardless of their professional aspirations. Programming develops skills in critical thinking, problem solving, and structured planning through the experience of creating something. In addition to cultivating these important life skills, programming assists in demystifying technology, allowing the learner to make sense of how electronics work in the world around them. As we move into an era of enchanted objectswearable technology, and the Internet of Things, we believe learning programming is vital.

Creative Coding
This semester marks the start of ASB offering Creative Coding in the High School for students in grades 9 to 12. Students will learn the core concepts of programming through personalized projects, explore different methods of interacting with computer programs (Xbox Kinect, mobile phones, etc), and produce creative solutions of their own. In addition, learners will apply the concepts they’ve learned in math, physics, and other subjects within their programs. The goal of the Creative Coding class is to empower every student with the essential skills that coding develops.One of the most important decisions that we agreed for Creative Coding was to use the Processing programming language. The Processing website describes its language as:“…a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.” (Processing.org)

The power Processing offers over other languages is its’ ability to make programming available and engaging to learners that may not have ever tried programming. The code written in Processing creates a visual output that makes it easy for a learner to see what their code is doing. A drawing program can be made in less than 10 lines of code, something that would require a couple hundred lines of code in a language like C++ or Java.

This allows learners to engage in creating programs that are meaningful without have to include libraries, produce extra code, or any of the other hurdles that exist in traditional programming languages. It just works! Processing code looks very similar to and uses the same concepts as the popular computer science languages, making it easy to transition if the learner decides to study a computer science or related field.

We look forward to showing you some of the projects that come from the Creative Coding class in future blog posts.

Type: News

Creative Coding: A Prototype Class in High School

IMG_20160122_152001

Technology continues to change and enhance parts of our lives, from interactive workspaces to the ways we try on clothes. Technology changes the ways we interact, the ways we learn, and even the ways we express our creativity. This makes understanding and developing the ability to create new technology an increasingly important skill.

With this in mind, we envisioned a non-traditional type of programming class for our students, Creative Coding. Check out our chapter on Creative Coding in Future Forwards Vol 5 here.

Type: News

Hacking in the Classroom

HackathonsGame Jams, and the other incarnations of rapid prototyping-style events have been popular at companies around the world. These events create a highly collaborative atmosphere, inspiring participants to create assemble prototypes based on a theme . The limited amount of time participants have to work on their product means that decisions need to be made quickly and implemented immediately. We love hackathons, which got us thinking, how can we use the aspects of a hackathon in the classroom to create a similar atmosphere?

IAS_3786

We planned for our first prototype of adapting the hackathon model to the classroom to occur over the course of one week. We contemplated only allowing students to work on their projects during class but after discussing it with them decided against it. Students can work independently or form their own teams. The theme the students would have to follow would be given to us by a random word generator.

Fast forward to this week, at the front of the room in big letters the word Affection was displayed on a screen. This is the theme randomly chosen for one section of the Creative Coding class. The other section was given the word “Shelf” as their theme.

“How do you even make a program for that?!?” exclaimed one student, but after 10-15 minutes of ideating, every student was developing a project. Titles ranged from “Shelf Sumos” to “Librarian Simulator” and one student is working on a game where the player plays as a piece of pizza trying to avoid being eaten by a gang of pizza lovers.

The challenge of creating something using things that seem completely unrelated often leads to innovation. It may seem weird or impossible at first, but so did the ability to talk to someone on the other side of the world or buy an item without seeing it in person. We’re looking forward to seeing the other takeaways our students have with this activity. Stay tuned.

Type: News

Putting it All Together

With exam week coming up, the Creative Coding class wrapped up Unit 3. This unit had students focus on one project which they developed over the course of 3 weeks. The goals were to get them to use the skills and knowledge they developed in the last two units to create a larger scale project, manage the project using real-world code management tools, and plan out their project’s timeline using milestones.

We started the unit with students choosing whether they wanted to collaborate or work on solo projects. Afterwards, they learned how to use a version control system, called Git, with an open-source, online repository named Github. The combination of Git and GitHub would allow students to easily manage and share their code with one another as well as the open-source community.

One team's project titled, "Curry Simulator"
One team’s project titled, “Curry Simulator”

The students were then given a blank planning document with dates attached to milestones. Each of the three milestones had a specific goal: pre-production, initial prototype, and improving your prototype. During Pre-production, students ideated, chose a project idea, and planned out which tasks had to be completed by each milestone date. The next milestone’s goal was to have an operational prototype of their project completed. For the last milestone, projects had to be improved upon and polished so they were ready for presentation day.

Presentation day had two secret judges that were only announced on the date of the presentation. Throughout the semester, students practiced talking about their code without jargon, so that they could explain what they’re doing and how they did it to anyone. This presentation’s judges had little programming experience and were asked to judge based on the students’ ability to present and explain their projects and process in an easily understandable manner, address any questions about their projects fully, and presentation skills such as keeping the audiences attention, avoiding “um’s”, etc.

The projects the students made varied widely with a majority of students opting to use the Box2D Physics library or the Xbox Kinect. A team of two students created a “Curry Simulator”. During their presentation, the team mentioned how they did research on the different ingredients and types of curries. One of the students on the team called upon the expertise of his mother as part of his investigation.  Another project of note was titled, “Snow”. This student used the Xbox Kinect to display the user on the screen. Snow would slowly fall on the image of the user, allowing them to play, throw, and push it around the screen. Another student created a physics game based on American Gladiator’s Joust. Players would have to off-balance their opponent while keeping themselves balanced on their standing platform. He mentioned plans to work on this project to improve the game’s look and function.

Student's Fruit Ninja style game that uses the Xbox Kinect to control chopping.
Student’s Fruit Ninja style game that uses the Xbox Kinect to control chopping.

On our last class before break, we informed students of the next unit which consists of various games, activities, and challenges made to strengthen their programming skills. One of the planned activities is a hackathon, in which students are challenged to rapidly prototype a project and can only work on their code in class. However, our students discussed the possibility of being able to work on their hackathon code at home as well as in class.

It seems, the longer term, larger scale project has increased their interest in doing projects like this in the future. Open sourcing their projects gave students the feeling of what it’s like to contribute back to a community they learned from. Throughout the unit, one student periodically checked the amount of people that had viewed her project, “Oh yeah! 300 views!”, she exclaimed. Awesome!

Type: News

Exploring Possibilities with Coding

In my previous post about the Creative Coding class, I spoke about our unit on interactivity. In this unit, we explored different ways that students could interact with the programs they create. The goal was to show students that while most of the work is done sitting at a keyboard and monitor, programming is not restricted to this hardware. In addition, some interactions within programs can lead to interesting effects on the user.

With the knowledge and experience gained from the first unit, students were introduced to a variety of hardware and software they could explore using with their Processing code. This hardware included the Xbox 360 KinectLeapMotion Controller, MaKey MaKey, and Android phones. In addition, students were allowed to use a physics library called Box2D and were free to explore any other library they found that interested them.

The projects created ranged from interactive art installations with MaKey MaKey, planetary physics, collisions of 3D spheres, balancing games using the sensors of an Android phonel, and finger painting with the Kinect. One student, pictured below, used the MaKey MaKey to construct a prototype that would help her figure out the chances for a Astros win during baseball games. The “Astros Chair” contained buttons on the arm rest for various statistical record keeping such as buttons for adjusting runs for either team.

Astros_Chair

Learning the words to type and how to create solutions to problems are important criteria for learning to code. Guiding students to explore different hardwares that interface with coding and create experiences with them helps demonstrate the huge impact programming has on the world. Now that they’ve had a chance to explore, we’ll be moving into a 3-week project-based learning unit. Stay tuned!

Type: News

An Update from the Creative Coding Class

Today marks the start of a new unit in Creative Coding in which we explore a variety of different ways that programming can interact both inside and outside of the computer. An example of a project that would fit into this unit comes from last year’s Making the Future class. A student created a game in which the player is being interrogated and upon answering questions incorrectly the player would be “zapped” through a bracelet.

A game project that a student created, using his favorite game as inspiration.
A game project that a student created, using his favorite game as inspiration.

In the previous unit, the students learned the basics of programming and used their knowledge to create projects they were interested in. We saw a variety of projects including a video game in which the player controlled a broom and had to sweep up as much dirt as possible. One student, worked on creating a simulation of a solar system with controls to allow many different planets and even give them their own moons! Other projects ranged from implementations of John Conway’s Game of Life to an elevator simulator to a project showcasing the flags of different countries.

Screen Shot 2015-09-25 at 6.10.49 PM
Student’s Game titled, “Wizard Battle”, inspired by her love of the Harry Potter books.

Being able to pick their own projects has not only helped intrinsically motivate the students, but has led to projects they have invested countless hours in perfecting while learning and applying concepts from Math, Science, and Art. As we move into the new unit, some students are already expressing how much they want to create a program using the Xbox Kinect after being inspired by this youtube video. In addition, this semester’s students have been challenged to make interactions that people have never seen before.

That’s all for now. Stay tuned for more updates!

Type: News

Drawing Life with Programming

The word artificial intelligence often prompts images of robots, self driving cars, or maybe even IBM’s Watson computer. These are all great instances of really complex AI but, there is also a version of AI referred to as “dumb” or simple AI that often goes unnoticed.

Cellular automaton simulation programmed using John Conway’s Game of Life rules. (Wikipedia)

In our Creative Coding class, a group of students are investigating cellular automata (CA), one example of a model that uses simple AI. Natural cellular automata create the patterns seen on some seashells; a pattern that can be resembled using a CA with a simple set of rules. Upon hearing this information, one student exclaimed, “YOU CAN DO THIS WITH PROGRAMMING?!?!” The class continued talking aloud about how cool programming is because it can connect to so many of the topics they learn about in other classes. But hold on, what exactly is a cellular automaton?

A cellular automaton is a model of “cells”. Each of the cells lives on a grid, has a state, and has neighboring cells around them. The easiest way to visualize this is by imagining graph paper. The squares represent a cell, whether the square is filled with pencil or not represents its state, and its surrounding squares are neighbors. A rule or set of rules is then applied to each cell and its’ neighbors to produce a new set of cells with states derived from those rules. The result often times is a program that “lives”. The most famous example, comes from mathematician John Conway’s Game of Life, which he explains in the video below.

You can learn more about about the applications of cellular automata to Science from Stephen Wolfram’s A New Kind of Science and creating cellular automata in Processing from The Nature of Code.

Type: News