Utah Coding Project

The Utah Coding Project

This project is a work to help introduce middle school students or beginning high school students to coding or computer programming. The projects here are based on my experience of teaching computer programming for many years to middle school and high school students. The different sections or units included here are my attempt to break the big area of computer programming into many smaller more manageable concepts. Each sections starts with a program that guides the student through creating an app using the concept introduced and the lets the student enhance the app. The student can then apply what they have learned to create new related apps.

Not only are coding concepts to create apps introduced but also the creation of Web pages using HTML and CSS, the collection data, analysis of data, and publishing the data using a subset of SQL. The introduction to programming of hardware using the BBC's Micro:bit is also introduced. This can open up many areas of innovation for the student as the world becomes more automated and controlled by software and hardware devices. This whole project is a work in progress that will be added to and updated.

Code.org's App Lab

Code.org created the App Lab environment for use in their curriculum for AP CS Principles and their CS Discovery course. App Lab is a block based programming environment with JavaScript running in the background. A person can switch back and forth between the block or the text based programming. (http://code.org/applab)

App Lab also has a "Design" mode in which objects can be placed on the "phone" screen. Properties of the objects can be changed such as: size, position, color, text, and the ID of the object. In the "Code" mode, the program can use "events" to interact with the objects.

App Lab also has the ability to create an online database that can used to store and access data stored there by the app.

One of the best features of App Lab is it's ability to "publish" the app for others to use. Once an app has been published it can run on any phone, tablet, or computer as an HTML5 app. As a teacher I learned a long time ago that when students can "publish" their work for others rather that just doing work for the teacher then it has real value.

BBC's Micro:bit

The ability to program hardware through software is a skill that can lead to innovation as the world becomes more automated. Raspberry PI's and Arduino's have found a lot of popularity in this area but I think the BBC's Micro:bit makes entry in this area much easier because there are no drivers or software to download. It can be programmed and then the "*.hex" file can be downloaded and copied to the micro:bit that shows up as a USB drive.

The Micro:bit has an programmable 25 red LED screen to help a student quickly get started output information to. It also has the following sensors: a compass, a thermometer, a light sensor, an accelerometer, and Bluetooth communications. The Micro:bit also has 3 general purpose input output (GPIO) connections that allow for adding of other sensors or output devices like LED light, speakers, or motors, etc.

The Micro:bit can be programmed using a variety of enviornments such as: Python, TouchDevelop, or my favorite Microsoft's MakeCode block style programming with JavaScript in the background as a text based option. (https://makecode.microbit.org/)

Thanks.

Carl Lyman

Computational Thinking Practices

Coding activities will allow students to "develop the skills of a computer scientist though the development of Computational Thinking Practices". (Code.org's, K-5 Fundamentals Curriculum Guide, page 2.)

  • Creativity
  • Collaboration
  • Communication
  • Problem Solving
  • Persistence

Programming Stuctures

Through out the activities included here, students will be introduced to the 5 structures involved in all coding:

  • Sequence — one line of code following another
  • Loops — allow a program to repeat a section of code a given number of times or while a certain condition is true
  • Conditionals — decisions or if...then...else statements that allow the program to make a decision based on a given condition
  • Functions — the ability to create new statements in the code by giving the code a name that can be used elsewhere in the program
  • Events — the ability of the software to interrupt any other parts of the program and to run the code based on the event, such as, the clicking of a button in the program