2.1 Essential Technological Knowledge [TK]
Hardware
Let's start from the bottom and work our way up. What do you need, physically speaking, in order to teach students to code?
Many would argue that you don't need any hardware at all; most coding concepts are abstract like mathematics and can be worked out on paper. For example, algorithms are step by step instructions that are often implemented in code but can also be written out informally on paper in what is commonly called 'pseudocode'.
Many would argue that you don't need any hardware at all; most coding concepts are abstract like mathematics and can be worked out on paper. For example, algorithms are step by step instructions that are often implemented in code but can also be written out informally on paper in what is commonly called 'pseudocode'.
Organizations like CS Unplugged offer a plethora of free activities that can be done without any digital technology at all. The diagram to the left shows how to set up a 'chalk and concrete' activity that allows upper elementary students to physically enact and visualize a parallel sorting network. While these abstract concepts are really interesting to think about in physical space, such activities may or may not have much transferability for students as they begin coding on a computer.
|
For the purposes of Codegogy, we will work under the assumption that we want to teach students to code using a text-based programming language on a computer. The most desirable devices are desktop or laptop computers with strong and consistent internet access. Alternative devices include tablets, smartphones, micro-computers (such as a Raspberry Pi), and browser-based devices such as Google Chromebooks.
For teachers interested in teaching coding at their school I would highly suggest a one-to-one ratio for students to devices. It is also preferable to have a permanent learning space such as a computer lab as opposed to hosting lessons in multiple locations. Thankfully, coding is not a high-demand activity from a hardware perspective and so even rather outdated devices can still be used. Sales Representatives from Educational Technology companies often try to pressure schools to buy classroom sets of devices, like Chromebooks or iPads, with the implication that students 'need' them to learn how to code. I personally would prefer a set of older desktop computers to teach coding than new Chromebooks or iPads.
|
Many schools have implemented a BYOD (Bring Your Own Device) program in which every student brings a computer from home; this introduces a whole new set of issues as many computer programs are platform-specific and every device may present unique challenges. Once again, if there is an option for students to learn coding with a class set of devices (preferably laptops or desktops), I strongly suggest using them even if some student devices are newer or more powerful.
Take a two minute break. Get up and stretch before scrolling down!
Software
Before we get into software for actually writing and running code, the first issue that needs to be address is storage.
Selecting a space for students to save and store the code they've written is very important. Here are a few scenarios with suggested storage solutions:
Selecting a space for students to save and store the code they've written is very important. Here are a few scenarios with suggested storage solutions:
- Networked School Computers (Laptops or Desktops): Students should be instructed to save their files to their own student hard drive space within the school network; caution them not to save to a 'Public' space such as the Desktop as these files are often wiped when users log off. Students may also bring a USB flash drive which they can save their files to.
- Non-Networked School Computers (Laptops or Desktops): Students should be instructed to bring a USB flash drive to save their files on as files may be wiped, deleted, or altered when other students log on to that computer.
- BYOD (Bring Your Own Device) Program: Students should be instructed to save files to their own device.
- Cloud-based Devices (e.g. Tablets or Chromebooks): Cloud storage, such as Google Drive, allows users to save files to a remote hard drive that can be accessed by any device they log into. This is very convenient for text documents, spreadsheets, and slideshows. While students can save files to the cloud, especially if they have student accounts with a school-wide cloud storage service, retrieving and opening code files can sometimes be problematic.
Richard Stallman
|
There is a long and celebrated tradition within the world of computer programming of making software free. Richard Stallman, an influential figure at the MIT AI Lab, was frustrated that powerful computer programs were being licensed and sold by large companies; his firm belief that software development was a human endeavour, not a private one, inspired him to create a new licensing model called the General Public License. For the purpose of Codegogy you do not need to know the finer details of this model except that it continues to ensure that a lot of free, high quality software is available to help you code.
|
Once again, Sales Representatives from Educational Technology companies might argue that you need to buy expensive and exclusive software for students to learn how to code. This is not the case. In my experience, these paid programs are often too easy to use as they hide crucial steps in the coding process which are beneficial to student learning such as handling local files. There is plenty of free software available online and the real challenge is deciding which of these free platforms to use.
In reality, you actually do not need any special software to write code; every computer is equipped with a basic plain-text editor that you can code with (most likely TextEdit for Mac OS and NotePad for Windows).
You do need software to compile, or run, your code; i.e., to get it to actually 'work'. For Codegogy we are going 'cheat' by making our internet browser (e.g. Chrome, Firefox, Safari, etc) do this job for us. I will clarify the justifications for this decision later on when we talk about selecting a programming language to work with. |
There are specialized text editors that are free to download and use. These can help students identify errors in their code as they act like a 'spell-checker' and often have convenient built-in keyboard shortcuts. For those interested in using a more specialized text-editor I suggest download and using Atom. It is free to use and has updated versions for all major platforms.
There are programs that allow students to both write and compile code; such a program is called an Integrated Development Environment (IDE). If you are coding on your own personal device or are advising students who want to code outside of class, these types of programs are best. So why wouldn't I suggest using an IDE in your classroom? Well...
A word of warning: Downloaded programs, such as text editors and IDEs, can be a huge headache in a school setting.
If you want your students to work with a specialized text editor or an IDE then you will probably need to contact your school administrator as most teachers do not have administrative permissions to download programs onto school computers. This process could take a few hours to a few weeks depending on the responsiveness of the I.T. staff. Further, regular updates for these programs will be required and may catch you off guard; once again, getting these updates installed on student computers could take hours, days, or weeks.
If you want your students to work with a specialized text editor or an IDE then you will probably need to contact your school administrator as most teachers do not have administrative permissions to download programs onto school computers. This process could take a few hours to a few weeks depending on the responsiveness of the I.T. staff. Further, regular updates for these programs will be required and may catch you off guard; once again, getting these updates installed on student computers could take hours, days, or weeks.
Even if you do have the technical permissions to download programs on student computers do not download the program without explicit, written administrator permission. Administrators are responsible for keeping the school network safe from viruses and spyware so must vet whichever program you request to use. If you download programs from the internet without permission that contain hidden snippets of virulent code you may put students or staff at risk and be liable for breaking the school's technology-use agreement, so proceed with caution.
|
The delays and risks around downloading text editors and IDEs to school computers are the reason I use a computer language that can be compiled by internet browsers that are already pre-installed on school computers. Updates for browsers are typically handled automatically by I.T. administrators and no special permissions are needed to use web browsers.
Alternatively, there are many cloud-based IDEs that work within the computer browser without needing to be downloaded. Coding takes place inside the browser window and students can save work to cloud storage if they sign up for an account on the site. We won't use a cloud-based IDE for Codegogy because it 'hides' certain steps (such as handling local files) but there are suggestions for such programs in the Resources section.
Alternatively, there are many cloud-based IDEs that work within the computer browser without needing to be downloaded. Coding takes place inside the browser window and students can save work to cloud storage if they sign up for an account on the site. We won't use a cloud-based IDE for Codegogy because it 'hides' certain steps (such as handling local files) but there are suggestions for such programs in the Resources section.
Freeze & Reflect (2.1b):
|