Languages, Tools, and Fundamentals
It’s easy for new students to become overwhelmed with the variety of resources, programming languages, and programming tools available today. Often a question beginners have is, “what programming language should I learn?” This could lead into a discussion about programming goals (games, websites, mobile apps), and sometimes tools (Unity, Cloud 9, App Inventor). For absolute beginners, I recommend putting that question aside and focusing on understanding the fundamental concepts we find in most languages. In my experience, this helps students remain flexible when it comes to languages and tools later on. In my Intro to Programming class, we currently use Scratch to teach beginner programming concepts. Although Scratch seems geared towards a younger audience, there are a lot of benefits to using this tool at any age. Getting started with Scratch is quick and easy, there are lots of examples on the site for students to explore, and plenty of help and tutorial resources available. Scratch is graphical, and provides meaningful payoff for students. The tools allows users to exercise creativity, without hampering users with too many complicated features. Most importantly, Scratch uses a blockly approach to programming.
Although I am a proponent of Scratch, there are plenty of other tools available that contain similar features. The blockly approach can be found in App Inventor, Pencil Code, and Actimator. The blockly approach allows students to experiment with code blocks. Students can place code blocks together based on their shapes and description without a lot of eternal research. Because blocks are associated with a sprite, feedback from testing the program is immediate. You can see the results of your code, but more importantly it often answers the question, “did my code do what I thought it would do?”
In my intro class, when students ask “how do I … “, I usually encourage students to think about the desired result, look at the block libraries, form a hypothesis, a test scenario, then implement their solution and evaluate the results. This is the methodology used in most of my programming classes; and during the Intro to Programming course, this process is drilled, reinforced, and refined.
When first learning a programming language, syntax errors are common. More advanced students inevitably spend time hunting down rogue semicolons and curly-braces. But for beginners, that is an unnecessary diversion. Understanding the logic and theory behind programming is the goal of that course. Proofreading code is an important skill to develop. But as a vocational teacher, I have the luxury of taking my time teaching coding. A solid foundation allows us to explore a variety of languages and tools later.
This is the part where I encourage discussion. Share your experiences with beginning programming as a teacher or student. Do you believe there is value in learning coding through blockly? What was your first programming language? What was the biggest challenge you faced when starting out.