My problem with Code.org.

July 2017 Edit: I’ve gone over the article, and found some corrections to make in my typing, and added some new sections. The resources part is temporarily gone, for now.

February 2018 Edit: This 5,500 word monstrosity was typed by a much younger version of myself about a year ago. I do know some more about computers per say, but what I wrote mainly applies. However, code.org has a new web lab which seems to use very real HTML5/JavaScript, and has added a lot of new blocks to App Lab, which I’ll be testing soon. There have been changes to code.org since I wrote this article, and I plan to write a follow-up to this article soon.

I’ve always had a place in my heart, for the hatred of Code.org. I was never able to get it out, write it on a post, without trashing it 800 words in.

I decided to do a proper post on my problem with Code.org. From a teen who knows how to “code” (by that, I mean basic Python skills).

I’m devising this post into sections. Sections that deal with the wrong that Code.org is doing. Their mission is to expand Computer Science, but not the practice of Computer Programming. I have a problem with that. I actually have a really big problem with Code.org.

 

Prelude: A few things

While Computer Programming and Computer Science are different things, I suffer from UTTCPACSI disorder, more commonly known as Using the terms Computer Programming and Computer Science interchangeably (don’t worry, a lot of other people do it too). Take that as you will.

Part 1: Computer Programming vs. Computer Science

These terms can get mixed up quite a bit, but they’re two separate things.

From Wikipedia, the definition of Computer Science is as follows:

Computer science is the study of the theory, experimentation, and engineering that form the basis for the design and use of computers. It is the scientific and practical approach to computation and its applications and the systematic study of the feasibility, structure, expression, and mechanization of the methodical procedures (or algorithms) that underlie the acquisition, representation, processing, storage, communication of, and access to information.”.

From Wikipedia, the definition of Computer Programming is as follows:

Computer programming (often shortened to programming) is a process that leads from an original formulation of a computing problem to executable computer programs.”

 

I’m not here to say that Computer Science is dumb. Computer scientists are the ones who discover new algorithms for computers, to further our species as a whole.

Computer programmers are here to do the dirty work. They’re the bane of everything on the Internet we take for granted. This website you’re on wouldn’t be here for computer programmers, your laptop, your phone, and so many other things. If Computer Scientists weren’t around, computers wouldn’t be around, entirely.

 

Part 2: What Code.org is doing wrong.

Computer Scientists and Computer Programmers are weaved together. They are not separate.

Code.org is doing many, many things wrong. Computer Scientists and Computer Programmers are weaved together, the scientists making important discoveries, and the programmers implementing those discoveries into things that humans can create.

Take this example from Wikipedia.

Corrado Böhm and Giuseppe Jacopini’s insight: there are only three ways of combining these actions (into more complex ones) that are needed in order for a computer to do “anything”.

 

Only three rules are needed to combine any set of basic instructions into more complex ones:

sequence: first do this, then do that;

selection: IF such-and-such is the case, THEN do this, ELSE do that;

repetition: WHILE such-and-such is the case DO this.

 

In this example, computer scientists found a new algorithm for computers, the famous sequential code, if, else if, else, and the while parts of coding.

Computer programmers were the ones who implemented these algorithms into languages, for other coders to use such a discover.

Code.org is disastrously mixing Computer Science and Computer Programming

This is a real mistake by Code.org. Never, ever, try to mix Computer Science and Computer Programming.

Their website’s homepage seems to give mixed signals. I found they have two quotes about Computer Science off the bat, but dig a little deeper, and now it seems like they teach code.

 

This is a disastrous idea, given the way they are doing such. They mix Computer Science with Computer Programming in such a way, that it seems as if Computer Programming is super easy.

You can teach Computer Science alongside Computer Programming, you just have to do it with real code. Code.org is teaching their students fake coding, which really makes me scream. If Code.org is all about teaching computer science and coding, why not teach their students the REAL DEAL? Why teach them fake coding?

Sidenote: I contacted code.org about this:

When writing this edit, I wanted to contact code.org about this issue. This is the letter I wrote them:

I’d like to request that you offer courses on your website to teach kids real coding languages, like Python or JavaScript. It would be great for an organization with such a prominent domain have the courses to teach kids how to make fun scripts in either of those easy languages, so that they can be inspired to make other great software for the real world.

Please also consider using real languages alongside your CSP and other courses, so that kids can gain real-world knowledge while taking your courses.

Sincerely,
A concerned young developer

 

Moving on. Let’s take this example of code from the Computer Science Principals course provided by Code.org.

onEvent("tryAgain_button", "click", function(){
setScreen("welcome_screen");

This is not real code. It’s psuedocode. As is evident by using js.do:

JavaScript error: Uncaught ReferenceError: onEvent is not defined on line 2

 

This is not how we teach our kids to code. Computer science and computer programming are two separate things, and when your website’s name is code.org, I expect you to be teaching coding. Not fake coding.

We can’t have a bunch of kids to know how computers work, but not how to make them work in the future. Kind of ironic how most sponsors of code.org are “complaining” that there are too little programmers in the world, when code.org isn’t actually creating new computer programmers.

Sidenote: Code.org’s odd planning techniques

Code.org tells kids to plan our their code in quite a strange way in their courses. They actually want you to write down something like this, when developing ideas for a program:

if conditional == True:
write "Conditional is true"
else if conditional == False:
write "Conditional is false"

I do plan out my code, and certain features. I usually talk it out, maybe draw a flow chart for more complicated features. However, if I’m writing down code, I’m using that code in my program. Otherwise, it’s a waste of time, in my opinion.

 

A few more problems I have with Code.org.

I’d be fine if Code.org used real JavaScript. It would present the user with a problem, and tell them to code it pure JavaScript.

Right now, Code.org presents the user with a problem, and the user solves the problem in FakeScript, as I like to call it.

 

Take this “code” that was used to make a basic clicker game in Code.org. I’ve annotated what’s real JS, and what’s fake JS in this code. Tabs are not present, sadly.

var score = 0; - Real
var lives = 3; - Real
onEvent("start_button", "click", function() { - Fake
setScreen("game_screen"); - Fake
});
onEvent("banana", "click", function() { - Fake
setPosition("banana", randomNumber(50,280) - Fake, randomNumber(50, 350)); - Fake
score = score + 1; - Real
if (score === 999999) { - Real
setScreen("win_screen"); - Fake
score = 0; - Real
lives = 3; - Real
setText("total_score", score); - Fake
setText("number_lives", lives); - Fake
}
setText("total_score", score); - Fake
});
onEvent("background", "click", function() { - Fake
lives = lives - 1; - Real
setText("number_lives", lives); - Fake
if (lives === 0) { - Real
score = 0; - Real
lives = 3; - Real
setText("total_score", score); - Fake
setText("number_lives", lives); - Fake
setScreen("lose_screen"); - Fake
}
});
onEvent("playAgain_button", "click", function() { - Fake
setScreen("welcome_screen"); - Fake
});
onEvent("tryAgain_button", "click", function() { - Fake
setScreen("welcome_screen"); - Fake
});
onEvent("tryAgain_button", "click", function(){ - Fake
setScreen("welcome_screen"); - Fake
});
onEvent("playAgain_button", "click", function(){ - Fake
setScreen("welcome_screen"); - Fake
});

 

Out of the 33 lines of code (exempting 7), 30% of the code was real code, yet 70% of the code was fake.

Seventy percent.

To me, that’s unacceptable. Kids should simultaneously be learning about Computer Science, but learning real coding.

After I did this, I wanted to dig a little deeper into the rabbit hole. So, I thought:

“Time to burn an hour of time checking out Code.org’s FakeScript!”

Part 3: Code.org’s FakeScript.

In Code.org’s appLab, you get access to all of AppLab’s code. I wanted to see what “blocks” that were provided were fake JS, or real JS. My testing methodology is simple:

Input each block into JS.do. If a ReferenceError was caught, the block is fake. Anything else, the block is real.

 

Sidenote: Stop lying to your end users!

“App Lab is a programming environment where you can make simple apps. Design an app, code with blocks or JavaScript to make it work, then share your app in seconds.”

You sure about that? Because as the clickbait online sites would say:

“You Won’t Believe How Fake Code.org’s AppLab Is!”

Sorry, back to the study.

 

Out of 135 blocks that are available to the user, here is how many blocks are available in each section.

  • 30 blocks in UI controls
  • 11 blocks in Data
  • 9 blocks in Control
  • 18 blocks in Variables
  • 21 blocks in Canvas
  • 21 blocks in Turtle
  • 19 blocks in Math
  • 6 blocks in Functions

 

Here’s what I found.

Out of the 30 blocks in UI controls, 0 blocks are real, and 30 blocks are fake. (0% real, 100% fake).

Out of the 11 blocks in Data, 0 blocks are real, and 11 blocks are fake. (0% real, 100% fake)

Out of the 9 blocks in Control, 6 blocks are real, and 3 blocks are fake. (66% real, 33% fake)

Out of the 18 blocks in Variables, 14 blocks are real, and 4 blocks are fake. (78% real, 22% fake)

Out of the 21 blocks in Canvas, 0 blocks are real, and 21 blocks are fake (0% real, 100% fake)

Out of the 21 blocks in Turtle, 1 block is real, 20 blocks are fake (5% real, 95% fake)

Out of the 19 blocks in Math, 18 blocks are real, 1 block is fake (95% real, 5% fake)

Out of the 6 blocks in Functions, 6 blocks are real, 0 blocks are fake (100% real, 0% fake).

 

Out of all 135 blocks that are provided, 45 are real, and 90 are fake.

In terms of percents, 33.33% of provided blocks are real, while 66.66% of provided blocks are fake.

There’s more fake code provided than real code.

I can’t say much. Code.org, to teens, is teaching kids code that doesn’t even work in reality. When their name is code.org. I’ll talk more about this later.

 

My reaction to the data collected.

I always wanted to see what was fake and real in Code.org’s App Lab, but never got around to doing it. 1/3 of the code is real, 2/3 of the code is fake.

It’ll take me a few days to process that. I’m in a class with 30 other kids, where 2/3 of the code they’re learning about is fake.

 

As a real developer, this astounds me. Code.org is teaching their “FakeScript” to millions of students, and 99% of those students don’t realize that what they’re learning is fake.

This disgusts me beyond belief. While Code.org says “make your app with JavaScript”, kids likely think they’re learning JavaScript. They’re actually learning a mix between real JavaScript, and Code.org’s “FakeScript”.

I plan to eventually waste another few others making a full spreadsheet on which blocks are fake, and which blocks are not.

 

Sidenote: Code.org’s appLab seems to not be a fully-featured JS environment:

I found this script online (http://stackoverflow.com/questions/9514179/how-to-find-the-operating-system-version-using-javascript), and the guy who made it provided a link to a Fiddle thing, in which it’ll show you your OS version, all that fun stuff.

Just to see what would happen, I decided to copy and paste the code into the appLab environment. And, nope! Didn’t work. To me, the information that he’s grabbing looks to be basic information, with what seems to be no external libraries being acquired.

I’m not a JS developer, so correct me if I’m wrong in the comments.

Here’s the Fiddle link as well: http://jsfiddle.net/ChristianL/AVyND/

 

Part 4: Diving deeper into the rabbit hole

I decided after some time to look further into Code.org’s bad practices, and debunk some of their “facts” they present.

Why is code.org named, uh, code.org?

I’m actually being serious. If code.org is all about teaching kids computer science, and not effectively teaching kids coding, shouldn’t they change their name to ComputerScience.org? I mean, they have TWO QUOTES on the homepage about Computer Science!

“Our children — including our girls —

need the opportunity to learn computer science.”

“Every student in every school should have the opportunity to learn computer science”

 

Other odd quirks:

Found this statement on code.org’s “Learn” page.

“Code Studio is the most popular coding platform in K-12 education”

Wait…what? I thought you taught Computer Science, again, something different than computer programming.

Alright, alright.

 

Code.org’s “inspirational” videos and posters”:

Code.org has a complete page on their website, dedicated to inspirational posters and videos. Take a look: https://code.org/educate/resources/inspire

 

I find this video entertaining in a sense. This is another one of those “inspirational” videos from Code.org, as mentioned above.:

Basically, it’s all these people saying “Computer programming is the future”. That’s pretty true. But, how come Code.org isn’t actually teaching kids real code, so they can truly inspire kids to become computer programmers? Bit ironic…huh.

 

Teaching our kids “computer science” with teachers who don’t know nothing.

Take this video. Skip to about 0:35:

Yes! We’re teaching our kids CS with teachers who know nothing about it! Awesome. /s

In reality, this is unacceptable. If we’re going to be teaching our kids computer science, and therefore an extension, real computer programming, schools should be hiring real teachers who know a thing or two about computer programming and computer science. I find it truly disgusting that if computer science is the way of the future, that we’re teaching our kids such a subject with teachers who don’t know a thing about it.

 

Part 5: Why teachers use Code.org.

I felt like I wanted to add this section, as to put it from a teacher or school’s point of view, as to why they want to use Code.org, instead of competing websites.

You don’t need to know anything to teach this stuff.

Normally, you’d need a high-level degree to teach students about math, or science in schools. Unfortunately, this isn’t the case for Code.org. While you can become a “professional teacher” in teaching Code.org’s course (sidenote later), any teacher can create an account, and go along with the flow. The teachers read up about what they need to teach the class, and basically act as a relay.

Sidenote: “Professional teaching” is a load of BS.

Because I’d love to fly out to Phoenix to professionally teach kids fake coding.

 

As I said earlier, this presents a huge issue. We need teachers who are passionate about teaching kids real code, not fake code. The only reason teachers hop on board with Code.org’s course is because you don’t need to know anything.

Sidenote: Codecademy exists

Actually, in my opinion, Codecademy is easier for teachers. Codecademy teaches the kids everything gradually, and all the teacher needs is screencaps of the kids’ code to “grade” it (more about this in my opinions). In the end, kids get to learn real code.

This actually happened since my “computer programming” teacher was out on leave, and the sub ended up using Codecademy. Yes, I cheated with a GitHub repo with all the answers, as I was working on PyTerm at the time, but I liked how kids were learning real code.

 

It’s free.

Code.org costs nothing. Which is great for the school budget.

Sidenote: Codecademy and FreeCodeCamp are also free

Just saying.

 

It’s easy for the kids and the teachers.

This is an interesting reason. I feel as if Code.org has an appeal due to it’s simplified coding, versus doing real coding. Instead of a bunch of code to set up a sprite, sprite assets, and a bunch of other stuff, Code.org simplifies it with blocks that take the guess work out.

However, with this approach, kids are missing crucial information on how these modules work. But, I guess you could say the same thing for modules.

Sidenote: At least get some form of realistic “importing”

As with Python, where you import a module, Code.org should at least replicate that, and add some extra steps to setting up a screen and sprites.

Sidenote: Code.org teaches the fundamentals in a completely boneheaded way

In my opinion, you learn the essentials of coding in this way. This is biased for Python, but should apply to other languages.:

  • Print stuff to the console
  • Get user inputs
  • Learn about variables, and variable types, and as an extension basic math
  • Learn about if else if else, and as an extension “conditionals” (==, <, >, etc)
  • Learn about while loops, for loops, and loops in general
  • Learn about functions and passing arguments
  • Learn about the nitty gritty stuff, importing, modules, loggers, etc.

Instead, Code.org decided to completely screw up how you learn the basics. Here is the actual order of how you learn the coding basics, according to Code.org’s CSP Unit 5.

  • Learn about events
  • Learn about debugging (“printing stuff to the console”)
  • Learn about variables
  • Learn about user inputs
  • Learn about if statements, then boolean expressions, then if else if
  • Learn about while loops
  • Learn about arrays (why is this NOT connected to variables?)
  • Learn about functions

What? Really, why?

 

Part 5ish: More or less, a personal rant on some of Code.org’s practices

(this section was written at 00:09, after finding a document on code.org’s CS Discoveries Curriculum Guide. While this may not entirely pertain to this write-up, I do think it is important to express my opinions in regards to Code.org’s practices.)

 

How Code.org thinks you should learn

After browsing around Code.org’s site, like I always do, I found in the “CS Discoveries” (new course with fake coding, probably), about their “Pedagogical Approach to their values”.

In case you were wondering, the definition to Pedagogical is: of, relating to, or befitting a teacher or education

(thanks merriam webster!)

Because this would become a gigantic copy & paste party, here’s the link to this document. Follow along with the sections, and my feedback, from my experiences.

https://docs.google.com/document/d/1FhHPqlC6dU_z9retuBYb-duUwyKpnjwuEgjF4zfdhvI/edit

 

Role of the Teacher:

A blurb about the lead learner. “I know that TOGETHER we can figure it out”. True, but IRL, Stack Overflow and Google is your best buddy.

Discovery and Inquiry:

“Students are given opportunities to explore concepts and build their own…and online lessons.” Considering this post hammers Code.org on that it doesn’t teach kids real coding, how about you offer real coding classes.

 

“The goal is to…construct their understanding of computer science concepts, regardless of prior experience in the discipline

By the way, they assume you know the definition of discipline as: “a branch of knowledge, typically one studied in higher education.”

Anyways, I’ll sure tell you the way Code.org develops a common foundation upon which all students develop an understanding of computer science is inaccurate, to say the least.

 

Creation and Personal Expression:

I find this quite annoying. “Everyone seeks to make their mark on society, including our students, and we want to give them the tools they need to do so”. I’m calling a load of BS on that one. If you truly gave kids the tools they needed to make their mark on society, teach your kids real code.

 

The Classroom Community:

I get it, schools are all about collaborating, but in reality, I prefer to code solo. It just takes me less time to code, rather than having this happen:

“Should I add this feature in?”

“Yeah you should”

“Ok, how do we go about doing it?”

<30 minute conversation about adding in 50 lines of code>

<15 minutes later, it’s done>

 

Whereas on my own:

“I’m going to add this feature in, how to I do it?”

<thinks for 5 minutes, maybe goes to stack overflow>

<if what I’m coding in is complicated, try stuff in a python console/little script>

<15 minutes later, it’s done>

 

In a corporate collaborative situation, well, I don’t know what happens. I don’t have an internship.

 

A few pages down, you’ll see a section on pair programming.

You should see a list about the “great positives” of pair programming. I’ve added my comments, and important words in bold, that relate to my opinions.

  • improve computer science enrollment, retention, and students’ performance – Proving my point that we’re forcing our kids to learn computer science, and grading them. More about this in my opinions.
  • increase students’ confidence – Really? Pair programming would increase how pissed off I am, and my frustration levels.
  • develop students’ critical thinking skills – I’ve developed my critical thinking on my own.
  • introduce students to the “real world” working environment – Can’t rebut this comment, I don’t know how things work in the real world.

 

Also, this:

It can be hard to introduce pair programming after students have worked individually for a while, so we recommend that teachers start with pair programming in the first few plugged lessons.”

Got a good chuckle outta that one. Yes Sherlock, it is hard to introduce pair programming when everyone knows collaborative work is just a pain in the neck.

 

Other annoyances of Code.org:

Unplugged Activities. I don’t find this helpful, at all, and I certainly don’t think it helps me “digest complicated concepts in ways that relate to their own lives”. I think a good hard think in a dark room helps me digest complicated concepts, or drawing a flow chart.

In the CS Discoveries Curriculum Guide, Code.org again iterates that kids will be learning “JavaScript”. 3 times. About the only think that isn’t fake that Code.org provides is Web Lab, but of course, App Lab and Game Lab are both fake JS.

Reword your descriptions, Code.org, if you need to. Instead of this:

A browser-based JavaScript programming environment designed to create sprite-based drawings, animations and games, with the ability to freely switch between programming in blocks or text

Word it like this:

A browser-based programming environment with similar design to JavaScript designed to create sprite-based drawings, animations and games, with the ability to freely switch between programming in blocks or text.

Lastly, before I move on to more serious talking, stop confusing people: App Lab is a programming environment for developing applications in JavaScript. A drag-and-drop editor allows students to add and edit page elements without having to write the associated HTML and CSS.

First off, HTML, CSS, and JavaScript are all very weaved together on the internet. HTML is the backbone, CSS is the styling, JavaScript makes CSS more interactive. You cannot just “build an app” with JS. If you truly want to build an app, try Swift, or Java (or Kotlin).

One more thing. I don’t know why kids need to learn binary. 01100010 01101001 01101110 01100001 01110010 01111001 00100000 01100011 01101111 01101110 01110110 01100101 01110010 01110100 01100101 01110010 01110011 00100000 01100001 01110010 01100101 00100000 01100001 00100000 01110100 01101000 01101001 01101110 01100111 00101100 00100000 01111001 01101111 01110101 00100000 01101011 01101110 01101111 01110111 00101110 00100000 01101100 01101001 01101011 01100101 00100000 01110100 01101000 01100101 00100000 01101111 01101110 01100101 00100000 01111001 01101111 01110101 00100000 01101010 01110101 01110011 01110100 00100000 01110101 01110011 01100101 01100100 00100000 01110100 01101111 00100000 01100011 01101111 01101110 01110110 01100101 01110010 01110100 00100000 01110100 01101000 01101001 01110011 00100000 01101101 01100101 01110011 01110011 01100001 01100111 01100101 00100000 01101001 01101110 01110100 01101111 00100000 01110100 01100101 01111000 01110100 00101110

 

 

Part 6: What Code.org needs to do.

What they need to do, is start teaching teens real code, alongside their current courses.

Be it Python, or JavaScript, they need to teach kids real code. That is what inspires kids to do more.

 

Case study, me. I took a week-long Python course at iD tech. If I learned Code.org’s FakeScript, I wouldn’t be doing complex things in real JavaScript.

Same goes for Python. If I learned a fake version of Python, I wouldn’t be doing complex things in real Python. Because I was taught the real fundamentals of Python, I could continue exploring Python, and not have to start from Square One.

Code.org needs to not only teach Computer Science fundamentals, and…

Teach the 18.3 million kids you reach real code.

Code.org, stop teaching kids fake code. Stop teaching 18.3 million kids code that won’t work in practice.

If you can’t teach kids real code, shut down your site. Stop teaching hundreds of millions code that won’t work.

 

When I see this metric:

18,326,295 student accounts on Code Studio

I think:
“Holy crap. They taught 18.3 million kids fake code.

Eighteen and three thousand kids fake code.
Let that number sink in.

And when I see this metric for the hour of code:
Students have written 21,066,198,207 lines of code.

I’ll replace that to:
Students have written 21,066,198,207 lines of code. fake code.

 

I will give Code.org a round of applause for the curriculum, mostly. I do suggest they change the way kids learn the essentials of a programming language, and that they of course, incorporate real coding into their courses.

Part 7: A conclusion

Code.org is a somewhat okay, but mostly awful service, coming from a teen developer.

Code.org is teaching the fundamentals of Computer Science, that’s a good thing. They actually have a good curriculum. But they’re teaching kids fake code.

You need Computer Scientists and Programmers to work together down the line, to help solve new problems. You can’t have a bunch of Computer Scientists, and barely any programmers.

 

Instead, let’s all use Codecademy. They’ll teach you REAL CODE, that you can actually use in practice. I’ve taken a few courses over at Codecademy, and I can reference and use Codecademy to help my REAL CODE.

Furthermore, a site like FreeCodeCamp.com is an absolutely AMAZING way to have teens learn real code, and real technologies used in real companies, and get thousands of hours of experience out of it. It starts with the fundamentals, and works it’s way up. When teens complete thousands of hours of code, they’ll be able to use certificates issued by FreeCodeCamp on their resume, and actually get jobs at real companies. That’s powerful.

 

Teachers, from an aspiring teen developer, I call on you to stop teaching your kids fake code, with Code.org. Instead, use Codecademy. Better yet, use FreeCodeCamp.

We need computer programmers in this world. We need people who can make incredible things in code. Teaching our kids real code, and truly showing them what they can accomplish with real code, it’s truly inspiring.

 

When you print your first line of code in whatever language, Java, Python, C++, it’s the most magical moment in the world. It’s the moment that you say to yourself, “I want to do this. I want to go this way.”.

Let’s inspire our kids to use real coding languages, to make real things that can change the world. The stuff we use on a daily basis wasn’t made in Code Studio. It was made with real code.

Let’s stop teaching kids fake code. Teach them the basics of real code. They’ll figure out the rest.

 

 

To sum it up, Code.org sucks. I hate it. It’s teaching kids fake code, letting teachers with no experience teach this stuff, and now we’re stuck with unpassionate teachers who don’t know what they’re teaching, and don’t know how real code actually works.

Instead, we need to hire teachers who know what they’re doing, who are passionate about teaching this stuff, and who can be a mentor and a help to students wanting to learn real programming. We need to teach our kids the essentials of programming, and then let them free.

 

Part 8: My opinions.

Since this post absolutely smacks code.org for the wrong it’s doing, I’ll follow up on some of my opinions about teaching everyone computer programming.

First off, we should not be forcing to teach everyone computer programming, and certainly not fake computer programming. I can easily compare this to forcing kids in a school to play a sport, sing, or other activities, and have them be altered from the real deal. Schools don’t force all their kids to play a sport, like football, and have it modified.

Sidenote: “BUT OWEN (the ninja), PHYSICAL EDUCATION IS A THING!!11!!”:

You do have a point. All schools (or most, I think) do force kids to take PE. However, this is different from computer programming.

PE, at least in my school, broadly covers different sports. You get a bit into volleyball, basketball, other sports ending in -ball, you play a few games, and in 6 classes, move on.

What’s different with computer programming/science is that you don’t really change the “subject” after 6 weeks, you actually go pretty in-depth into the concepts of computer science. You could say that PE covers sports, and dips into each different sport for a few classes. However, Code.org takes a look at 5 major “concepts” for Computer Science (in which you learn about how the internet works for some reason), and goes deeper into each “concept”. And it goes deep. With tests at the end.

I do feel like forcing kids to take PE is fine, but I don’t like forcing kids to take computer science. It’s just harder.

 

 

Yet, that’s what schools are doing, except with computer programming. A lot of teens aren’t passionate about programming, and that’s fine by me.

The thing is, these passions come naturally. Teenagers form passions based on what they love to do. I became passionate about computers, others at my school became passionate about sports, art, horseback riding, skiing, whatever floats your boat. You form your passion based on what you guide yourself to. We shouldn’t be forcing kids to learn this stuff, their passions come naturally. Instead, schools should be nurturing passions.

 

Another thing, coding just generally doesn’t work with schools. You can have art class, or sports activities after-school, but coding doesn’t fit in well with a school environment.

Code.org is trying to teach kids to code collaboratively, which really doesn’t work great with coding, for teens.

Sidenote: Most teens hate PBLs, and collaborative projects

That metric rises to 100% for my class.

 

Sidenote: PBLs work better when going solo (same for projects)

You just get stuff done faster. My Python experience is a 1-year-long PBL, but on my own. No deadlines, nothing like that.

 

Yes, Git and other things exist, but in the real world, things work a lot differently than what Code.org is positioning collaborative coding as. Especially for teens, most would rather work on their own, and I agree. Coding in a group can easily lengthen how long something takes to complete, and especially when you consider how Code.org wants kids to collaborate.

In addition, coding requires more resources than an IT person would want to grant. Preferably, you’d want full access to sites that teens can ask questions, or read up on concepts, which includes Stack Overflow, Reddit, and other sites. In Python, you need command line access to install extra libraries, and kids would likely want a good IDE to work in, like Eclipse with PyDev. I don’t think IT admins like this combination, which is why I have to bring in my own laptop, and even use my mobile hotspot to access sites like Reddit to ask questions, or go on sites that would normally be blocked on a school filter.

Sidenote: Schools need to keep BYOD alive

I have other articles on this

Sidenote in a sidenote: I don’t:

My bad. I have one really crappy article. I deleted the remaining Chromebook rants. I plan to rewrite that uh, one.

 

But in the end, BYOD is somewhat in jeopardy at my school. While I know some ways to circumvent the BYOD ban (#eclipseche) to continue coding at school, BYOD is a great way for kids to be creative at school, and to work on their passions that involve technology, like music making, or movie editing, to name a few passions.

Forcing all your kids to use Chromebooks can severely limit creativity when at school for passions that need BYOD, and I know for a fact I don’t code at home because school days are long.

 

Lastly, coding isn’t a usual thing for schools. I look at coding in a school environment a little differently. In coding, I feel as if kids should learn the basics, and go off, learn on their own, and make some cool stuff. Coding is a PBL, or project-based learning. With the help of my various Python projects, I’ve gained knowledge about Python. Yes, schools are into PBL, but also grades for PBLs. Coding cannot be graded.

It can’t.

Coding cannot be graded, in my opinion. I feel as if each coder has their own way to implement something. You shouldn’t get docked points on your grade because it took you 15,000 lines to print out one line of code (it’s an extreme, I know), when there is a much easier way. Be it 1 line, or 15k lines, you achieved something. Docking points for using inefficient ways of coding just lowers motivation, and I feel as if coding isn’t that. If I was graded on my actual Python code, it’d be out of a computer programming class instantly.

Coding is a highly creative and diverse medium of expression. You can create whatever you want. Do things in whatever ways you want to do. Schools, especially in America, cannot adapt to this type of creative medium, where kids are set free, ungraded, and they can truly express themselves. The American school system was founded on the idea that kids are taught how they are supposed to do something, told what to do, and to craft kids like cookie-cutters. Things are different in 2017, but are still generally the same in regards to grading.

I truly believe that if schools are going to teach computer programming, they need to follow these guidelines:

  • Don’t force your kids into it. Let kids leave the class at any time if they feel programming isn’t right for them.
  • Teach kids real coding, and do not use code.org.
  • Teach kids the essentials for 2-3 months, and let them be free for the next 7 months. Let the class become a collaborative time for sharing ideas, having fun, and don’t punish kids for being themselves. Let kids freely share their projects if they’re willing to, at any time.
  • Don’t grade kids on their coding.

10 Responses to “My problem with Code.org.

  • Mate, I totally agree with everything you said.

  • Usbwjt M.
    7 years ago

    We were forced to do a bunch of code.org in my school’s computers classes. After a few suggestions to the administration, I got them to swap it out for codecademy. Codecademy, still, is not a great way to learn coding. However, in the sad little NY school I’m in, the computers teachers (and probably the IT, too) don’t know jack sh*t about actual programming. So, at least it’s a start.

    In my beliefs, the only good way to learn coding is by reading books, spending hours on stackexchange, and working hard at making little projects or tinkering with other people’s code.

  • Old Programmer
    6 years ago

    Perhaps the biggest issue with code.org is its overly simplified documentation.
    Code.org actually uses a SUBSET of JavaScript plus their own GUI API. It’s not a fake JavaScript since it does not introduce any new syntactic features that are not part of ECMA language specification. It just doesn’t use APIs that browsers provide in typical web programming. It’s similar to how Qt uses C++ and Unity uses C#. Code.org needs to make this very clear at the beginning.

  • Our school got a grant to get a bunch of computers, so all 9th graders are forced to take this “coding” class. no matter how hard I try, I’m completely apathetic towards it and thus my grade slips. As an aspiring unity dev it disgusts me that we have to learn fake code to graduate because my xchool’s cheap.

  • Shawn Jolicoeur
    6 years ago

    You’re not wrong in most of your evaluation, but I think you missed the greater purpose of why Code.org chose to take this approach to coding / computer science. Code.org is really not intending to turn kids into programmers, their goal is to cast a wide net to get young people interested in the computer sciences. The Fake Coding (I agree with this label) is only meant to lower the barrier of entry for anyone who has little to zero knowledge of the subject, which represents a huge part of the secondary student population. And, Computer Science Principles is meant as an intro course for Freshman/Sophomores that would then feed into AP CS A.

    Options like Codecademy would present a better real world approach to coding, but may not be accessible enough for most beginners. One comparison that would be interesting would be to compare the real javascript syntax to their pseudo code to see if their system really does simplify the process both for learning and retention of entry level students.

  • Joshua P
    3 years ago

    I disagree. While it’s true most of the code is pseudocode, I feel like it would be more helpful than teaching coding straight.

    The target audience for code.org are people just starting out at coding with little to no experience, so highschool and below.

    When I was taking code.org, it wasn’t very challenging. It was very easy to understand and I could comprehend what everything does. Now, according to your list, it was (almost) all pseudocode. When we got to the “control” part of coding, it got harder. Functions, too, were a lot harder than the other stuff. It took me a bit of time to fully wrap my head around it. The pseudocode is a lot easier to learn. I don’t think the point is to teach coding, I think the point is to INTRODUCE kids to coding. Think about this: the pseudocode is pretty similar to JS, right? It’s pretty close. onEvent (“id”, “click”, function() {}); is like the onClick. The whole onClick thing is very complicated and can require a lot of work and it’s not something you can teach a kindergartener. Like, if a 1st grader asks if there are letters in math, you would say no. While that is not true, you are trying to teach kids about numbers and addition and subtraction, you don’t want to confuse them.

    Anyways, I think that’s the reason it uses pseudocode. It’ll be easier to start with and will be less discouraging when you mess something up.

  • I totally agree that this “code” is fake. I am a middle school programmer who writes in python and we were forced to use this fake code last year. I appreciate the article, because I used to think at least the JS part of code.org was real but I guess not. If we use this again in school, I might try to suggest python and show this article. Great job on spreading the word that is is not real code like they say it is.

  • I totally agree that this “code” is fake. I am a middle school programmer who writes in python and we were forced to use this fake code last year. I appreciate the article, because I used to think at least the JS part of code.org was real but I guess not. If we use this again in school, I might try to suggest python and show this article. Great job on spreading the word that is is not real code like they say it is…

  • Yeah, Code.org needs to stop teaching fake stuff. Kids are going to feel cheated when they realize they were kept from the truth by a website unintentionally trying to teach them the truth of programming.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.