Wherever there’s a problem, computer scientists try to help solve it. CompSci can be applied across a surprisingly wide range of industries, including health tech, bio-tech, fin-tech, ed-tech, entertainment, military, retail, automotive, manufacturing, energy, government, sports, fashion, and farming. Say you’re interested in language, you could research how specialists fine-tune and train large language models like ChatGPT. If you’re interested in crisis prevention, you could find out how geographic information systems (GIS) and data analysis are used to respond to humanitarian and environmental emergencies. If you like to design things, you could work on creating interfaces and experiences using tactile feedback systems. CompSci careers include software engineer, robotics engineer, data scientist, tech policy analyst, cybersecurity analyst, bioinformatician, game developer, cloud architect, and ethical hacker, just to name a few.
Many computer scientists work in robotics labs and engineering firms, but they are just as easy to find in investment firms, hospitals, government agencies, universities, startup tech companies, and even in the Antarctic Ocean operating underwater robots. Some of the hottest topics for computer science (as of 2023… innovation is notoriously quick in this field) are artificial intelligence (AI) and machine learning (ML). Data science and big data are also huge buzzwords, and they refer to analyzing and extracting insights from large and complex datasets, including data privacy, data ethics, and machine learning for data integration. Quantum computing aims to tackle cryptography, optimization, and scientific simulations at much faster rates than classical computers. The autonomous systems found in self-driving cars have spurred a huge interest in navigation, perception, and safety research. Cybersecurity continues to be a huge issue for governments as well as businesses.
Take time to explore different branches of computer science to find out which topics and aspects interest you the most. Start by reading some good books on the subject. Get some exposure to computer science out in the real world by seeking out volunteer opportunities. Take a CompSci course in your high school. Do a deep dive into your subject with a summer computer science workshop or program. One of the best methods is to find a mentor who is a programmer, or computer science graduate student. They can provide guidance and insights into the profession. Here are more details on some actions you can take right now.
1. Take a Class in High School
The variety and levels of computer science classes vary greatly from school to school, but most high schools offer at least a few of the types of courses listed below. As your programming skills get more advanced and your project ideas more ambitious, you may need to look for courses at your local community college or seek online classes. (Stanford and Princeton have good online CompSci offerings on Coursera.)
Intro to Computer Science: A beginner-level course covering the fundamentals of programming, algorithms, and problem-solving using languages like Python or Scratch.
Web Development: An introduction to creating websites, including HTML, CSS, and JavaScript.
Programming: Advanced courses that delve deeper into coding and software development, often covering languages like Java or C++.
Computer Science Principles: An interdisciplinary approach that introduces students to a broad range of computer science topics, including algorithms, data analysis, and the impact of technology on society.
AP Computer Science A: A more advanced course focusing on programming in Java, preparing students for the AP Computer Science A exam.
AP Computer Science Principles: A course aligned with the AP Computer Science Principles exam, covering various computer science concepts.
Data Science: An introduction to data analysis, data visualization, and basic machine learning concepts using tools like Python and data visualization libraries.
Game Development: A course that teaches the basics of creating video games, including game design, graphics, and coding.
Mobile App Development: An introduction to building mobile applications for iOS or Android platforms using development environments like Swift or Java.
Cybersecurity: A course that covers the basics of cybersecurity, including online safety, ethical hacking, and data protection.
Robotics: An introduction to robotics, including programming robots and understanding their mechanical components.
Digital Media and Animation: A class focusing on digital media creation, including graphics, animation, and multimedia design.
Computer Hardware and Maintenance: A course that introduces students to computer hardware components and basic maintenance tasks.
Independent Study Projects: Your school may offer the opportunity to work on independent computer science projects under the guidance of a teacher or mentor.
2. Read a Book
Here are some books that cover a wide spectrum of computer science topics, from the foundational principles that underpin the field to the cutting-edge research areas that are shaping the future of technology and computing. The choice of texts depends on your level of expertise and specific interests within computer science:
Foundational books:
"Structure and Interpretation of Computer Programs" by Harold Abelson and Gerald Jay Sussman: This classic text introduces fundamental concepts in programming and computer science through the Scheme programming language. Published in 1985, this book has had a profound impact on the field of computer science and programming education.
“The Art of Computer Programming” by Donald Knuth: Another classic text, this covers the mathematical and algorithmic underpinnings of computer science, providing essential insights into the field's theory and practice.
"Introduction to the Theory of Computation" by Michael Sipser: This book covers the theory of computation, formal languages, automata theory, and complexity theory, providing a solid foundation in theoretical computer science.
"Operating System Concepts" by Abraham Silberschatz, Peter B. Galvin, and Greg Gagne: An excellent resource for understanding the principles and concepts behind operating systems.
"Computer Networks" by Andrew S. Tanenbaum and David J. Wetherall: This book covers the principles of computer networking, making it a fundamental text for network-related topics.
"Algorithms" by Robert Sedgewick and Kevin Wayne: An accessible introduction to algorithms and data structures, including essential algorithms used in computer science.
“The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary” by Eric S. Raymond: This book articulates the principles of open-source software development, illustrating how a decentralized and collaborative approach can lead to the creation of powerful and innovative software projects.
More recent or advanced topics:
"Artificial Intelligence: A Modern Approach" by Stuart Russell and Peter Norvig: An authoritative text on AI and machine learning, exploring advanced AI concepts.
"Deep Learning" by Ian Goodfellow, Yoshua Bengio, and Aaron Courville: A comprehensive resource on deep learning, a cutting-edge field within machine learning.
"Reinforcement Learning: An Introduction" by Richard S. Sutton and Andrew G. Barto: An in-depth exploration of reinforcement learning, a key area of AI and machine learning.
"Blockchain Basics: A Non-Technical Introduction in 25 Steps" by Daniel Drescher: A beginner-friendly introduction to blockchain technology, which is currently at the forefront of the technology landscape.
"Quantum Computing Since Democritus" by Scott Aaronson: This book delves into the fascinating and emerging field of quantum computing, covering both foundational and advanced topics.
"The Hundred-Page Machine Learning Book" by Andriy Burkov: A concise yet comprehensive guide to machine learning and its practical applications, suitable for both beginners and experienced practitioners.
"Programming Quantum Computers" by Eric R. Johnston, Nic Harrigan, and Mercedes Gimeno-Segovia: An introduction to quantum computing and programming quantum devices, exploring the intersection of computer science and quantum physics.
"Human Compatible: Artificial Intelligence and the Problem of Control" by Stuart Russell: A thought-provoking exploration of the societal and ethical implications of artificial intelligence, addressing cutting-edge AI ethics and safety concerns.
While reading books can be a valuable part of studying computer science, it is one of the most rapidly evolving fields. Very specialized books can become obsolete quickly, especially in areas like web development, machine learning, and cybersecurity. Books are also static and can’t provide you with interactive learning, feedback, or collaboration with peers. You might want to check out the extracurricular study ideas in the next section to bridge these gaps.
3. Extracurricular Study
Before you attempt your own full-blown research project in computer science, you may want to start by joining an existing challenge, community, or class outside of school. When picking out an extracurricular, remember that quality is often more important than quantity. Stick to an activity that genuinely interests you and then dig in.
Coding Clubs or Hackathons: Participating in coding clubs or challenges on platforms like Beecrowd, HackerRank, or Codeforces can help you stay current on the latest programming languages and give you an opportunity to collaborate on projects on real-world coding challenges in a team.
Computer-Science-Adjacent Clubs: You can also join math or science clubs that align with your computer science interests. These clubs often delve into topics like discrete mathematics and algorithms, which are essential in computer science. If your school has a robotics club or FIRST Robotics Competition team, consider joining. It's a hands-on way to apply your computer science knowledge to building robots and solving engineering challenges.
IT Support for School: Offer your computer skills to help maintain and troubleshoot the school's computer systems or help teachers and fellow students with tech-related issues.
Internships or Part-Time Jobs: Seek internships or part-time jobs at local tech companies, startups, or IT departments. Gaining real-world work experience can be invaluable plus you could make some money.
Online Courses and Certifications: Enroll in online courses and pursue certifications in areas like web development, artificial intelligence, data science, or cybersecurity to complement your high school coursework.
Once you’re feeling a bit more confident and you have some ideas for what you want to do, you could pursue your vision at a pre-college program, a local community college, a competition, an internship, or a virtual program. If you want to be free to conduct your own project, we still advise that you give yourself a deadline and have a qualified adult advisor or mentor who you can consult. While GitHub is great, there’s nothing like a human being to clear up misunderstandings and give you quick personalized guidance.
Find research programs close to home: We’ll go into summer computer science programs in more depth in the next section, but if you want to find all types of established research opportunities close to home, our High School Student Research Opportunities Database is an excellent resource. Click on your state, then search based on your location, institution, event type (in-person or virtual), and tuition (paid or free).
Open Source Contributions: Contribute to open-source projects. It's a great way to gain real-world experience, collaborate with experienced developers, and give back to the community. Websites like GitHub can help you find projects to contribute to.
Tech Blogging or YouTube Channel: Start a tech blog or a YouTube channel where you share coding tutorials, project walkthroughs, or tech-related content. This can improve your communication skills and help others learn. As Richard Feynman used to say: “If you want to master something, teach it.”
Work with a professor: If you have a clear idea of your passions, you can reach out to professors in your field to see if they are open to collaborating with you. Refer to our Guide to Cold-Emailing Professors (written by Polygence literature research mentor Daniel Hazard, a Ph.D. candidate at Princeton University).
Enter a competition: Participate in STEM fairs or science competitions where you can showcase your computer science projects. Create innovative software or hardware projects and present them to judges and peers. Or look for local or regional programming contests, such as the American Computer Science League (ACSL) or the USA Computing Olympiad (USACO). These contests can be both fun and challenging.
Engage in your own research project: Students with initiative and focus can opt to tackle research independently. Carly Taylor, a Stanford University senior who has completed several research projects this way, outlined a guide about how to write a self-guided research paper. By reading it, you’ll get a better understanding of what to expect when taking on this type of project.
Here are some top picks for summer computer science research programs. We chose them based on a combination of their affordability, name recognition, social opportunities, and academic rigor.
1. Data Science Summer Program
Hosting institution: Harvard University
Cost: Free, and stipends are available
Format: In-Person (Boston, MA, and San Jose, CA)
Application deadline: Mid-May
In this 2-week introduction to machine learning, students will build a self-driving toy car. The course starts with lectures on conceptual-level statistical learning, machine learning, and programming components. Next, you will be introduced to various machine learning methods and algorithms and their applications in different fields, including biomedicine. You also learn Python and implement the new concepts you’re learning and the classification algorithms you’re generating into programs. Lunch includes conversations with machine learning experts who’ll share their views and experience with data science. Check the site for the most current application information.
2. Computer Science Scholars (CSS)
Hosting institution: Carnegie Mellon University
Cost: Free
Format: In-person (Pittsburgh, PA)
Application deadline: Ongoing
This excellent program for rising high school juniors gives students who have historically been excluded from STEM fields the chance to work with leaders in computer science. Over 4 weeks, students are exposed to the core elements of programming and problem-solving in Python, including algorithmic components, basic data structures, and problem-solving techniques. You’ll also get to meet industry leaders to learn about opportunities in the field of computer science. A nice bonus is that students who complete the program and want to continue may be invited to return as rising seniors to CMU’s AI Scholars program the following summer. Check the site for the most current application information.
3. Center for Talented Youth (CTY)
Hosting institution: Johns Hopkins
Cost: $919 (varies)
Format: In-person (various sites across the US) and online
Application deadline: Mid-May
CTY offers computer science programs in everything from Astrophysics to Electrical Engineering, Fundamentals of Comp Sci to Probability, and Game Theory. For the in-person option, you can stay on campus or commute daily. In addition to coursework, in-person students staying onsite participate in various social activities, including sports, games, talent shows, movie nights, and much more. Check the site for the most current application information.
For all our picks, check out our Top 20 Computer Science Summer Research Opportunities for High School Students.
If you’re searching for a virtual computer science research opportunity, consider doing a project through Polygence with one of our CompSci mentors.
A few of the summer programs we found were either paid or unpaid internships. You can also check with your local community college or local tech, digital marketing, IT, or software development businesses.
1. DSI Summer Lab
Hosting institution: The University of Chicago
Cost: Paid internship
Format: In-person (Chicago, IL)
Application deadline: Mid-February
In this interdisciplinary 10-week paid summer research program, high school students are paired with a data science mentor to work on a research project. Topics include computer science, data science, social science, climate and energy policy, public policy, materials science, and biomedical research. As research assistants, students will engage with and hone their skills in research methodologies, practices, and teamwork. No prior research experience is needed to apply, and in fact, they encourage participation from a broad range of students. Check the site for the most current application information.
2. The Scripps Research Translational Institute (SRTI)
Hosting institution: Scripps Research
Compensation: Unpaid but receive college credit
Format: In-person (San Diego, CA)
Application deadline: Late March
SRTI promotes advanced personalized healthcare through cutting-edge research, including mHealth monitoring. Their Student Research Internship Program is for highly motivated students interested in health sciences, statistics, and computational/computer science. Interns work with and learn from internationally renowned scientists in genomics, bioinformatics, and digital medicine. The program aims to prepare future leaders in translational medical research.This program does a great job of combining lab work, research projects, and mentorship. Check the site for the most current application information.
Polygence Scholars Are Also Passionate About
Computer science is a huge umbrella for all sorts of research projects. You can delve into AI and Machine Learning, constructing chatbots or predictive models for different applications. You can research cybersecurity threats, encryption tools, and online privacy protection. You could develop websites, create web applications, and explore the latest web technologies. Data science might include data analysis, visualization, and data-driven solutions. In game development, you can learn programming and game design principles while creating unique games. Mobile app development is another avenue, targeting Android or iOS platforms. The ethical considerations of robotics offer yet another wide array of choices.
1. Detecting bots on Twitter (Machine Learning)
Bots are everywhere now! With fake news and bot detection becoming ever more important as a social and political issue, you might want to try your hand at a computer science bot detection project. You can do a project where you measure and quantify how easily it is to detect tweets that have been written by bots. You can start by going through the following four steps: 1) Collect some data, ideally labeled as "fake.” 2) Observe properties of "real" vs. "fake" tweets. 3) Write a program (an example might be a Naive Bayes classifier) to label new, incoming tweets as either “real” or “fake”. 4) Evaluate how good the program is using a sensible metric.
Idea by mentor Clayton
2. Choose-your-own-adventure story! (Game Design)
In a choose-your-own-adventure game, players are presented with situations like: You are in a dark room, and you hear a knock at the door, what do you want to do?: 1) Open the door or 2) Explore the room. Based on what the player chooses, the story goes in different directions! In this project, you will have the full creative freedom to build a choose-your-own-adventure game with as many twists and turns as your heart desires. You’ll learn the basic principles of programming, such as how loops and functions work.
Idea by mentor Carina
3. Analyzing Cancer Genomes
The Cancer Genome Atlas (TCGA) is a wealth of open-source data including patient health records, genomic sequencing, and histology slides. You can analyze this data to calculate correlations between morphological histology, features, and mutations. Using machine learning, you can also predict patient survival based on histology or genomic data. Focusing on a rare cancer would be ideal for this project as rare cancers tend to be understudied and even analyses utilizing small datasets could lead to interesting discoveries. There are multiple open source tools developed such as CLAM that you could use for this project.
Idea by mentor Sharifa
Check out even more project ideas on the Computer Science Virtual Research Project Ideas for High Schoolers post, which groups ideas into Game Design, Design, Data Analysis, and Machine Learning.
You can also brainstorm your own project ideas based on what human behaviors, motivations, or trends interest you. If you want support, the Pathfinders program gives you the chance to meet with three different mentors who specialize in your field of interest. You can discuss your project ideas with them, and they can help you grow your idea, discover new research techniques, and point the way to great resources and alternative options.
To get a sense of the scope CompSci covers, here are a few projects by some of our Polygence Scholars.
1. Human Emotion Recognition to Recommend Songs
Advik developed a model that uses machine learning techniques to identify the five basic human emotions from facial images: happiness, anger, sadness, surprise, and neutral. His supporting code then used this emotion to recommend a song for the user.
2. A Wearable Device that can Monitor the Onset of COVID-19
Sameen worked on designing a finger and heart rate monitor that can measure heart rate, blood oxygen saturation, and body temperature, the vital signs that are largely indicative of the onset of Covid-19. She constructed the device by connecting a MAX30102 and MCP9808 sensors to an Arduino Uno. She was inspired to work on this project after her aunt, a nurse, told her how much she struggled with the depletion of personal protective equipment at the hospital especially due to COVID-19.
3. Improving PER (Player Efficiency Rating) in Basketball through Machine Learning
Raghav’s project explores the intersection of advanced statistical methodologies and basketball with a focus on improving the Player Efficiency Rating (PER) metric. His research delves into three distinct AI models: Lasso Regression, Random Forest Regression, and Neural Networks. His project had a very successful outcome, being published in the Research Paper for Journal of Sports Analytics, Curieux Academic Journal, and the Research Archive of Rising Scholars. He also presented his paper at the Symposium of Rising Scholars!
See more computer science projects done by Polygence Scholars.
Polygence mentor Ross Greer, a PhD Candidate in Electrical & Computer Engineering studying Intelligent Systems, Robotics, and Control at the University of California, San Diego, has written a great CompSci research primer on how to get a handle on your project. We won’t rewrite all that great work he did here so definitely go and check that out. He helpfully breaks down the states of computer science research into: 1.) scoping out your topic 2.) working on the project and 3.) completing the project. Dividing what can seem like an overwhelming beast into these three chunks definitely makes the endeavor more manageable. Ross is big on the idea of finding the best project for you—one that takes your skillset, your interests, and your goals into account.
Another useful resource is this post about outlining your research paper. Your research will generally include sections such as Materials, Methods, Data, Discussion, and Conclusion. You’ll also need to write an Introduction that opens with the problem you’re trying to solve, any existing research, and an overview of your research—all of which is best written about after you’ve finished your research and programming. Another important piece to your paper is your thesis statement. You can always come up with a preliminary or working thesis and then refine it or completely revise it as you learn more. You also may need to write an abstract. At its core, an abstract is a standalone piece of writing that offers a snapshot of the problem, methodology, findings, and conclusions. If you need more general guidance overall, here’s a great article on how to write a good research paper.
Finally, if you have some ideas and want to conduct computer science research with the guidance of a mentor, apply to be a part of our flagship research and mentorship program.
Quick links:
As our Head of Engineering Ádám Gyulavári noted, when it comes to coding, “a research paper or a blog post might not be enough to demonstrate the work you’ve done and the features of the application or program you’ve created.” That’s why he created the very useful post Showcasing on GitHub: The Complete Guide. Other ways to showcase your CompSci research include entering your project into a science competition, attending a conference such as Polygence’s very own Symposium of Rising Scholars, or publishing in science journals such as IJHSR, SFJ, NHSJS, the Curieux Academic Journal, or The Young Scientists Journal. For more showcasing ideas, check out 20 Journals and Conferences to Consider.