Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

Computer Science in Modern Everyday Life

Summary
This article provides examples of Computer Science concepts in the modern world, especially in activities that young people are likely to be familiar with. It is mainly intended for teenagers who like computers and technology and want to know whether Computer Science would interest them as a major in college.

Stimulating interest in Computer Science

When I was a teenager, I was fairly proficient at using computers, but I had no idea what Computer Science was like as a field of study. Neither of my parents were computer experts, and I had no older role models to stimulate my interests. The only introduction I had to Computer Science prior to college was the AP 'Computer Science' class in my high school. I really enjoyed the class, but it only covered introductory programming, which was quite fun to learn but didn't at all give me any sense of the broad scope and important real-world applications of Computer Science. It wasn't until over halfway through college (as a supposed Computer Science major!) that I began to really gain a passion for the field, mainly through reading books, online articles, writing programs, and talking with more experienced peers.

I would have definitely been motivated to learn more about Computer Science at a younger age if someone had given me a connection between my computer-related hobbies (web browsing, online gaming, digital image editing) and Computer Science as an academic field of study. That is what I will attempt to provide in this article; hopefully, the concepts I present in the context of what teenagers do in their everyday lives can help to stimulate interest in Computer Science as a field of study in college.

Wait, but isn't Computer Science just programming?

No. That's one of the most pervasive misnomers regarding Computer Science.

Programming is an (important) engineering tool; Computer Science is an academic field of study like Physics or Mathematics. Programming is the act of writing code to instruct a computer to perform a sequence of actions. Computer Science is a broad academic field that deals with taming complexity in both the real world and the abstract mathematical world.

It's true that to actually do Computer Science, you often need to program computers (rather than, say, simply sketch out ideas on a whiteboard). Then again, to do chemistry, you need to mix solutions in beakers, but nobody says that Chemistry only consists of mixing solutions in beakers. As a corny analogy, programming is to Computer Science like telescopes are to astronomical science.

Real-world everyday applications of Computer Science

Here are some activities that young people might be familiar with, listed alongside some associated challenges and what concepts in Computer Science address these challenges:

Surfing the web

  • When you type in words on a search engine's web page, how does it give you back the results so quickly? (search algorithms, parallel computing)

  • How does a search engine company go about indexing and storing information about the billions of webpages online at a given time, especially when pages are constantly being created and deleted? (web crawling, data mining, databases, parallel computing)

Playing computer games

  • How come modern games look so rad, with all of their cool 3-D effects, and how can it all be rendered in real-time as you are playing and constantly changing the in-game environment? (computer graphics)

  • How come the in-game enemies seem to be 'smart' and able to learn from your actions? (artificial intelligence)

  • How is it possible for you and dozens of other people to play online simultaneously and still have the game feel responsive most of the time? (networking, client-server architecture)

Downloading music and movies (legally, of course)

  • How come filesharing programs like BitTorrent can perform so much faster than simply downloading from a website? (networking, distributed algorithms)

  • Isn't it astounding that when you download a file, it always arrives at your computer intact in pristine condition, even though it had to travel through thousands of miles of unreliable copper wires? (reliable networking protocols, error detection and correction)

  • How can high-quality photos, audio, and video be compressed so much (1/10 to 1/100 of original size) without losing much quality? (lossy compression algorithms)

Shopping online

  • How can you be reasonably confident that nobody will steal your credit card number while you are shopping online? (network security, cryptography)

  • How can the retailer keep track of what items are in stock and report the results in real-time on their website? (databases, web programming)

  • How can the retailer accurately predict what other items you might like to buy based on what you've recently bought? (artificial intelligence, machine learning)

Using your latest awesome cell phone

  • How come cell phones can now be used for so much more than simply making phone calls ... back in my day, we just used cell phones as, well, phones (programming for embedded devices, networking and communications protocols, wireless networking)

  • How can you effectively navigate around the options and even browse the web on that tiny screen on your phone? (user interface)

Neurotically updating your MySpace and Facebook pages and stalking other people's profiles

  • How come it's so easy and enjoyable to simply browse around and get lost for hours on these sites? (user interface)

  • How can these sites recall, store, and visualize interesting social networking relationships? (databases, search, visualization)

  • What steps do these sites take and what options do they provide to you to ensure that your privacy is maintained? (security models)

Traveling on an airplane

  • As modern planes become more and more automated, with more of their subsystems being controlled by software components, how can you feel safe flying on a machine where a single software bug could jeopardize hundreds of lives? How can we find difficult-to-squash bugs and give guarantees that software is functioning correctly? (software reliability, program analysis)

  • How do air traffic controllers manage to constantly direct hundreds of planes while under high-stress conditions? How can computers aid them in doing their jobs so that passengers can enjoy safe and timely flights? (user interface, communications, networking)

  • When purchasing tickets online, how is it possible for the computer system to search through millions of possible combinations of routes to give me the best deal on my tickets? (algorithms, search, parallel computing)

  • How come the self-check-in kiosks are so easy to use and much more efficient than waiting in line for people to check you in? You just swipe a credit card, and you're all set! (user interface, networking, databases)

Created: 2006-12-12
Last modified: 2008-11-09
Related pages tagged as computing education: