
Ask Me Anything (AMA)
A Computer Science Q&A Forum
by Eric Young
1. "What is Computer Science?"
Originally scientists built computers to solve tedious arithmetic problems, but over time they became incredibly useful in solving other problems as well — running the entire internet, lifelike graphics, artificial brains, or even simulations of the Universe. What makes computers particularly amazing is how they boil down to a simple matter of flipping ones and zeros. Computers have become smaller and more powerful at an impressive rate — there is more computing power in your smart phone than there was in the whole world in the 1960s.
Computer Science is the discipline that studies what computers can do and how we can use them to solve problems.
As a diverse and overarching field in our modern, technology driven world, Computer Science has applications in almost any field you can think of — from medicine and finance to sports and the arts. In addition, studying Computer Science helps develop skills that are useful in any career, such as problem-solving, analytical skills, and creativity.
2. “What can I do with a Computer Science background?”
Popular Career Paths:

Software Developer
Roles & Responsibilities:
Develop and test software to meet consumers' and clients' needs
Develop upgrades for existing applications
Monitor quality and performance of applications through testing and maintenance
Document all work for future reference
Salary & Outlook:
Median Annual Salary: $110,000
Growth Rate: 21% in the next decade

Computer Systems Analyst
Roles & Responsibilities:
Research and evaluate new technologies
Consult with clients
Identify the organizational needs of IT systems
Analyze costs and benefits
Add new functionality to systems
Oversee installations
Test systems
Train users
Salary & Outlook:
Median Annual Salary: $90,920
Growth Rate: 9% in the next decade

Web Developer
Roles & Responsibilities:
Know relevant web programming languages and frameworks
Create and test applications for websites
Collaborate with product managers and UX designers
Troubleshoot website problems
Maintain and update websites
Monitor website traffic
Stay up-to-date on technology
Salary & Outlook:
Median Annual Salary: $73,760
Growth Rate: 13% in the next decade

Data Scientist
Roles & Responsibilities:
Identify valuable data sources and automate collection processes
Undertake preprocessing of structured and unstructured data
Analyze large amounts of information to discover trends and patterns
Build predictive models and machine-learning algorithms
Combine models through ensemble modeling
Present information using data visualization techniques
Propose solutions and strategies to business challenges
Collaborate with engineering and product development teams
Salary & Outlook:
Median Annual Salary: $130,000
Growth Rate: 28% in the next decade

Instructor/
Professor
Roles and Responsibilities:
Compile, administer, and grade examinations
Prepare and deliver lectures to undergraduate or graduate students on topics such as programming, data structures, and software design
Evaluate and grade students’ class work, laboratory work, assignments, and papers
Direct research of other teachers or of graduate students working for advanced academic degrees
Maintain student attendance records, grades, and other required records
Supervise undergraduate or graduate teaching, internship, and research work
Salary & Outlook:
Median Annual Salary: $117,380
Growth Rate: 11% in the next decade
3. “What courses will I take if I major in Computer Science?”
For reference, this is the set of relevant courses that I took as a CS major and Math minor at Duke University:
CS Core:
Computational Methods in Engineering
Data Structures and Algorithms
Discrete Math for Computer Science
Computer Architecture
Design & Analysis of Algorithms
Introduction to Databases
Mathematics:
Multivariable Calculus
Linear Algebra & Differential Equations
Ordinary & Partial Differential Equations
Probability
Data Analysis & Decision Science
Python Programming in Math
CS Electives:
Everything Data
Machine Learning
Algorithms in the Real World
4. “What are some recommended online resources for self-learning Computer Science?”

Harvard CS50X
An entry-level course taught by David J. Malan, CS50x teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem sets are inspired by real-world domains of biology, cryptography, finance, forensics, and gaming.

Princeton Algorithms
This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

My Blog: Teaching & Tech
My blog introduces Computer Science topics through real life analogies and interesting examples. I discuss how I teach CS in the classroom and provide insights on how I approach solving intriguing CS problems. If you want to learn more about Computer Science, check my blog out!
Ask Away
Ask me a Computer Science question!
I will try my best to provide an informative response and maybe I will even feature your question on this page :)