Create Em started out with discussions on objectives, or desired projects. Since the Raspberry Pi is so versatile, allows for easy manipulation, and provides a mecca for machine learning, we will be completing a slew of projects with this device.
The Raspberry Pi is essentially a mini computer (pocket-sized). It is a device for non-experienced and experienced programmers alike. By working through projects associated with the pi, its user can learn programming in a hands-on/interactive way. The pi's introduction started with an activity on all of its parts that come with it and what those parts do. For this class we are using the Raspberry Pi 3 model B. The pi is a single board computer with all the components on one board. The point was made that these components are very similar to traditional computers and cell phones, just on a smaller scale.
Morse code is a type of code that is used to send telegraphic information using rhythm. Morse code uses dots and dashes to show the alphabet letters, numbers, punctuation and special characters of a given message. When messages are sent by Morse code, dots are short beeps or clicks or flashes, and dashes are longer ones.
Morse code is named after Samuel Morse, who helped invent it. Teletypewriters were invented in the early 20th century with their own codes and gradually replaced Morse code. Other types of technology that are easier to use for communication became even more common. Though it is not widely used, Morse code is still used to communicate on some amateur radios.
We learned how to encode and decode morse code, first with a pencil and paper, then by writing programs in Python on the pi; being able to decode it through text or by sound! Here is a setup with the pi connected to a breadboard (easily manipulated tool for conveying circuits) and a speaker. By connecting two jumper wires and a button on the breadboard, students wrote programs in Python to relay messages in morse through the speaker!
Here is a fun morse code translator on the SCPhillips site.
We reviewed what we learned of Morse code last week and how it relates to binary i.e Encoding, and decoding. Think of Binary, 0's and 1's, as the language computers 'speak'. When you break a computer down, it is basically a whole lot of 1010101011000's. Something needs to decode this into text so that humans can easily read and understand it. Sure, "only real programmers code in binary", but that would make learning programming a little off-putting!
There are plenty of ways to learn the Binary Number system, a base two number system. In other words, this number system uses two digits: one and zero. The number system we are most familiar with, the Decimal Number system, a base ten number system. So, this system uses ten digits: 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9. Students were introduced to binary by learning binary magic tricks, a binary 'piano', and binary flashcards.
Below is an example of the number 21 (in the decimal number system) and 10101 (in the binary number system) using binary flashcards and a binary piano:
A formal definition from wiki of Cryptography: the art of witting or solving code. 2 To dive into what this means, we used a Caesarian cipher, where the letter place is moved by three. This is a great tool to help understand the important concept of abstraction in computer science. Encoding and decoding this caesarian cipher exercises skills in abstract thinking where you use a symbol to represent something. 34
Here is an example bit of code we wrote using the Pythonista app:
Here is a link to Instructor, Davis' GitHub with a little more on the python program file.
The game of life is a cellular automaton devised by the British mathematician John Horton Conway in 1970. The "game" is a zero-player game, meaning that its evolution is determined by its initial state, requiring no further input. One interacts with the Game of Life by creating an initial configuration and observing how it evolves, or, for advanced "players", by creating patterns with particular properties. 5 -Just dipping our feet in artificial intelligence. We are always trying to get computers to become as intelligent as humans. Apple's Siri and Amazon's Alexa a couple examples of our attempts.
The game of life is 'turing-complete', which means that technically, anything that could be computed, could be computed using the game of life.
An example on the Tech Em whiteboard of the Game of Life:
Intelligence and computers are not exactly related. On the other hand, computation and computers do. Humans have been working for a long time at bridging the gap between intelligence and computers. You are probably familiar with that work by using Apple's "Siri", Microsoft's "Cortana", or Amazon's "Alexa". Though, if you have used these devices, you've probably noticed that each one can get a lot of things wrong, or cannot perform every action you want it to. So, you can see we still have some ways to go with bringing intelligence to the "minds" of computers. Artificial Intelligence (the field), "is the study of computer systems that attempt to model and apply the intelligence of the human mind." 7
A British mathematician, Alan Turing is famous for inventing the mathematical model, the Turing Machine (no matter the complexity, a machine that can calculate anything that is computable) in 1936. Turing asked the important question: "Can machines think?". According to him, we eventually will be able to make a computer that thinks! 7 To see if we've reached that point, we have the Turing Test. This is a test to determine whether a computer is in fact, intelligent. It is a test to figure out whether a person can be fooled by a computer, into thinking the computer is another person (not a computer). 6 After ending the discussion we completed a simple Turing Test activity to see if the computer can fool us into thinking it is a human.
"What can Watson do for you?" Artificial intelligence talks continued with learning what Watson is, pretty much a cognitive assistant. In other words, a machine to help humans make decisions and take action. So, it helps to increase a person's potential. Powerful stuff! It is not only essential to learn where computer science has started to where we are now, but to learn where we are headed. Learning about this, will help prepare us for using AWS Lambda to run code on Amazon's "Alexa" without the use of your own server.
We are going to put together and code a Gemma microcontroller from Adafruit, an 8x8 LED matrix display. We'll use binary numbers, soldering techniques, and patience! Here are some tips from Wray about soldering and more detailed information on the LED pendant project.
Next week, we'll put together a TV-B-Gone Kit by using soldering skills we learned from this class.
Zelle, John M. Python Programming: An Introduction to Computer Science. 2nd ed. Wilsonville: Franklin, Beedle & Associates Incorporated, 2010. Print. ↩