Computational Thinking
Think Like A Computer To Work With One
Computational Thinking is a set of problem solving strategies and frameworks that help make complex issues more manageable. This unit will use games and practical examples to practice techniques like abstraction and decomposition to take on full-stack computational problems.
Strategy
Welcome to Computer Science!
This course will survey the most common topics that make up the study of Computer Science. This is quite a lot to ask for a single class - English gets at least 13 years and there is still always more to cover! So what does it mean to study Computer Science? It means taking the time to examine the strategies and techniques you use to approach new problems like finding out which student is in the middle of the class in terms of age!
In academics, CompSci is defined as the study of algorithms. An algorithm is a process or procedure. It’s a plan with a purpose! If you are taking this course, you should already be familiar with lots of different algorithms from your Math and Science classes. Processes like using the quadratic formula or balancing a chemical equation are algorithms. They are a set of steps you follow to solve a problem. In this class we won’t be following algorithms, we will be taking a metacognitive step back to develop them. We don’t like solving the same problems twice.
Creating an algorithm is called programming. It’s the art of organizing logical steps to achieve a goal. You’ve seen things like event programs that organize ceremonies and concerts. Programming does not strictly require a computer or code, though technology is usually useful when solving most programming problems. Coding is the specific art of writing instructions for a computer, but just like squares and rectangles, all coding is programming but not all programming requires code.
Computational Thinking
There is no algorithm for writing algorithms, but there are some metacognitive strategies that can give you a better foothold for solving useful problems. This course will be using a framework of computational thinking which consists of three main stages: knowing what our tools/computers can do, addressing what we can do well, and coming up with a balance between human and computer to generate solutions.
The most common CT strategy you will see in this course is abstraction and decomposition. Abstraction is the act of simplifying an idea, for example saying you will check your email rather than say you will turn on your computer, open an internet browser, and log in to your email. It takes away details that might be distracting or irrelevant to the task at hand so that a problem can become more digestible. Decomposition is somewhat of an opposite task. It takes a problem and breaks it down into smaller steps to make it approachable. Mastery of computational thinking will involve artfully abstracting away unnecessary work while decomposing a problem into solvable bites.
A Brief History of Computing
Computing Power
If you are developing a computer program for the fastest devices on the market, you’re going to run into a problem: that device is always changing. The best device on the market when you started the project might be obsolete by the time you are done! It’s impossible to predict the future, but if you understand the rate of progress in computing developments, you will be able to make a much stronger guess!
But to start, what even makes a computer a computer? The definition is dynamic, but a general consensus is that it would be any device that can do arithmetic calculations and store specific algorithms to process them. For example, think of finding the average value of a set of numbers. Some devices can help you do the addition and division, but a computer will be able to run the full algorithm for you.
Early Devices
The first calculators (not computers) came about in the late 1600s, designed by Pascal and Leibniz. These used gears manually turned with a crank to perform calculations based on their initial conditions. The design behind these devices were technically impressive, but the manufacturing process and realities of using gears made these devices too inconsistent to use. Even if it would work correctly a majority of the time, we use calculators for their reliability so these devices were never widely used.
The first device that better matches our modern definition of a computer would be the Jacquard Loom in 1804. This device used punchcards to program a loom to create patterned textiles. The cards could be used to “reprogram” the device to make new patterns like how code is used today. It could even be argued that this device could count as the first 3D printer.
Charles Babbage and Ada Augusta designed the first programmable computer in the early 1800s, which was able to do calculations like Pascal and Leibniz' calculator and be programmed like the Jacquard Loom. However they were still constrained by the hardware of the time. Gears and other manufacturing realities made it impossible to actually build the “engines” even if their plans were accurate.
The first popular computing device was brought about via capitalism. The US Census Bureau wanted to speed up their count and offered a monetary reward to solve that decade-long problem. Herman Hollerith made a tabulating machine in 1890 that cut the count’s time by more than half and used his reward to create a new company: International Business Machines, or IBM. A few decades later, Alan Turing did some theoretical work to show that the logic behind all of these devices could be extrapolated to any mathematical problem (with enough time and space) and thus a near-universal push for computers began.
Electronic Computing
By the 1950s vacuum tubes made a lot of the complex designs possible to build. Massive computers like the ENIAC used the lightbulb-sized vacuum tubes and magnetic memory to execute complex programs and calculations. These devices were a lot of work to maintain, they generated a lot of heat and the bulbs needed to be regularly replaced, but these electronic computers were much more useful than any previous builds. The advent of the transistor allowed for these devices to fit on a desktop by the 60s, and by the 1970s programming languages that are still in use today were developed.
In the 1990s the widespread use of networking led to the modern internet and the pros and cons of computers that we live with today. But at every computer’s heart is the same logic that drove early calculators, and arguably even tools like the abacus. The next generation of computers might be faster or smaller or more efficient, but they are still constrained by their role as programmable calculators.
How To Build A PC
Processing
The brain of a PC is the Central Processing Unit, or CPU. This is a dense arrangement of gates that do the “thinking” for the device through arithmetic processes. Most modern CPUs rely on multiple processors, called cores, that work together to solve complex problems. A Graphics Processing Unit, or GPU, is similar but specifically optimized for parallel processes, like calculating the graphical output of a device. These parts, and all of the other components, communicate via the Motherboard, or MoBo, which acts almost like a central nervous system for a computer.
Memory
A computer’s memory is split up into two parts. First is the long term storage in the drive. Most modern computers use Solid State Drives, or SSDs, but Hard Disk Drives are still a popular choice when managing a strict budget. The short term, working memory is done with Random Access Memory, RAM. This is volatile memory which means it is only active when it is being utilized. Once the computer is powered down, nothing in the RAM is preserved, like cramming for a quiz.
Power
A computer is an electron transport center and thus it needs electrons to work. A Power Supply Unit, PSU, can take the AC current from a wall outlet and transform it into the appropriate DC for the different components in the PC. Moving electrons generate a lot of heat, so a dedicated heat sink is used to transfer that energy away from the delicate processors. Fans and a well designed case help keep the airflow efficient and the operating temperature of the PC low.
Other Resources
TBD