The Department of Mathematics and Computer Science recently had the pleasure of hosting two unique summer camps for high school students interested in Computer Science. The camps were part of the Department’s effort to expose more young people to the field that has had a most profound impact on how we live, work, and play.
The first camp, which was called Camp Code, lasted three days. During that time, the participants learned a number of very useful tasks: how to develop a plan for accomplishing a task, how to turn that plan into steps a computer could follow, how to express those steps in a variety of computer languages, and how to make robots move using computer code. The students used Scratch (http://scratch.mit.edu) to create programs visually. These exercises helped them understand that thinking like a programmer involves breaking complicated problems down into smaller parts and then using sequence, selection, and repetition to implement solutions to each part. They used a version of Scratch called Snap (http://www.finchrobot.com/software/birdbrain-snap-v02-alpha) to express commands for a Finch robot (http://www.finchrobot.com/) to follow. Later in the camp, the students moved away from these graphical programming approaches and started writing actual computer code in Visual Basic, PHP, and Python. It was a lot of material for three days, to be sure. By the end of it, however, the students had learned some very useful skills. More importantly, they had gotten practice solving complicated problems methodically. That is what Computer Scientists do for a living, and that is what makes them valuable in virtually every field.
The second camp was called “Guardians of Cyber Space”. During its two-day run, the campers learned the basics of cyber security. The camp began with an explanation of how our country’s critical infrastructures, like the electric power grid, are currently under cyber attack. They learned about the various threats that bring down computers and networks of all varieties. Then they learned about the various tools that we have at our disposal to help protect us from cyber attacks, including various techniques for encrypting data, applying digital signatures to documents, and checking the validity of data and software using hash functions. They learned about SQL injection attacks against databases and how to guard against those. They played with tools for recovering forgotten passwords, and they learned about how to make password systems stronger. They even got to set up their own miniature computer network and modify IP tables to control access to the internal network and to the Internet. The campers really seemed to enjoy these hands-on activities.
I firmly believe that every student in high school and college needs to learn at least some Computer Science. A person who learns to program, how to set up efficient networks, and how to identify and seal vulnerabilities in software and hardware learns, out of necessity, how to think clearly, precisely, and logically. But they don’t just learn these as skills. They learn much more than just application. Because Computer Science is, fundamentally, a science, they learn why what they do works and how it can be improved and what theoretical limits might be in play. This makes them flexible thinkers. They’re not slaves to the current tools, simply because they can create new ones to take their place.
This mix of theory and practice, of thought and skill, is what makes Computer Science the gem that it is. A Computer Science student learns to be an expert problem solver, an acute thinker, an innovator. I can think of no other field that engages a young person so intensely in critical thinking as Computer Science does.
That is why these camps are a valuable thing to offer. In fact,given the current shortfall of Computer Scientists, offering these camps is an absolute necessity.
The Bureau of Labor Statistic predicts that there will be 270,000 new Computer Science jobs by 2020. Somebody has to fill those jobs. The high schoolers who attended our camps this week will be ready.