GPA HS Career Day – Computer Science

The International High School I work at recently had their first ever Career Day and they asked me to present on my field: Computer Science. This presentation seeks to introduce high schoolers to the CS field, and give them an overview of what they can do/learn in the field, future career choices they might consider, and a little bit of advice about what/how to study.

The International High School I work at recently had their first ever Career Day and they asked me to present on my field: Computer Science. This presentation seeks to:

  1. Introduce high schoolers to the CS field
  2. Give them an overview of what they can do/learn in the field
  3. Give them an idea of future career choices in the field
  4. Give them a little bit of advice about what/how to study

Intro

What is Computer Science?

A simple definition in the “Simple Wikipedia” says that Computer Science is “the study of how to…

  1. Manipulate
  2. Manage
  3. Transform
  4. Encode

…data.” A good example of this kind of thing would be a Computer Graphics program that allows you to do all of these things at once:

Source: https://www.youtube.com/watch?v=rnBQAwjsfj8
Source: https://www.youtube.com/watch?v=rnBQAwjsfj8

Computer Science requires a basic knowledge of…

  1. Math
  2. Science
  3. Logic

A good example of this is a simple flowchart because this is basically how computers and algorithms work. They go through a series of simple steps, asking very simple questions, and performing very simple commands to produce some kind of result.

flowchart

Computers are (at their very most basic level) the stupidest metal boxes on earth. They only really understand TWO things: ON and OFF (1 and 0). All computer language, at its core, is just a combination of 1’s and 0’s. But it is the combination of thousands and millions of small, simple steps of 1’s and 0’s added together that creates the massive complexity of today’s computer programs.

Computer Science will push your…

  1. Creativity
  2. Problem Solving Skills
  3. Need for Lifelong Learning

… to the limit. In fact, much of the technology we enjoy today was dreamed up in Science Fiction or other flights of fancy long before it became a reality. Here are a few good examples:

Credit Cards

The first mention of a card that could be processed as money was in 1887 in a book titled “Looking Backward: 2000-1887” by Edward Bellamy. Yet it wasn’t until 1946 that the first actual bank card was invented, and a true “credit” card didn’t become available until 1951.

iPod

I recently read an article in which billionaire CEO Richard Branson reminisced about the time (1986) he jokingly declared (in an article to be published on April Fool’s Day) that his company Virgin was inventing a “Music Box” that could store all the music in the world on it. Steve Jobs later admitted to Branson that he’d been intrigued by the concept when he read about it, and Branson admits that his “joke” may have inspired Jobs and Apple to launch iTunes and the iPod.

Multi-Touch

The movie Minority Report (starring Tom Cruise) came out in 2002 and featured some amazing computer technology that included Cruise being able to use special three-fingered gloves to move, resize, zoom, and rotate images on his computer screen. This is a good example of multi-touch technology that started becoming widespread in 2007 with the release of the iPhone. I can’t help but imagine that the movie may have partially inspired the development of this kind of technology.

Flying Cars

For years, in Science Fiction, flying cars have been a mainstay, and just this year I saw a video of a prototype flying car that may be ready for production and sale by as early as 2017.

As a quote that boldly posted on the high school walls states:

The best way to predict the future is to create it.
-Abraham Lincoln/Peter Drucker

This has never been truer than where technology is concerned. Computer Science (and Engineering) are on the bleeding edge of the future. In fact, nearly every program, application, programming language, and technology that I know today wasn’t even invented when I went through school.

Technology Year invented My age Most recent update
Internet 1982 1 y.o. 2011 (IPv4)
HTML 1992 11 y.o. 2014
CSS 1996 15 y.o. 2012
JavaScript 1995 14 y.o. 2011
jQuery 2006 25 y.o. 2014
WordPress 2003 22 y.o. Today
iPhone 2007 26 y.o. 2014

In fact, if you’re interested in going into the Computer Science field, there’s a HIGH likelihood that what you’ll be working on and building in your career hasn’t even been invented yet! This field leads the way into the future.

Computer Science has Impacted Every Industry

  1. Medicine
  2. Security
  3. Business
  4. Education
  5. Agriculture
  6. Automobiles (even flying cars)
  7. Everything!~

One distinction I thought I might have to make was the difference between an engineer and a computer scientist. Basically,

  1. Engineers: MAKE cool stuff (work with hardware, wiring, chips, machines, and so on)
  2. Computer Scientists: make it DO cool stuff (work with software, program the machines, and so on)

What Can I Learn in Computer Science?

Computer Science can be broken down into two major “branches”:

  1. Theoretical CS
  2. Applied CS

These branches can be further broken down into four “categories”:

  1. Theory (similar to research, mathematical theory, etc)
  2. Algorithms & Data Structures (like what you would learn in school – CS fundamentals)
  3. Computer Architecture (more along the lines of engineering)
  4. Programming Languages (writing code)

The following is a look at some of the most popular coding languages of 2015:

codeeval2015.001

And within these CS categories, there are multiple “avenues” to pursue including:

  1. Numeric & Symbolic Computation
  2. Software Engineering
  3. Artificial Intelligence
  4. Networking & Telecom
  5. Database Systems
  6. Computer Graphics
  7. Operating Systems
  8. Distributed Computation
  9. Parallel Computation
  10. Human and Computer Interaction (User Experience – UX Design)
  11. Security & Cryptography
  12. Modeling & Simulating Real-World Problems
  13. Ethical & Social Issues
  14. Robotics
  15. Game Design
  16. Web Design

And within my current discipline (web design), there are even more specialties:

  1. Front-end development (dealing with what the website looks like and how it performs – using HTML, CSS, JavaScript, and jQuery)
  2. Back-end development (dealing with the function of the site and management of date – using PHP, MySQL, Python, Ruby, and Java)
  3. Full-stack development (combining the two former disciplines)

Why Choose Computer Science?

For me personally, Computer Science is a perfect blend of my skills in math & science with my skills in art and creativity. But beyond that, CS is a field of study that teaches you how to think – and I like to think.

Everybody in this country should learn how to program a computer because it teaches you how to think. – Steve Jobs

It would be wonderful if every kid wrote computer programs and understood how computers work. It would certainly make you a better thinker. – Bill Gates

In fifteen years we’ll be teaching programming just like reading and writing. We’ll be looking back and wondering why we didn’t do it sooner. – Mark Zuckerberg

Knowledge of computer programming is as important as knowledge of anatomy when it comes to medical research or clinical care. – Larry Corey, Fred Hutchinson Cancer Research Center

In fact, learning Computer Science isn’t all about tech companies: 67% of all software jobs are outside the tech industry – in banking, retail, government, entertainment, and so on. And indeed, in the modern economy, there is a growing need for problem-solving skills across ALL jobs.

What’s Wrong with this Picture? (Source: Code.org)

Show Me the Money!~

So, what kind of money can you expect to make as a computer scientist? Here are some examples I found on the web:

  1. Starting Salary: $40-60,000 (ESL in the US = $28,000)
  2. Median Salary: $90,000 (ESL in the US = $40,000)
  3. Top Salary: $150,000 (ESL in the US = $73,000)

(My current career is ESL in South Korea. I make between $33-40,000 USD including full-time + part-time work after nearly a decade doing it – needless to say, I’m looking to transition back into programming whenever I can~)

In fact, according to Geekwire.com, numerous computer science jobs pay better than lawyer and pharmacist jobs.

Career Day - Computer Science (7)
Numerous 0ther well-paid computer science job options in the US are listed here at Business Insider.

Big Opportunities

From what I can see after following the computer industry for a while is that in the present time and near future, there are/will be big opportunities available in:

  1. Big Data (big companies want this)
  2. Internet programming (the Internet is everywhere)
  3. Mobile programming (the industry is booming)
  4. Ruby (current developers can charge up to $100/hr for work in Ruby – compared to the going rate of $50/hr for WordPress developers)

How Do I Start?

I asked some advice from a number of my friends and contacts about how to get into the computer science industry. Their collective experience includes jobs in:

  1. Google
  2. YouTube
  3. Microsoft
  4. Microsoft Security
  5. IBM
  6. Lenovo
  7. MOZ
  8. Airbnb

One of the things about working in tech is that it’s possible to get into it nearly no matter what age or background you are.

Indeed, there are some 90-year-olds who are just getting into designing technology professionally, and some 11-year-olds who are developing mobile apps for the iTunes App Store.

A lot of the stuff we do hasn’t been done before. By the time things are released to the public, we are already started on the next “thing”. There is tons of problem solving and thinking outside the box involved. Half the hardware we use here we are using in a way it wasn’t designed for. But it’s easier to take an existing thing and rethink it to do what you want… The “What you know” isn’t as important as the “How are you going to figure it out?” – James Hickok (my cousin @ Microsoft)

Start a … blog. Write tutorials. Share things that you learn. Learn things by writing about them. That’s how I got to know people in the community. It’s also how I was able to successfully launch Theme Hybrid… And, always reply to comments on your blog. You’ve got to interact with your readers. At a certain point, that gets tough, but keep the conversation going. – Justin Tadlock (WordPress developer I asked some questions to @ WPChat.com)

I would recommend that you learn on your own… You will find that a major in Computer Science doesn’t teach you everything you need to know to be successful on a team. The University tends to focus on teaching the fundamentals of programming languages and only slightly touches on other important aspects of software development… One aspect that is frequently overlooked in people looking for software development opportunities is the need to have great social skills along with technical skills. – Jared Siirila (former classmate and next door neighbor in the dorms)

My classmate Jared also prepared a video to describe his experiences in the software industry over the past 9 years. Check it out:

What you can do to get started:

  1. Build a portfolio of work – show how you learned/taught yourself X, Y, or Z
  2. Do a “Hackathon” where you join other programmers to build something cool in a limited amount of time
  3. Network – in school and out – make as many friends as you can because you never know when your contacts may hear about opportunities that could help you out
  4. Get an internship – this is something I wish had been pushed harder on me when I was younger. If you want a good job, you need some experience – get experience by doing an internship
  5. Build your personal website to share what you’re doing and learning
  6. Join Twitter to keep up with the latest trends in your industry
  7. Get a “self-education” – most of the specifics of you need to know won’t be taught in university
  8. Work on your “people skills” – you’ll need them when you start collaborating on projects

Conclusion

As a quick reminder for all that this post covers, here are the FIVE best things you’ll be doing if you choose to pursue a career in Computer Science:
Career Day - Computer Science

Be Awesome

Resources

  1. Code.org Stats
  2. CS Ed Week Stats
  3. What is Computer Science & Careers?
  4. Exploring Computer Science Statistics

Quick Tip: Use Chrome’s Emulator Tool for Better Development

Google Chrome has a pretty nifty emulator tool that enables better website development by emulating the different devices that you would want to test your websites on.

A few keys points about the emulator that makes it unique and much better for development than merely stretching your browser window to various sizes:

  1. Chrome’s minimum browser width (400px) is still wider than the smallest device size (320px iPhone 3/4)
  2. Using the emulator tool also changes the user agent variable in Chrome so that it thinks and acts as if it were the actual device it is emulating
  3. The emulator shows a grid and rulers with pixel dimensions behind the device window

How to use the Chrome Emulator?

  1. Open the Element Inspector (right-click “Inspect Element”)
  2. Click on the mobile device icon in the upper-left corner of the Element Inspector (see screenshot)
  3. Select the device you wish to emulate from the dropdown menu at the top (see screenshot)
  4. Tip: Refresh the page for proper user agent spoofing and viewport rendering
google-chrome-inspector-element-device-mode
1. Open the Element Inspector and click the mobile device icon
google-chrome-inspector-element-device-mode-activated
2. Select the device you wish to emulate from the dropdown menu