Top 7 Coding Platforms to teach High Schoolers!

This article will discuss the top seven from heaven coding platforms which theCoderSchool uses to help teach its high school kids to code. You may be asking yourself, why is it the top 7 and not the top 8 or the top 6 or 5.... It's probably the same reason that the top selling abs workout video is '8 minute abs' vs. 7 minute or 6 minute abs. It actually could be any number, but seven seemed like a good lucky number - The Lucky 7. In all honesty, in my role, I meet with the general managers and Code Coaches® regularly and am always hearing about all the great and new platforms being used to teach theCoderSchool students how to code. However, there always seem to be a few platforms that are more popular and where the Code Coaches® tend to gravitate towards. When I reviewed those commonly being used with our High School students, the list just narrowed itself to these seven.

Before getting into the list, let's discuss teaching a High School student vs. the younger students. In both cases, theCoderSchool's philosophy is always to find something that interests them and will make it engaging for them. In the case of doing this with a younger student, it goes something like this: "So you're interested in Disney's Elsa, well let's make the main character in your application Elsa then...and go from there". But in the case of a high school student, you have to find something they're interested in but then build something more content-oriented that's associated or helpful towards that interest. For example, it might go something like this: "So you're interested in majoring in Bio-engineering in college to learn about gene science. Hey did you know that you can model genetic algorithms using javascript?"

Both of the cases mentioned above are real scenarios that happened and both worked out really well where the students had a blast, were engaged, and learned a lot. How does all this relate to this article? It doesn't directly, but I wanted to give you some background on how the high school students minds work versus the younger kids so that you can get a sense as to where the platforms/tools being used to teach them are coming from. For high school kids to learn to code, the platform does not need to be super graphical. Although it can be, it doesn't HAVE to be because they're plenty old enough and able to focus. As long as the subject matter is of interest, they will be there with you each step of the way. But try and force a boring topic down their throats and they will leave you in a heartbeat. Remember, high school kids can generally already drive and are becoming adults now. They can and will make their own decisions.

Here's our top 7 list (drumroll please....!):

1. Coding Ground

Coding Ground is a really nice option to teach our high schoolers almost any language. Coding Ground is an online IDE for pretty much all the major languages (java, c++, python, etc.). It even has cobol so how's that for everything! It's nice because it's available online and is free. However, it is also limited for those same reasons and as your high schooler gets more advanced we do recommend for them to start using their own laptop and for example if learning java to install eclipse as they become more advanced.

2. JSFiddle (Javascript)

JSFiddle is one of the best choices when teaching high schoolers javascript along with webdev. This platform brilliantly blends the fundamentals of webdev (HTML, CSS, javascript) into one easy to navigate platform which is online and free. Your high schoolers will quickly make progress building their pages and can render with the click of a button.

3. PLAYCANVAS (Javascript)

Playcanvas is another great teaching platform option for teaching high schoolers to code. The language that they would be learning is javascript. It's available online but adds in the extra engagement factor of being able to create something in 3D. Who doesn't enjoy 3D whether it's in the movies or in coding. 3D just kicks it up a notch as far as being engaging and captivating so is another great teaching tool.

4. Pygame (Python)

Pygame is a set of python modules designed to help with creating video games. It includes computer graphics and sound libraries which are to be used with the Python language and really enhances a high schooler's experience when choosing to learn Python. For any student interested in game development this should be at the top of your list, especially if they are also wanting to learn some Python. It cannot run on just a browser though and does require installation onto a local machine. Or you can use it on a raspberry pi which has it installed. Speaking of pi, that's definitely another great platform and guess what? It's #5! How's that for a great transition? So let us dive into number 5....

5. Raspberry Pi

The raspberry pi is the hottest new credit card sized computer. Kids of all ages are attracted to the raspberry pi! For this article we'll focus on its aspects that are attractive to the high schoolers. It's a great intersection of hardware and software. It's a kit that allows you to pseudo build your own computer. It's pretty straightforward, but since it has you doing things like sticking the heatsink on, it feels low level and really gives the kids a sense of pride and ownership from building it. Once built, the options are endless with it's ability to connect and control so many peripherals. It fits in well with the IofT popularity and buzz! High schoolers are having so much fun utilizing the pi to do cool things they don't even realize they're learning coding too! It offers exercises ranging from linux commands to python coding.

6. Unity 

Unity is an amazing cross-platform game engine developed in 2005. Unity is notable for its ability to target games to multiple platforms and focuses on helping developers build 3D games. Any high schooler interested in game development will enjoy Unity. Unity can even at times be used to teach younger kids some basic coding concepts while having fun working on a 3D game. But in general Unity is meant for the more advanced which fits your high schoolers really well. 

7. XCODE (Swift)

Xcode is an integrated development environment for macOS containing a suite of software development tools developed by Apple for developing software for macOS, iOS, watchOS and tvOS. First released in 2003, the latest stable release is version 8 and is available via the Mac App Store free of charge for macOS Sierra users. Xcode is great for any high schoolers interested in creating iphone apps. It's exciting for your high schoolers due to its direct relation to Apple and mobile. 

Conclusion

When teaching a high school student how to code, pick your content and subject matter first and let that drive your platform choice. You'll also notice from our earlier blogs that there tends to be more platforms to choose from as your students get older because their interests and their abilities broaden quite a bit.  And as always, don't forget to add the secret ingredient, a Code Coach® that drives the passion and ignites the learning!  Happy Coding!

 

 

 

Top FREE Platforms for Middle School Kids to Learn to Code

My last post on Elementary School kids coding platforms was so fun, I figured I better do another one!  There's lots of great tools that are being created out there, it seems by the hour, and plenty to choose from.  This definitely isn't a complete list, but it's some of the tools that we've found effective for teaching kids around age 11-14.  And bonus, these are all FREE platforms for teaching kids!

The Middle School years are an interesting lot.  Kids are starting to come into their own, hitting that hormone-growth stage.  It's also the time we've found that kids' logical brain are really starting to grow, and their understanding of coding beyond basic sequential stuff really accelerates!  At the Coder School, our average age is probably around the 11-12 range, so it's definitely the sweet spot, and the fun spot too!  At this age, kids are typically starting to move towards typed languages like Python or Javascript, though often still with some easier built-in graphical components.

Before we start - our standard disclaimer!  While there's lots of tools/platforms you can use to teach kids how to program a computer, many of them require a mentor or Code Coach® to really drive the passion and knowledge home.  Since Middle Schoolers often have a bit better attention span, sometimes it seems they can be left to their own devices when learning.  But think about music or sports.  Can your (actually WILL your) Middle Schooler really become an awesome guitar player just watching Youtube?  Would Peyton Manning be Peyton Manning without a coach his entire career?  (hint, the answer is no to both!).  So be careful - balance self-driven time with coaching time and you'll get the best results!  And with that out of the way, let's get to our platforms!

"Gravity Crash" by L. Newhouse (age 11)

"Gravity Crash" by L. Newhouse (age 11)

Trinket.io (Python)

One of our original favorites, Trinket is a great graphical tool to get kids transitioned from the drag 'n drop world of Scratch or the game-oriented world of Code Combat, to a more "pure" Python world. Python, for those un-initiated coders, is one of the world's most popular languages today - powerful enough to be used by professional coders word-wide, but easy to read and use enough for kids to pick up quickly.  Because of that, it's one of two languages that we typically use as the "first real-world language" that we teach our students (the other language is Javascript).

Trinket is great because it allow kids to code Python purely on the web (browser), and create an account, log in and save their code.   Like Scratch, it even lets you "Remix" code - take someone else's project, create your own copy, and edit the code from there!  Trinket isn't quite as strong when it comes to pre-existing code or follow-along tutorials, but because they use a graphical library called "turtle", it's fairly easy to start using Python to draw stuff up on the screen.  One of the first few lessons we typically teach is all about drawing squares and polygons using Python.  As things progress and the Python programming gets more complex, you'll want to move off Trinket to a pure Python coding environment, as Trinket has its limitations once things get a little dicey in complexity.  That said, you can still get craaaazy complex with Trinket in terms of logic - check out the Gravity Crush created by one of our student that uses real Physics gravitational formulas to play "billiards"!  To REALLY get a sense of the awesomeness of this kids, check out lines 233 and 234 from the code, excerpt below.  Newtonian gravity and vector scaling by an 11 year old?!?  What the WHAT?!

 # newtonian gravity. Product of masses is set to 100
  collider.vel.shift(distVector.scaled((100)/((distSquared))).scaled(width*height/560000))

Codepen (Javascript)

While Python is one of the hottest languages today, Javascript's one of the most popular.  What's the difference?  Well... that answer might take a book or two!  High level, Python is a general-purpose language that can do lots of cool stuff, including scripts and data stuff or making games.  Javascript can do a lot of things too - but the biggest advantage is that it's the language that runs on all web browsers.  So that means anytime a website actually "does" something with logic (like check if a field is blank), it's pretty much running Javascript.  Websites, as many of you know, run on a set of languages called HTML and CSS, which provide a lot of the graphical and color elements on webpages you see today.  Because Javascript forms the core of all logic in the web, it connects really well to HTML and CSS, and so presto - it's automatically already a pretty "graphical language"!

CodePen

CodePen

Phew, and I still haven't even talked about CodePen yet!  CodePen is a great online tool that allows kids to learn Javascript "in real time".  That means with a split screen, kids are able to see their code run right away.  Pop quiz - where does Javascript run?  That's right, in a browser!  Our students who work on CodePen are typically combining the logic and coding language of Javascript with HTML (and maybe CSS), and seeing their output right there.  Sometimes we'll use CodePen to teach our kids HTML and CSS too - both fairly straightforward languages, though neither can run logic.

CodePen isn't exactly made for kids (professionals often use it), so that's a possible disadvantage (or advantage!).  There are a number of projects you can reuse and discover - but they do tend to be a little higher in difficulty.  But for starting from scratch to learn HTML, CSS, or Javascript, CodePen is a great choice.

Pixelpad.io (Python)

PixelPad Screen

PixelPad Screen

PixelPad is another great Python option, a lot like Trinket.  Seems like the rage these days is to end your domain in ".io", doesn't it?  Anyway, PixelPad comes from our friends up north, and was built by Jamie Chang over at UndertheGUI, a coding school in Canada.  Like Trinket, kids can create a login and save your Python code up in the cloud, all the Python runs in your browser, and you can share your games and creations easily.  PixelPad's a little more game oriented, with the main differentiator being their step-by-step curriculums.  Some are free, and some aren't, but PixelPad gives a great option for kids to jump on and follow a curriculum faaaaaairly independently.  At one point, they even let kids create their own version of Plants vs Zombies in Python!  PixelPad is a pretty new platform, so you can expect lots of great content to come!  Our Code Coaches typically bounce between PixelPad or Trinket as similar options.

Coding Bat

Coding Bat Screenshot

Coding Bat Screenshot

The last platform here's a little different, not really game oriented or graphical.  Rather, Coding Bat is challenge and logic oriented, so it's not for every student.  You can see by the screenshot it's pretty basic looking, but for the puzzle lover students and kids, especially combined with a mentor or coach, it's pretty awesome.  Coding Bat runs both Python and Java languages, and presents kids with logical problems to solve using code.  Kids can program it in Java or Python and submit it, and the site will check the answer for them.  For example, here's a simple logic problem kids might start with when first learning coding basics, using if-then conditions:

The parameter weekday is True if it is a weekday, and the parameter vacation is True if we are on vacation. We sleep in if it is not a weekday or we're on vacation. Return True if we sleep in. Create a function sleep_in(weekday,vacation).

We use Coding Bat to test kid's logic and programming, see how much they picked up from other platforms they've used.  Because the site is fairly basic, kids typically need to already have a somewhat decent knowledge of Python or Java first.  But what a great way to get the logic down (and fun for some of us puzzle-loving adults too)!  Coding Bat is a great tool for kids who eventually want to hit a Computing Olympiad (USACO) competition.

Conclusion

Is that it? No way!  There's tons more platforms out there for middle schoolers, many/most are free, just get out there and hit Google!

Top Five Platforms for Elementary aged Kids Learning to Code

Learning to code for kids has become a hot topic these days.  And anytime there's a hot topic, you can bet lots of folks out there are swarming to build something for it!  As parents, we're starting to see lots of great options for how to teach our kids to code, with more popping up it seems on a daily basis!  At the Coder School, our strength is in the experience and smarts of our staff - but we use coding platforms all the time to teach.  Over the years, we've ebbed and flowed and have trended back and forth and found lots of cool tools and platforms to teach with, but some of them really stuck out for us.

This series of blogs will dive into some of the platforms we've encountered, broken out by age group.  This first blog will target the elementary age school kid who's itching to code!

Before we start - we have a Coder School disclaimer of sorts!  While there's lots of tools/platforms you can use to teach kids, it goes without saying that it's not like those TV commercials where you "set it and forget it"!  Learning to code takes a passionate and knowledgeable teacher, a Code Coach® - someone to guide the student, answer questions, and really customize the experience.  That's a whole nother topic that I touched on in our first blog, and might just need to jump back on in the future!  Anyway, without further ado...

Top 5 Elementary Kids Coding Platforms

Fish Food, coded by a Coder School student (click to play!)

Fish Food, coded by a Coder School student (click to play!)

1. Scratch - Built by the brilliant folks at MIT, Scratch was developed back in 2003 as one of the original coding-for-kids platforms.  It's widely considered THE go-to tool for teaching younger kids how to code, and almost every coding school uses it in some form.  In my opinion, if it weren't for Scratch, I don't believe coding for kids could even exist - so kudos to the Scratch team!  

There's two big reasons why this is the case.  First, Scratch is what they call a drag n drop language, which means instead of typing long complicated code and worrying about missing semicolons or typos, kids can drag and drop code fragments on the screen.  Can you imagine a kid typing "System.out.println("Hello, World");"?  In Scratch, they just drag a button and BLAM, it's done.  The second reason is that the code is geared towards creating graphical, moving, playable GAMES - quickly!  Back in the day, it used to take thousands of lines of code just to get something cool on the screen.  Now, with a half hour and a good Code Coach®, kids can be sucked into the world of coding games.  Another awesome feature of Scratch is it has a huge library of apps created by other coders, which kids can play and even reuse the code.

Brian Harvey, inventor of Snap!, visits our Berkeley Grand Opening

Brian Harvey, inventor of Snap!, visits our Berkeley Grand Opening

2. Snap! - Snap! is a cousin of Scratch, using similar drag n drop principles, easy for any kid to pick up.  Built by the Berkeley CS folks (in fact, the original developer Brian Harvey stopped by our Berkeley school's grand opening!), Snap will probably look like the same platform as Scratch to the untrained eye - but there's a subtle difference.  Without getting into the technical tidbits, suffice to say that Snap! was built with computer science education in mind, while Scratch was built for kids to make games, fast.  In Snap!, it's actually harder to do some things...  Why's that better?  Because then you have to figure out how to do it!  In fact, they even use Snap! to teach Berkeley freshman computer science!  

The biggest misconception about both Snap! and Scratch is that kids (and some parents!) think "they already know it" after becoming familiar with the 100 or so commands in either language.  If there's one thing you should get from this blog, it's that that is NOT THE CASE!  Coding is about the underlying logic, how to think critically and create things using the commands.  For any kid or parent to say they "know a language" because they know the commands is like memorizing a Spanish dictionary and saying you speak Spanish.  Doesn't work that way, does it?!

computercraft.png

3. ComputerCraft - Computer Craft is the brilliant combination of learning how to code, and - you guessed it - Minecraft!  Since exploding into every kid's brain and electronic gadget back in 2011, Minecraft has been one of the most popular games of all time.  As an adult, I gotta admit - I don't get it.  But if Microsoft is going to buy it for $2.5 Billion, then something about it works!  

ComputerCraft isn't directly connected to Minecraft or Microsoft, rather it's what they call a "mod", something that modifies the original Minecraft to add more features. This mod actually allows kids to code sequential and other logic within Minecraft itself using a language called Lua.  You can imagine the draw is that kids are more than excited to get to work in the Minecraft environment, and parents love that they can learn some coding at the same time.  The disadvantage is that because it's a "mod", setting it up can be time consuming to say the least.  Unlike many of the other platforms we use, you can't just go to a website and start using ComputerCraft, you have to install (and pay for) Minecraft, and install the mod on a specific computer.

4. Code Combat - I had the pleasure of meeting Matt Lott, a co-founder of this amazing company (great guy, btw), and I must say, what these guys have created is really pretty awesome.  Code Combat is basically a game-ified way to teach kids how to code real-world languages like Javascript or Python using a very graphical, really fun and addicting knights-and-combat kind of background.  Students progress in difficulty level by typing in code (typically Javascript or Python) to destroy their enemies.  The games are really fun, even for an adult like me, and really help nail down some of the concepts of coding.  

This is one of those platforms that you might be tempted to just drop your kid in front of, let him/her play the levels, and just learn to code that way.  It's plenty addicting and fun, so keeping kids on usually isn't a problem.  That said, some of the downside is that it IS a game - and like any game, kids are plowing through to the next level as fast as they can.  As my 10 yo son played it, I recall asking him quite often whether he actually understands the concepts, or if he just got to the next level.  The results were mixed, I'd say.  So it's a great tool - but just be careful if the student isn't paired up with a Code Coach® to explain the code, are the kids learning or are they just really good at gaming?  Something to keep an eye on for sure.

Code Combat is something we typically leave for the later stages of our elementary kids, usually towards the 5th grade level or so.  It's an amazing tool for transitioning between the easy graphical drag n drop world of Scratch or Snap!, and some of the "harder" real-world typed coding of Python or Javascript (all of which typically take significantly more work to get a graphical game).

5. Apple's Swift Playgrounds - Last but not least, we have an app from Apple.  As you'd expect, the user interface on this thing is crazy-good, and the tutorials and everything else are really well thought out.  Swift Playgrounds is Apple's answer to teaching programming to kids, and have offered hours of code with code.org to teach in their Apple stores.  The language this app is built around is Swift, Apple's new (well,  2014) language in which (soon) all their iPhone apps will be built.  So while Swift isn't really used for much else, there's nothing wrong with getting a leg up on developing iPhone apps, is there?

This app is only available for an iPad, so it doesn't (yet?) run on a computer.  Because of that, the interface is a liiiiiiittle deficient (coding complex stuff really requires a good keyboard interface!) - but for those just learning to code, it works just fine.  They say Playgrounds is meant for the 8-12 age range, and that's about right based on our experience.  While there's some definite good stuff that kids (and adults!) can learn by just downloading and using the app themselves, as always, having a passionate Code Coach® translate, invigorate, and in-passionate (if that's a word) is always the best way to go!

Conclusion

While we've listed our latest 5 tools/platforms that we use, these things change in a heartbeat.  The thing that doesn't change is that platforms are just computer programs, so be careful with sitting your kids down on a tool and walking away!  After all, even Lebron James wouldn't be who he is today without his coaches, right?

Coder School Goes Number Two!

Greasy fried chicken plus Hansel. Do you see where this is going? Nope, I'm not talking about going to the bathroom. I'll tell you about Hansel and his relationship with fried chicken later. I'm actually talking about opening up our second coding school, and how I joined the Coder School team. When Hansel asked me to partner with him on this journey to teach kids how to code, the first condition was that I would be opening the second coding school in San Mateo close to where I live. I'd never run a business and knew absolutely nothing about brick n' mortar businesses so of course I said yes. In all honestly, I do know about coding and I have two kids of my own so figured I would have Hansel there to guide me through all the brick n mortar stuff. The other probably more important reason I decided to partner up was for friendship. Ever since we'd both been married and had kids, we only saw each other about once a year perhaps at someone's birthday party. It was quite different than being best friends and in a band together. So whether teaching kids to code was going to be a success or fail wouldn't really matter because no matter what, we would definitely get to hang out on a regular basis again. Booyeah! And hey, it turns out I was right anyway, the plan went off without a hitch and we were able to launch Coding School #2 successfully!

When I reflect back on that period about 2 and half years ago, it's almost surreal to think about that first step of hooking up with a commercial broker, and driving around to look at prospective spaces. It's even crazier to think about all the late nights leading up to its Grand Opening. Late night deliveries of computers, chairs, desks, and constantly worried about the build out. Fun things like dealing with building & permit inspections and fire Marshals. And I'll never forget about putting yard signs up all over the local neighborhoods. By the way, it's actually illegal I found out. I was putting up some yard signs in public places which I thought was fine until a cop pulls up. Uh-oh! I just froze hoping he would pass me by but he didn't. Even bigger uh-oh. He gets out and comes over and I was pretty much going number two in my pants (another reference to the title of this blog, see how I was able to work that in). He was nice though and just gave me a warning and let me know that yard signs are okay in public areas, but only if they have a political message. As I thought about it, my political message is that all kids should learn how to code. How's that? Nonetheless, my yard sign sessions tended to be at 1 am after that.

Everything was new and exciting and I had no idea what I was doing. I continually asked Hansel lots of questions and followed his recommendations to a tee. In an odd sense, I was actually the first franchisee because we documented all of the steps that I took along with all of Hansel's guidance and that was the foundation of our repeatable model of how to build a successful coding school.

The takeaway is that if you're going to start a business, do it for reasons other than to make money. Do it for a good cause that you believe in like teaching kids to code. Make sure it's something that makes you happy and that you enjoy. When I see a kid's eyes light up because they just truly started to understand a new concept, it's simply the best feeling!  I was lucky as I also did it for friendship as well. We all know that going into business with a friend is not always the best idea. But it rocks when you're both compatible so just be careful in business with friends, but don't rule it out as it can be pretty rockin'!

Why Blog About a Coding School?

What?  Another blog so soon?  Yeah, we can't publish this thing with just a single lame post, can we?  As I'm writing this, my 11-yo son is playing Overwatch online, and there's some other kid playing that's squealing like a pig somewhere in the world, with his headset and mic.  The graphics are insane, and I'm feeling like I'm an Overwatcher (whatever that means).  Kinda funny, but really reminds me how far coding has come since I first started coding in middle school.  I seem to remember a little bit of BASIC, an Atari 800, and coding my first pixel-based Paint app.  MAN, I was proud of that app!

Anyway, I digress.  Why are we blogging?  Well, for SEO of course!  You can't say we're not all about transparency here.  SEO, for those who haven't heard, stands for Search Engine Optimization, and is basically the question of "how do I rank higher when someone searches for me?".  And so while we definitely hope to entertain and inform you, our main purpose is a little more self-serving (some may say nefarious!)!

We recently hooked up with some awesome folks at newmedia, an SEO consultancy, and just had our first meeting where they were going to tell us all the ways we could get our page ranking up in Google.  After paying them a big chunk of money, I was expecting some sweet revelations about what we could edit and click here and there and presto, up goes our Google page rank!  Well, turns out it doesn't work that way.  We were ranking decently well it turned out, and turns out lots of people are searching for learning to code, coding for kids, or kids coding schools.  (see how I did that?  I put in some sweet key words to this blog so Google can find me better!).  But the biggest output after tossing them a few G's?  We need to write blogs!

"Wait!  That takes WORK, doesn't it?", I asked.  "Wait, don't people usually just outsource this stuff?", I continued.  "Wait, engineers like me aren't good at writing, are we?", I complained. Rhetorical questions aside, we had a good logical-thinking contest between Wayne and I, and came up with the answer - we needed to suck it up and blog like a mother.

Part of the awesomeness of this business is that Wayne and I meet up once a week at some sunny outdoors place in the Bay Area, and catch up on status of our respective parts.  Wayne talks coding curriculum and operations, and I talk school franchising and learning strategy.  Yeah, there's a lot of business involved.  But you can bet two best friends who used to be in a punk-pop band together are talking other crazy (i.e., inappropriate!) stories too.  Can you imagine having a fun low-stress weekly meeting with your best friend for work that you love?  It's the most kick-butt experience ever.

We decided this blog would be the PERFECT opportunity for us to document all the stupid ideas, funny stories, and lessons learned we've had while teaching thousands of kids to program a computer in some way.  We can look back fondly when we're on our death bed and go "Remember that time you farted at the IFA conference right before that VP came up to you and shook your hand?".  And while we're at it, hopefully we'll get some better SEO too!  So you ready to find out more about starting a coding school?  About how we teach kids to love computers and programming?  Of course you are.  Read on.