×
Become a PowerToFly VIP
For less than one coffee a week, receive exclusive content, access to live chats with female thought leaders, and more when you sign up to become a VIP!
Tech Talk

Learning to Code, Harry Potter & Bloom’s Taxonomy

You'll be creating Patronuses (I mean code) in no time!

Learning to code is not quick and easy. Many coders, including myself, have discussed reasons why learning to code is so challenging (here, here, here, and here). To become a programmer, you need to have experiences that force you to move through a hierarchy of learning objectives (known in education as Bloom's Taxonomy of Learning). Doing so ensures that you can progress from simply recalling coding concepts to being able to develop your own original code. Bloom's Taxonomy has six levels: Remember, Understand, Apply, Analyze, Evaluate, and Create.

But what does Harry Potter have to do with the learning objectives and coding? Simple. Throughout the seven books in the Harry Potter series there are numerous examples demonstrating each of the learning objectives in the hierarchy and are beautifully illustrated in the movies. Remember, Harry, like you, is experiencing a steep learning curve. Harry must learn potions, charms, and transfiguration, all with tools he has never used before. Doesn't that sound familiar? Instead of magic, you are learning computer science and coding languages like JavaScript and Python. Instead of a cauldron and wand, you are using a text editor and Chrome Developer Tools. (If you aren't familiar with Harry Potter, don't worry. You will still understand the concept.)

In this post, I address the six levels in the hierarchy, describe the types of learning outcomes in each level using action verbs, provide a clear example from the Harry Potter series (with a link to the corresponding video clip), and then relate it back to learning to code.

Remember

In this level, you are able to recall, recite, define and list.

In The Sorcerer's Stone, Harry takes Potions with Professor Snape for the first time. The Professor, ready to embarrass Harry, asks him to recall facts such as where to find a bezoar (answer: in the stomach of a goat) and what is the difference between monkshood and wolfsbane (trick question — they are the same plant). Of course, Harry cannot remember these facts. Even if he could, simply recalling information doesn't mean you understand it or can apply it in a new situation. You may be able to list the different types of variables or identify a function, but that doesn't mean you can use, apply or create original code in JavaScript. That is why it is crucial to move through the hierarchy of learning objectives. (View Scene Here)

Understand

In this level, you are able to explain, discuss, describe, and report.

In The Sorcerer's Stone, Hagrid takes Harry to get his school supplies, and Harry takes the opportunity to ask Hagrid about his dead parents. Hagrid explains the events surrounding their tragic end, but also describes the condition of the wizarding world at the time, and they discuss the scar on Harry's head. When do you need to discuss your code like this? One example is when you ask for help. If you use Slack or Stack Overflow, it is critically important that you describe the code you have written, what you expected to happen, what happened instead, and what you tried as a result. You may not have the solution to fix your code, but you demonstrate that you understand where you are in the process. Force yourself to go through those steps when you want to ask for help. It will reinforce your understanding. Often, when I go through this process, I am able to answer my own question at the end. It is the process that engages our brain. (View Scene Here)

Apply

In this level, you are able to use, implement, and demonstrate.

During Defense Against the Dark Arts class in The Prisoner of Azkaban, Professor Lupin explains how to deal with a boggart, a creature that feeds off of your fears. First, you must concentrate on something absurdly funny and then clearly enunciate the incantation: Riddikulus. In the scene, the Professor has the students use the spell against a real boggart. Doesn't this example of applying feel like practicing? That's because practicing what you have learned is extremely important regardless of the subject. With coding, though, this means you can follow the coding requirements of a user story to demonstrate what you have learned. For example, the FreeCodeCamp curriculum asks you to complete a variety of assignments such as a tribute page, a random quote generator, and a weather application. To do this, you must recall and understand the coding required. You may still need to "Google" some of your code, but that is all part of demonstrating your ability to apply what you have learned. (View Scene Here)

(Can you guess the subject of my FreeCodeCamp tribute page? Take a look here.)

Analyze

In this level, you are able to draw conclusions, make connections, and compare and contrast.

At the end of The Chamber of Secrets, Harry draws conclusions and explains to Ron that the monster from the Chamber is a basilisk, a serpent. He connects the information about the basilisk provided to him by Hermione with clues from each time the monster encountered a student (they were turned to stone rather than killed). Harry also deduces that the voice he (and he alone) has been hearing is the basilisk since only Harry can understand Parseltongue (snake language). As Harry draws conclusions, he has an almost "Aha" moment. It's not unlike the moment you examine error messages from your code in Chrome Developer Tools and know what to do to fix the broken code (analyze and apply). As a developer, you will need to analyze your code on a constant basis, but analyzing only comes after you not only recall but also understand and apply code. (View Scene Here)

Evaluate

In this level, you are able to critique, assess, select, and justify.

In The Order of the Phoenix, Harry teaches a group of fellow students defensive spells and charms to protect them if they should encounter a Death Eater. As Harry walks around the group, he assess the use of spells and offers suggestions on how to improve — he shows Neville how to properly move his wand and suggests he focuses on a fixed point. In one scene, he even raises some students' wands higher for better execution. Of course, you won't have Harry critiquing your code. Instead, a programmer must critique their own code and look for places to make the code more efficient. Doing this without changing the outcome of the code is called refactoring. Sometimes you need to evaluate code before you write it. For example, you may have a situation where you could use more than one type of function: is using an if statement better than using a switch statement? Weigh your options and select the most appropriate option. Evaluating is a natural extension to analyzing. (View Scene Here)

Create

In this level, you are able to develop, design, work, and assemble.

We never truly understand just how brilliant Professor Snape is when it comes to magic until The Half-Blood Prince. Harry stumbles upon Snape's old Potions schoolbook, and in the margins finds that Professor Snape (known only as the Half-Blood Prince) has created brand new spells, many of them curses, and modifies existing potion recipes for better implementation. Unfortunately, Harry tries the "Sectumsempra" curse on Draco and nearly kills him. You don't have to create evil curses to know you have achieved some mastery in coding; instead, you can take an original idea, wireframe it, build it, and troubleshoot it. Notice, though, that you must have gone through all levels of the hierarchy in order to successfully create. Snape would not have been able to develop new curses if he didn't first remember principles of magic, understand spellwork and evaluate his progress. (View Scene Here)

Wrapping Up

Learning coding, like magic, isn't easy. It requires hard work and patience. You must remember that Harry doesn't really perform much magic on his own in the first book. He hadn't learned enough yet. Regardless, he still became a great wizard and eventually defeated the evil Voldemort. Keep that in mind on your journey to becoming a programmer. It won't happen over night. Focus on experiences that will move you through the hierarchy of learning.

One thing Harry has that we all need is friends to share the burden. With Ron and Hermione by his side, the three friends persevere through many challenges. Find your "Ron" and "Hermione" in the coding community by joining a study group, attending meet up events, and participating in discussion boards either on Facebook, Slack, or Stack Overflow. But be patient with people. You don't know where they are in the levels of hierarchy.

In Person Events

Exclusive Drinks and Networking with Women Tech Leaders

This is an invite-only event. Contact hi@powertofly.com for the invitation if you think this event would be a good fit for your skill set.

Save the date! PowerToFly is excited to introduce you to women tech leaders at some of New York's most exciting companies. You will hear how these female leaders and their teams are building inclusive environments and innovative tech products. We'll end the evening with an opportunity for you to network with additional women in tech over cocktails and light food.

Panelists & Featured Guests include (Subject to Change):

  • Doa Jafri, Director of Engineering, Thrive Global
  • Bahar Shah, Senior Software Engineer, Bluecore
  • Mahmoud Arram, CTO & CoFounder, Bluecore
  • Bavitha Sokhi, Senior Software Engineer, Stash Invest

We will be announcing a full lineup of speakers and participating companies shortly. Stay tuned!

READ MORE Show less
Tech Talk

How to use Integer Linear Puzzling to Attain Sudoku Fame & Fortune

Jan. 16th 2018

If you're not familiar with Sudoku, it's a popular game consisting of a 9x9 grid of numbers (1-9), that is further broken into three smaller 3x3 grids, where each line and grid must use each number (1-9) only once.

My name is Lauren and I'm a victim of the Sudoku "guess and check".

Sure, there may be one easy row that I can complete by doing some simple algebra, but when it comes to the "extra hard" puzzles, you can forget it. Each puzzle has 729 parameters, so the odds of my "guess and check" method being accurate the first time around are pretty slim.

Luckily, Allison Morgan has discovered a way to use Integer Linear Programming to solve Sudoku puzzles, and it only takes a few minutes!

"The first constraint requires that each cell, denoted by its row and column, contains one value. The second and third constraints maintain that only one of a value is contained within a column and row, respectively. The last constraint fixes that only one of a value is found in each subgrid.

And how exactly do you solve it?

"I used the Python package for solving LP problems called PuLP to solve the "Hard 1" sudoku above. PuLP has some nice existing documentation for how to use its software for this problem. This is another thorough explanation of using LP to solve sudoku puzzles, with supplementary code.

My adaptation of PuLP's sudoku example can be found here. Note that my edited constraints simply satisfy the starting state of my particular puzzle."

While the excitement from my "guess and check" method may have been lost to a formula, for any perfectionist like myself, I can sleep easy knowing the puzzle was successfully completed (and I learned about linear puzzling along the way!).

Tech Talk

Design Meets Code

Dec. 26, 2017

If you've noticed that your Twitter feed has recently been bombarded with the hashtags #100DaysOfCode and #DailyCSSimage, you're not alone. Social media "code challenges" have become a popular fad for not only beginning coders, but for those who looking to add a new set of skills to their advanced repertoire. I just happened to stumble across this blog post in my Medium feed, and needless to say I was hooked.

With minimal drawing skills, Eleftheria Batsou was able to create incredible graphics using the coding skills she was learning via this post "A Beginner's Guide to Pure CSS Images" and their free email course. What impressed me the most was how much she improved from her first image to her last, truly embodying the idea that anyone can code.

Her conclusion is as follows:

"This challenge helped me in so many different ways:

  • I got better at CSS/SCSS, I also learned about animations.
  • I learned new tools about colors, shapes, and animations.
  • I connected with people all around the world on Codepen, Twitter, and Youtube.
  • I shared my knowledge on Codepen and Youtube and I hope I helped and inspired other developers.
  • I learned to be more patient and focused on my image and my code rather than get distracted by little things.
  • I got better at time management.
  • I did not get better at drawing!"

Are you working on a project that you'd love to share with the PowerToFly community? Join our Facebook group and send it our way!

Tech Talk

Learn Recursion from 'The Good Place'

Dec. 19, 2017

It's no surprise that NBC's 'The Good Place' was just renewed for it's third season; Kristen
Bell is so forkin' funny and this whole "Good Place/ Bad Place" twist needs some further explanation. But we're not here to talk theories or spoilers, rather, we're looking at the shows major plot line and translating it into code, specifically a process known as 'recursion'.

Recursion is a computer science method used in many programming languages, in which a function can call itself.

While her blog post does have spoilers- Carol Scott breaks this down step by step for you in her piece, "How 'The Good Place' Is A Great Example of Recursion." We'll do a quick synopsis below, but you really should check out the full version on her blog!

There are many times in the show where Michael (Ted Danson), the Head Demon, chooses to 'reboot' The Good Place after something "bad" happens, hoping to wipe the many characters' memories.

When translated to JavaScript, a function is written so whenever The Good Place is called to be rebooted, each characters knowledge/deduction capacity multiplies together, and then the entire function reboots itself once again.

This process would continue in perfect harmony for eternity, however, everyone's favorite character, Janet (D'Arcy Carden) changes things.

Every time Janet is rebooted, she becomes more intuitive, unlike the other characters who maintain the same knowledge/ deduction capacity, which means Janet serves as a multiplier for the other characters.

This means, no matter how many times the other characters are rebooted, each new reboot produces a new Janet. (In computer science terms, you would say Janet is what makes the recursive change its state.)

(Janet + 1)

(Janet + 1)+1

I know we're all dying to see how how this function show ends - but we'll have to wait until January to find out!
GET EMAIL UPDATES FROM POWERTOFLY
COMPANIES THAT CARE
FOLLOW POWERTOFLY