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



More Content