Have you ever wondered why some people sail through programming courses and others struggle?
That's something that's fascinated me over the years, but now I think I know why.
With the advent of MOOCs (Massive Open Online Courses) I was lucky enough to take a free online class in Programming Python taught by the affable Charles "Dr. Chuck" Severance of the University of Michigan. "This is great", I thought. "I'll be programming in no time". But I didn't finish the course. There was a lot going on my life at the time, but something didn't captivate me enough to pursue it doggedly as I had with 30+ other MOOCs. It wasn't Dr. Chuck -- he was simply awesome. But what was it?
Recently I took another programming course thinking it would be the same tried-and-true formula of talking through lines of code and explaining what is going on. But it wasn't the same. I was reminded of two words that have changed the world: "Think Different".
To some, MIT's Scratch program may seem like just a fun tool for the K-12 audience to build games with. But it's much more than that. Scratch Visual Programming language can provide the visually-minded with a way to understand programming that resonates harmoniously with their style of learning.
So join me as we explore together "A Tale of Two Personas" -- a journey into programming through the minds of two very different personality types.
Meet Daphne, a hardworking 32-year-old creative expert who is passionate about aesthetics, style and communication.
Daphne's top priorities are color, texture, fabric, space, and other elements that go into various designs.
She has a natural artistic talent and is concerned with how designs communicate and connect with an audience.
Daphne's hobbies include: blogging about lifestyle, fashion and web design; photographing urban settings and candid portraits; decorating her apartment.
Daphne knows her targeted audiences well. She understands the marketing principles of aligning her designs with the "taste profiles" of various personas in her markets. She can "get inside" a client's head and see their vision.
How something looks and feels to Daphne is extremely important. It's part of who she is. She innately understands the psychology of color and the huge role it plays in people's buying decisions.
Daphne's favorite social site is Pinterest. She loves creating collections of images that express who she is and what she's all about.
If Daphne were to design a car, it would have the rounded curves of an e-type jag from the 1960's or the design purity of an Alpha Romeo. It might not be reliable, but it would speak to your senses and your inner soul.
Meet Derek, a detail-obsessed 29-year-old technology expert who's been playing with computers since he could crawl.
Derek's top priorities are making "cool stuff that works", connecting interfaces to databases, making designs functional and usable.
He has a natural talent for math and problem-solving and is concerned about finding the root of a problem.
Derek's hobbies include: playing games and building the ultimate gaming system; building servers; creating cool apps for his friends.
Derek knows all the short cuts. He has productivity apps for everything and loves to make processes as fast and efficient as possible.
How something works is extremely important to Derek. It's part of who he is. He innately understands structure and properties, and the practicalities involved in making something work.
Derek's favorite social site is Twitter. He doesn't care much for images, but loves the real-time, fast and succinct updates and links to snippets of code from the tech-geek community.
If Derek were to design a car, it would be a self-driving Batmobile with a 0-60 time in the blink of an eye. It might not look pretty or graceful ... but it would go like a bat out of hell.
Many people relate to the concept of "Learning styles" which puts forward the idea that we tend to learn best when the information is presented in a particular way. For example, a "visual learner" prefers to see information in pictures, diagrams, charts and Infographics, whereas a "verbal learner' likes hearing stories and reading books.
If we use this concept and apply it to the way our two personas might choose to learn programming, then we have some concrete ideas for you, based on how closely you identify with either the creative "designer" mindset or the more analytical "technical" mindset.
Daphne's Advice to Learn Programming
"If you're like me, you're predominantly a visual learner", says Daphne.
"And I found a wonderful MOOC offered by the University of Edinburgh on Coursera that matched my learning style exactly", she said.
Code Yourself! An Introduction to Programming uses MIT's Scratch Visual Programming language which is really easy to use, has a drag-and-drop interface to code using shapes instead of lines of text, and will have you grasping the principles in no time. Covering topics like algorithm design, user interaction, code reusability and generalization of solutions, you'll learn how to think like a programmer, a computer scientist, or a software engineer.
The big benefit of using Scratch for someone with a visual mindset like Daphne is the immediate graphical feedback of what you're programming. With just a few blocks dragged to the build area and connected together, some quite complex operations can be simulated quickly. Nested blocks allow for repeated operations through count-controlled or condition-controlled loops.
The delightfully enthusiastic lecturer Areti Manataki takes you through the course using a combination of animated graphic overlays and recorded screen video. Her visual presentation style will hold you spellbound.
Right out of the gate, you drag a few blocks together inside an infinite "forever" loop to control what a character "sprite" says depending on which image-pose, or "costume" is being displayed.
And you quickly move on to more complex conditional loops, such as this one, where the program prompts for your age and uses that value to drive what happens next. Notice how succinct the program is and how the various blocks are differentiated by color and shape. The "if-then-else" block encapsulates the controls within its shape and helps you visualize what will become a necessary habit in other languages -- indenting your code.
There are two other parts to this nice little program we are coding. Scratch makes it easy to store relevant code with the objects (called "sprites") that are being used. In this case, the butterfly object has the above code associated with it. Two different images (called "costumes") of the butterfly are alternated in an infinite loop to simulate flying.
Now for some cool multimedia integration using your laptop's microphone. There is a second image (costume) of the cake with candles blown out and we can program our code to prompt people to blow into the microphone to reveal this image -- giving the effect of blowing out the candles! The control block "senses" a loudness threshold via the microphone and directs the program accordingly. Cool!
And now for a musical interlude: introducing the note block. You can program notes from a variety of instruments -- 21 in total!
One of the exercises involved arranging blocks to play a tune and to synchronize movements of a cursor to highlight the words in a "Karaoke style".
And here's the finished program recorded from the Scratch output window.
There are many more powerful functions to drag, drop and interlock. We've only seen a small sample as a taster of why this is the best programming course for beginners who are visually-oriented with a 'designer' mindset like Daphne.
Would does Daphne love about this MOOC?
- The videos are short, punchy and fun
- It's pure drag-and-drop exhilaration
- The colored blocks are so intuitive
- No wading through thick manuals -- yippee!
Why not sign up today. It's free and fun!
Derek's Advice to Learn Programming
"If you're like me, then you learn best alone with your head buried in a book", says Derek.
"I think the best way to learn programming is to read about each function, look at examples of how to apply them, and then have a go yourself. If you get stuck, you can always 'Google it' or ask a question in a support community. And I found a MOOC that's ideal for the way I learn -- it even has a free book!"
Run by the charismatic Charles Severance of the University of Michigan on Coursera, Programming for Everybody (Python) aims to teach everyone the basics of programming computers using Python. Charles is like Derek -- a "developer" type -- so he explains everything like he's been doing it since he could crawl. Here he is explaining the hardware inside a computer -- geeks just love this!
The free book Charles provides has nice standard formatting -- just what someone of Derek's technical mindset likes to see in a good programming guide.
Charles Severance takes a deep dive into each topic of programming with Python and explains the syntax rules as well as a full description of what each function does and means. It's no-nonsense stuff - just the way Derek likes it.
You follow along with Charles who is ever present in a small video window as he draws on the screen in real-time in a similar fashion to Salman Khan of Khan Academy. The flow charts that everyone loves are on the left, the Python code is in the middle and Charles's video on the right.
You always know where you are with Charles because he talks through it, guiding your eyes through the code with his onscreen tablet-driven pen in real-time.
Charles also talks you through worked exercises that resemble real tasks that you'd find in everyday working life -- for example, a small business wanting to compute the pay of staff.
Charles shows you exactly what's on his screen by using screen-recorded video footage.
And he continues to use the markup pen to make it easier to follow along as he's talking.
He also shows you the text output from the program in a window below the code editing window.
By now you'll realize that this MOOC doesn't move objects around the screen or create multimedia games like Scratch does. Instead, it focuses on the unglamorous, but very necessary, task of text manipulation.
For example, let's say you want to use data exported from a billing system for other purposes. The exported text file may have lines of text with lots of information you don't need. So the challenge is to strip away what you don't want and extract what you do. Python makes that easy.
Let's suppose you want a list of the days of the week on which a customer emailed your business. There could be thousands of records, so counting them in your email program is impractical. Instead you can use an exported file from your database and manipulate the text with Python.
Your text file could look something like this -- with lots of extraneous data you don't want.
Charles shows how to extract just the day of the week -- or any other string of data that you want to isolate. Plus, because he's so experienced, he knows that programs invariably don't work the first time and that a major part of programming is debugging. He shows us tips and tricks of how to debug programs. For example, here he uses what is termed a guardian pattern to skip over blank lines -- because the program was failing to run as soon as it found a blank line.
Charles also does a tour of real life meetups in various cities that he travels to. And because he travels so often, he's bound to be in a city near you -- even internationally!
Python is a powerful, general purpose programming language that emphasizes code readability, and allows programmers to express concepts in fewer lines of code than other languages. I've given you a small taster of what it can do. For the technically-oriented "developer" mindset like Derek, I think this MOOC is the best way to learn programming.
What does Derek love about this MOOC?
- The free book
- Charles Severance's informal and humorous style
- The real-time markups
- All the worked examples
Why not sign up today. It's free and fun!
Whether you have the visually-oriented "designer" mindset of Daphne, the technically-oriented "developer" mindset of Derek, or you're a combination of both types, there's a MOOC that's right for you.
You can learn to program!
Share your preference in the comments or join us in our Facebook Group.
We'd love to know if you like our Facebook Page.