Facilitating Multiple Programming Languages in One Space
In this episode I describe considerations for facilitating multiple programming languages in one space.
-
I've had the privilege over the years to
work with every single grade
kindergarten through doctoral student
but my fourth through eighth grade
coding classes were a lot of fun to
facilitate because kids could code music
using Ruby and Sonic Pi create art and
animation with JavaScript and Con
Academy create apps for iPads and
iPhones using Swift swift playgrounds
and xcode or create a variety of
projects in scratch this was fun for the
kids because they had options to pick
from but it was also fun for me because
I was facilitating multiple programming
languages in the same class today's
podcast uses slides from my csta
presentation this summer to talk about
how I facilitated multiple programming
languages in one space because I saw
hundreds of kids who were required to
attend my classes I ask questions like
how do we differentiate for students who
are required to attend and aren't
interested in computer science or are
already pursuing a career path outside
of computer science or have a wide range
of computer science experience I
literally had some students who had
never seen a computer before and others
who regularly go home and program that
was quite the range of experiences what
about students who have varying access
to devices or internet at home or have
various accessibility needs and
accommodations or have variegated
identities and interests or just want to
impact the world in ways that we haven't
considered instead of using a sequential
design where everyone went at the same
pace through the same project sequence
my solution to these questions was to
use a romatic design where students
could start with or create whatever
project sounded interesting to them and
they could then move on to any other
project that interested them on any one
of the languages and platforms available
to them I provided a variety of project
options from fix projects where students
create projects with similar results to
more open-ended projects where students
created something with results I
couldn't predict I did this not only
through a variety of project types but
the option to code with blocks and
scratch Ruby and Sonic P Java script in
Con Academy or Swift in both Swift
playgrounds and xcode now I'm going to
play a video that I made for the school
board presentation back when I was still
teaching in the classroom in this video
I asked students to just share why do
you like coding and in the video if you
actually watch this on YouTube you
should be able to see some projects that
students created and there's quite a
variety of them so let's take a listen
to this or watch if you're watching this
on YouTube we create a lot of things
with technology at Desert Thunder with
scratch we make video games stories and
more I like um coding because I have the
ability to make my own games and do
anything and it's pretty much Limitless
and I can also choose like if I want to
change something that I don't exactly
like and another person's game I can get
the opportunity to change it without
actually changing their original game I
think coding is a good way to express
your feelings and it's a better way to
learn it's it's better than using
textbooks so so far we've had like a
race car project we had a project that
where a student created a simulation of
a computer and was an old computer
intentionally and so it had viruses and
you can like download an antiv virus and
it had games all sorts of fun stuff like
that I like coding because I get to like
code games and like help people with
their own coding now I got a Pokemon
game they might need help or I just
might need like snake multiplayer that
happen I like coding because you get to
create games that you like to
doing because when you grow up make
games and uh you can be a game maker and
well yeah you could be a game maker you
can make some money and you can make
apps for everyone to play I like coding
because you can do whatever you want and
no limit to your imagination we use
JavaScript to create art and animation I
like how technology is something that
you can express what you want on a
computer and how you can make any video
game you want or any type of coloring
you want or like drawing and I I like
how you know that's that's just like I
think it's kind of cool that we can do
that now we've got a bunch of different
projects in JavaScript so in JavaScript
you can create art and animation and
whatnot so we've seen like a bunny
rabbit we've seen like their favorite um
soccer or football team logos and like
an animated bus stopping at a bus stop
like there's a lot of really interesting
stuff that like I wouldn't have thought
of like hey student would you be
interested in making a bus and animating
it and stopping it at a bus stop so it's
really interesting to see what these
students were able to come up with we
get to do a lot of coding and do
drawings and lot of Goode blimp flying
over house let's say making a monkey
dance and twirl around I like coding cuz
I learn new things I like coding because
it's easy and fun I like coding because
I gives it gives you the opportunity to
make your ideas come into an actual
thing that people can do and use I like
coding because you can be creative I
love coding because you get to make your
own games and you get to make your own
music we even use Ruby to make music
with Sonic p in fact all the music
you've heard in this video has been
created through code by kids at Desert
Thunder I like so all the background
songs that you were listening to were
created by kids with code and so on the
screen if you're watching this is a
bunch of code on the left hand side that
students wrote out and on the right hand
side you can see what is being played at
that moment uh on it so Ruby you're able
to create all kinds of stuff in Sonic P
using very syntax light language to be
able to code live music or composed
music coding because we're able to make
music and do other projects that other
people do and remix them I like coding
because you can actually make money off
of it you can grow up to be a great
magician
musician and you can actually make music
for yourself one day I like coding
because you can make music on Sonic pie
and because you can make um you can
remix other people's projects and make
them better kids also have the
opportunity to engage in professional
app development with swift they have a
lot of apps that they can choose from
and I've created some guides that show
you how to create nap from the very
beginning it starts off with showing you
how to create your own interface where
you drag and drop your buttons images
labels things that so it's now showing
some of the tutorials that I created and
this was before I became like a
full-time curriculum developer I was
just making this stuff for my classes
and they are available on my website
they are probably very much so out of
date in terms of like uh not up to the
latest language of Swift I was using
Swift 3 at the time it's probably on
like s Swift 10 by now but if you're
interested in it you can find it at
jal.com Swift you're going to use to
make the interface look good and usable
next it actually walks you through how
to code all those buttons and things
that you've put into your interface
shows you descriptions and go step by
step on how to actually create The Code
by the time kids get all the way through
it they've uh coded a lot to create
their app and they can actually use it
on their I devices and put it on the App
Store the Media Arts and Technology
maker space is now we had a middle
school elective and this class had a
weight list where students um there was
like way more who wanted to attend than
would sign up some students would even
put on like the elective sign up the
only thing they put was the Media Arts
and Technology maker space and they'd
say this is the only class I want do not
put me in anything else so it was a very
popular class because students were able
to do all this coding stuff and then
everything else that you're going to
hear or see in the this video is a
middle school elective with a lot of
project options available kids often
will create pixel art for their favorite
video game characters or short
animations some will create stop motion
movies or short films and then others
will create music and more I like stop
motion because I can like make my own
movies make my own movies and stuff and
I have a lot of stuff in my mind I like
now I'm pausing it again so some of the
pictures that you might not be able to
see like students are creating Play-Doh
drum kits and they're attaching it to
Mickey Mickey so they can play with that
or there's a student who's holding up a
method book for their band class and
they are taking what they were learning
in their band class and writing it out
in Ruby in code and basically
transcribing it into there some students
also did that in scratch as well so it's
really interesting to see how the
intersections that students were
creating with like some of the other
other classes bringing that material
into here and finding a way to recreate
it with
code um this class because we get to
make the projects our own it's a great
way to learn and it's more um modernized
since like it's more an interactive way
for kids to learn that other than just
reading it out of a textbook because
you're actually like interacting with it
more and you feel like better about
school and you're not bored it's good
for like kids of all ages they could
like career out of it if they get like
really good in the high levels they
could have like make a job coding is fun
but sometimes hard it makes you focus
more hi I'm William I like to code
because you can make your own stuff and
every time you code it's basically like
a new
experience and every time you code it's
basically it's basically you're the
master of Your World bye this is just a
I love how he ends with bye so if you
want to see that full video without me
interrupting it I'll include a link to
that in the show notes the video is
exactly 5 minutes long so it's pretty
short now just to be clear everything
that you just heard or saw in that video
was not something that I started with on
day one of my teaching especially since
I don't have a background in computer
science I started with one language and
platform and gradually expanded to new
languages and platforms each semester
and this is the approach that I'd highly
recommend if you're interested in
considering doing something similar if
you want to facilitate multiple
programming languages in one shared
space look at the long term and figure
out what you'd like your kids in your
class to be able to do or create a year
or two from now and then figure out what
you would need to know and be able to do
to be able to facilitate that kind of
experience or even what kind of
resources you might need to create like
some of the step-by-step guides that I
created for Swift because everything
else that I was Finding was geared
toward adults rather than something that
a middle schooler or even had some
fourth graders go through those
tutorials now let's talk about some tips
for selecting a language or platform
when I was determining a new language or
platform to introduce into a classroom
and I ask myself questions like does
this new language or platform afford new
creative or expressive opportunities for
example kids felt constrained by the
music options in scratch which is
something that I talk about in other
podcast episodes on the intersections of
music and computer science so I
introduced Sonic Pi which allows people
to live code or compose music with the
language Ruby even though all of my
degrees are in music education the
language and platform was chosen in this
scenario because students expressed an
interest in expanding their music making
abilities with code not because I was
interested in it another question is to
consider how well do you currently know
the language or platform and how quickly
could you learn it if the syntax is
similar to another language then it
might not take a lot of time or effort
to add it to the list of options however
you also need to consider the layers of
support built into the platform you're
using for example will the platform be
self-guided like code.org or Con Academy
or will it require you to create
resources or provide more one-on-one
support like I had to do with swift if
you have the time to create resources
great if you don't perhaps select from
options that have a robust set of
student facing materials that are age
appropriate because that will make it
much easier for you to facilitate
another thing to consider are the entry
points our students always creating from
a blank slate or are there opportunities
to remix existing projects or build off
of half completed projects so for
example is the platform easy enough for
a beginner in other words does it have
low floors is it complex enough for
advanced student students so does it
have high ceilings and does it have the
opportunity to create a variety of
projects so does it have wide walls
check out the interview with Mitch
Resnik if you want to learn more about
the concepts of low floors High ceilings
and wide walls which I'll link to in the
show notes now let's talk about some
implementation suggestions so once you
have more than one option I'd recommend
starting each semester spending at least
one entire class period exploring the
kinds of projects that a student might
create in one language before moving on
to the next language in the following
class after cycling through each of the
available options give students the
opportunity to choose their own path
moving forward however one of the things
that I felt was important to let
students know is that they had the
opportunity to switch languages or
platforms or projects whenever they
wanted to so they weren't stuck with the
decision that they were ultimately
unhappy with there have been so many
projects in my own Leisure and whatnot
that I thought would be interesting that
I ultimately sat aside in favor of
something else I personally don't see a
problem with students moving on to
something that better pequs their
interest as long as they're not just
giving up Midway through because
something is difficult because students
were also coming up with their own
projects or were selecting from some
starter projects and prompts that I
created deadlines were completely
flexible some students worked on a
project for a couple of days while
others literally spent multiple years
adding onto their game my admin was okay
with focusing on process rather than
product so that worked out really well
for me to support Justin Time learning I
used the following process that I
displayed on the board for every single
class it's called the if you need help
list step one was to check the build
buil in help or resources also known as
rtfm which the familyfriendly version
would be read the free manual step two
was to ask a friend for help step three
was to ask another friend for help and
then step four if I'm not working with
somebody is to ask me otherwise the
students were supposed to repeat steps 1
through three this approach encouraged
peer-to-peer learning and I would often
answer a student's question by helping
them find another student who I knew
could answer that so if Johnny came up
and was like Hey I need help with player
controls be like great Susie is
fantastic at player controls go talk to
Susie about that if you want to learn
more about peer-to-peer to learning
through a simple assessment process
check out episode 193 of the ck8 podcast
which is titled critical response
process now I was able to implement this
support system and spend the majority of
my time working one-on-one with students
because my classroom was set up like a
racetrack with two rows facing the
outside walls and two rows facing the
inside of the room this allowed myself
and kids to walk around the room and
relatively easily see about 75% of the
screens at any moment as I walked around
the room the setup was much easier
easier for peer-to-peer collaboration
than rows facing the front which limit
the ability for students to move around
or for you to see all of the screens
unless you're standing at the very back
of the room another option that you
might actually do is to have pods or
columns facing inward to encourage
dialogue for example creating PODS of
students working on the same platform or
language but my favorite room setup was
a doughnut where all of the tables face
the walls on the outside of the room and
the center of the room had tables for
unplugged and collaborative work this
approach not only allows you to easily
monitor all of the computers but it
makes it easy for students to get up and
ask for help if you want to learn more
about these setups check out episode 195
which is titled how to set up your
computer lab and elaborate on those
Concepts in that particular episode now
while I was walking around the room I
asked a variety of questions so I'm
going to skim through some questions
that are on the slides kind of very
quickly because you can check them out
in your own Leisure and listen to the
podcast episodes Linked In the show
notes that talk about it but there are
some starter questions questions for
stimulating computational thinking some
assessment questions some discussion
questions there's also questions around
different levels of thinking like memory
translation interpretation application
analysis synthesis and evaluation as
well as some different types of question
types like open guided and closed
analytical judicial and creative Etc but
if you want to hear more about these
different question techniques that I
just very quickly went over that I was
using frequently while I was
facilitating multiple languages in one
shared space check out some of the
podcast episodes and the show notes but
as a very quick summary of like the
approaches that I'd use I would often
pose writing questions to a student and
then walk away to go and help another
student and then I'd Circle back to that
first student after a few minutes just
to check in on their progress if a
student asked a question that I knew
someone else struggled with previously
again I'd kind of pair them up with them
to kind of encourage that peer-to-peer
learning with each other another thing
worth noting is that when I was first
learning a language or a platform I'd
tell students when I didn't know an
answer to a question I'd write their
question down and then I'd come back the
next day and explain not only the answer
to their question but also how I found
an answer to their question so that way
they can learn how to teach themselves
in the future now in general you could
describe this approach as facilitating
multiple languages and Platforms in one
space through one-on-one coaching and
peer support it required a lot of prep
work on my end in terms of learning the
languages platforms curating and
creating step-by-step guides developing
classroom norms for peer support etc etc
however the actual facilitation side of
things was relatively easy because I
spent the majority of my day helping
kids problem solve their bugs by asking
guiding questions without actually
giving them direct answers to the
questions usually speaking this approach
was very different than what most admins
were looking for in a classroom so I
created a crosswalk document that
actually translates the tap teacher
evaluation system that my district used
into language that made sense for this
approach to Computer Science Education
and we would give this document to admin
who were unsure how to evaluate what
computer science Educators were doing in
the district I'll include a link to this
in the show notes but it's a fairly
lengthy document because it goes through
every single step on the rubric of how
teachers were being evaluated in the
classroom and it translates it to what
it would look like in a computer science
class that allowed you to facilitate
multiple languages in one shared space
this approach to teaching multiple
languages simultaneously was based off
of a philosophy of learning called
ristic learning and this can be applied
to a single language or platform or in
multiple again in the show notes I'll
include links to some podcast episodes
that talk about this now if this
approach is too overwhelming for you
right now because you are new to
computer science and computer science
education I highly recommend checking
out episode 192 which is titled how to
get started with cs education
professional development it is great
however most professional development
does not give you the depth that you can
find in the resources that I provide in
that particular episode I say this with
confidence because I have developed over
almost three times that amount in
podcast interviews and episodes where I
unpack scholarship in relation to
Computer Science Education or these
professional development sessions where
I kind of like walk you through how to
do something like set up your computer
lab or whatever so check out episode 192
if you're interested in finding some
more resources that will guide you
through different phases or stages of
being a computer science educator after
a couple of semesters of teaching
computer science with one language or
platform you might be able to start
embarking on a romatic journey to get to
the point where you can start teaching
multiple programming languages in the
same space at the same time now for
those of you who have been listening for
a while you'll notice that I stopped
doing the weekly podcast episodes and
the reason why is because I am now
cycling through creating a podcast
episode a SCP tutorial and a drumming
tutorial so I'll have a new podcast
episode coming out roughly every 3 weeks
or so I'm just trying to make sure that
I don't get burned out with all the
computer science gaming and drumming
content that I create which I'm having a
lot of fun with but it takes a lot of
time to create all the content that I
make so I've got literally thousands of
videos on my YouTube channel so stay
tuned for plenty more content and if you
enjoy this stuff that I create just
consider sharing it with other people as
it helps more people find it stay tuned
for a future episode until then I hope
you're all staying safe and are having a
wonderful week
Resources/Links Relevant to This Episode
Other podcast episodes that were mentioned or are relevant to this episode
Applications of Affinity Space Characteristics in [Computer Science] Education
In this episode I unpack my (2020) publication titled “Applications of affinity space characteristics in music education,” which has twelve characteristics of informal learning spaces that I will discuss in relation to computer science education.
In this episode I talk about how you can use Liz Lerman’s Critical Response Process to encourage feedback and dialogue among students around the projects they create.
Fostering Intersectional Identities through Rhizomatic Learning
In this episode, Jon Stapleton and I read our (2022) publication titled “Fostering intersectional identities through rhizomatic learning,” which uses mapping as a metaphor for individualized learning.
How Do You Encourage Critical Thinking and Dialogue?
In this episode I discuss an approach I’ve used for encouraging critical thinking and dialogue through individualized feedback and group discussion.
How to Get Started with Computer Science Education
In this episode I provide a framework for how districts and educators can get started with computer science education for free.
How to Setup Your Computer Lab
In this episode I provide some suggestions for setting up your computer lab and talk about their impacts on teaching and learning computer science.
Lifelong Kindergarten with Mitch Resnick
In this interview with Mitch Resnick, we discuss misconceptions people have around the four P’s (Projects, Passion, Peers, and Play) in Mitch’s book, encouraging depth of understanding while playing, what has surprised Mitch during his career, encouraging online communication and collaboration without creating artificial engagement, what Mitch wishes we’d see more of and discuss in CS education, our pet peeves with unplugged activities and computational thinking, accounting for survivorship bias with Scratch, expanding our focus on equity and inclusion to include both the “who” and the “how,” the importance of experimenting and learning through play, and much more.
Music Making in Scratch: High Floors, Low Ceilings, and Narrow Walls?
In this episode I unpack Payne and Ruthmann’s (2019) publication titled “Music making in Scratch: High floors, low ceilings, and narrow walls,” which problematizes the limitations of making music with Scratch.
In this episode I unpack Bowler and Champagne’s (2009) publication titled “Mindful makers: Question prompts to help guide young peoples' critical technical practices in maker spaces in libraries, museums, and community-based youth organizations,” which "examines question prompts as a means to scaffold reflection and reflexivity in the design, development, and use of technological artifacts in maker spaces for youth at public libraries, museums, and community-based organizations" (abstract).
Rhizomatic Learning with Catherine Bornhorst, Jon Stapleton, and Katie Henry
In this panel discussion with Catherine Bornhorst, Jon Stapleton, and Katie Henry, we discuss what rhizomatic learning is and looks like in formalized educational spaces, affordances and constraints of rhizomatic learning, how to support individual students within a group setting, standards and rhizomatic learning, why few people know and use rhizomatic learning approaches, how to advocate for and learn more about rhizomatic learning, and much more.
Talking About [Computer Science]: Better Questions? Better Discussions!
In this episode I unpack Allsup and Baxter’s (2004) publication titled “Talking about music: Better questions? Better discussions!” which is a short article that discusses open, guided, and closed questions, as well as a framework for encouraging critical thinking through questions. Although this article is published in a music education journal, I discuss potential implications for computer science educators.
Thinking through a Lesson: Successfully Implementing High-level Tasks
In this episode I unpack Smith, Bill, and Hughes’ (2008) publication titled “Thinking through a lesson: Successfully implementing high-level tasks,” which provides a heuristic that can be used to prepare for a lesson.
Using Questions That Guide Mathematical Thinking to Think Computationally
In this episode I discuss some example questions we can ask to encourage kids to think deeper about computer science and computational thinking by unpacking two papers on using guiding questions in mathematics education. The first paper paper by Way (2014) is titled “Using questioning to stimulate mathematical thinking” and the second paper by Pennant (2018) is titled “Developing a classroom culture that supports a problem-solving approach to mathematics.”
Find other CS educators and resources by using the #CSK8 hashtag on Twitter