Career Day: What is Computer Science?

I recently spoke at both my son and daughters schools for Career Day. It’s always rewarding to talk with the students, answer their questions, and maybe help them see a future they might find interesting. I have done a bit of everything tech-related (coding, networking, IT, entrepreneurship) so I can answer a broad set of questions about technology and work. This year I decided to talk about how I first got started at their age and then later pursued a computer science degree in college. The goal would be to try to clarify “what is computer science?” and hopefully make it sound interesting and fun in the process.

After explaining that my interest in technology started while playing games with my friends (some things haven’t changed) and that I went to college for computer science, I ask the kids “what is computer science?”  No one tried to even take a swing at an explanation. This isn’t surprising because it’s not a very clear name. So together we read the first definition of computer science found online from a Michigan Tech web page:

“Computer Science is the study of principles, applications, and technologies of computing and computers.“
  
This is an awful definition!  It tells us nothing and sounds like corporate-speak.  My goal is to motivate the students to want to pursue computer science, not make their eyes glaze over.  So we jump into what makes computer science interesting and unique. There are four main points that make this a great field: problem solving, creativity, working in teams, and combining skills with other fields.  

Computer science is first the science of problem solving.  We take technology ideas and challenges and then use problem-solving skills to make them a reality. The Apple Watch shipped last week and what sort of problem solving did the team do to create it? We talk about adding new features to the watch besides the obvious texts, email, and calls. What about the touch capability?  Someone had a great idea to be able to touch the watch and send physical taps and messages to friends. Now both the software and hardware teams have to solve a problem about how to make this work. Anytime someone has an idea or goal to accomplish with technology, computer scientists bring their skills to the table and help solve the problems presented.

Next I point out that problem solving as a skill requires precision, creativity, and careful reasoning.  The main point here is creativity. The Apple Watch team used creativity to come up with new ideas on how to use a watch. Creativity is what keeps the tech field interesting as we come up with new ideas for apps, games, and software. We don’t have to just write the same old software to new devices and platforms. Use creativity to create new things!

And computer scientists most often work in teams.  Problem solving is more efficient and is best done as a team.  The goal here is to dissuade anyone from thinking that computer science is a solo programmer sitting alone in a room or cubicle typing code all day long. It takes teams of people working together to make these big ideas a reality. Computer scientists work together in teams to solve problems using creativity to do so.  This is sounding immensely more interesting than the first definition that we saw about “principles, applications and computing, computers” and some such.

Finally, some of the most interesting things in technology happen when we combine computer science with other fields.  Computers can solve any number of problems in other fields and they are used in nearly every field today. Pick your favorite subject and then apply computer science skills to make it better. For Career Day the schools gave the presenters a list of major job fields called “Career Clusters”. I’m pretty sure the purpose was to find your career and tell the students what “cluster” it belongs in. Instead I told the kids that everyone single one of these clusters uses technology and needs computer scientists.  What a great opportunity to mash together interests in creative new ways and then solve the problems presented.

So far everything we discussed was at a high level, so next week looked at some major areas of computer science. Here we could talk a little more specifically about what exactly the students might do with a degree.  The areas we discussed include operating systems, computational science, programming languages, intelligent systems, information storage and retrieval, and software engineering. There are great examples in each area.  

For Operating Systems we touched on what exactly is an operating system and what is it used for. Everyone has heard the term “Windows” but the majority did not know this was an “operating system” and that other examples include OS X, Linux, iOS, and Android. For Computational Science we talked about big mathematical problems including the traveling salesman problem. Did the students think companies like UPS and FedEx simply load boxes on trucks till they are full each morning and send them out? Of course not! These companies are constantly improving their delivery algorithms and computer scientists working there. For programming languages I explained how they sit on top of the operating system and that we use programming languages like Python and Java to create the apps, games, and programs that we use. However someone has to create these languages and this is what this area is about.

Intelligent Systems was a fun area for discussion because all the students had heard of artificial intelligence or AI.  When pressed for examples of AI in everyday life they immediately responded with “Siri”. We then talked about AI in games like playing against the CPU or bots or the AI in larger computing challenges like self-driving cars. For Information Storage and Retrieval we talked about the increasing amount of data generated as a society with photo, video, and cloud-based content. And once all this data is online we have to be able to search it. This is a tough problem that a lot of companies are trying to solve.

And finally Software Engineering puts all these things together to design, develop, test, and maintain all the apps and programs that we use every day. This is probably the largest area of computer science and it builds on the others.

To show that all this stuff isn’t as scary or complicated as they might think, we then opened some Python code and played an adventure program. I let the students choose the path through the adventure and we ended either escaping with the treasure or being eaten by a dragon. Then we examined the Python code to see how the adventure might change randomly each time we played. Python is easy to read so even the non-coders in the audience could see what was going on.  Showing the kids code and games is always a winner and keeps them engaged.

So how can they start? I finished the talk by encouraging the kids to start by simply creating with technology. Use the tools that you have whether that is a laptop, tablet, smartphone, or game console.  One way could be learning to code with tools like Python, Scratch, or Java. Or it could be drawing and painting with digital tools or doing animation. Find games that allow creativity like Minecraft and its logic system with redstone, or Microsoft Project Spark for making game worlds on Xbox One or Windows. Then I told them to show their parents what they are creating. This will demonstrate that they are spending positive screen time and learning new skills in the process.