falconcodingclub

View project on GitHub

Tools of the Trade

Blocks

Programming with block based tools is a great way to introduce common students to computer thinking. Early on this was how the Freeport Coding Club started. These tools are great because they are so easy to pick up. Early on we were able to very quickly create apps using AppInventor that solved real problems. This helped us teach entrepreneurship, prototyping, user testing, and other very interesting and important skills. Some of our club members ended up winning some scholarship money in the Maine App Challenge, so it also proved to be financially beneficial.

Reviewing our objectives - our club is focused on ‘coding’ - i.e. we want to learn how to program. Blocks help teach concepts and allow for rapid prototyping, but we found they did not accellerate the path to programming in a full programming language like python. Additionally, most students coming through our school system already have some exposure to block based programming in their STEM classes so it is becoming less and less important to review that prior to jumping into programming. If you have a club that is more focused on entrepreneurial learning and broader technology then blocks may be a good tool.

Arduino and Raspberry Pi

Some project ideas require some electronics or ‘Internet of Things’. Depending on the focus of the group we have Raspeberry Pi, Arduino, and basic elctronics kits available.

Programming Languages

At some point if you want to learn to ‘code’ you need to start using modern programming languages. We have found that jumping in day 0 using a powerful but accessable language has been the best approach for our goals. This becomes a delicate dance of learning a little syntax then doing fun things with it. Key Considerations:

  • What types of devices will the students be programming on?
  • What operating system will you be using and how much can you control what is installed?
  • Do you have a broader objective - e.g. creating a game, mod’ing minecraft, or creating an app - or are you just trying to teach fundimentals?
  • What is the technical lead’s comfort with programming and languages?

2016 Language Scores

Here are our assessments of a few options:

  1. Python: * Pros:
    • Fun and easy to use
    • Well accepted standards, but flexible functional versus OO
    • Most marketable (i.e. highest number of open jobs)
    • Open frameworks like Django available * Cons:
    • Not really feasible without a laptop
    • Need a teacher familiar with ‘Pythonic’ programming
    • Whitespace can trip up new programmers
  2. Ruby * Pros:
    • Fun and easy to use
    • 100% Object Oriented if you like that sort of thing
    • Open frameworks like Rails available * Cons:
    • Lots of ways to do one thing
    • Not pervasive marketability
  3. Javascript
    • Pros:
      • Easy to get started right in the browser
      • Pervasive web programming
      • Standard syntax
    • Cons:
      • Poor standards
      • Some complicated concepts required for break-through
      • Not as marketable on its own
  4. Java
    • Pros:
      • Accessible language
      • Second only to python on marketability
      • Lots of powerful frameworks
    • Cons:
      • Requires more infrastructure to get started (IDE, compiler etc)
      • More cumbersome to do simple lessons (lots of objects and cruft)
      • Less quick and fun
      • More complicated to do simple graphics programming
  5. C or C++
    • Pros:
      • How I learned!
      • Super powerful and good way to get deep understanding of how computers work
      • Third most pervasive in terms of jobs
    • Cons:
      • Much less accessible
      • Some infrastructure required (compiler, IDE, etc)
      • Compicated syntax for simple tasks
      • Poor built in graphics support etc