what are some classes that i can take to expand my knowledge of computer science?
I am a high school junior, I have done ap comp sci p already, i am continuing my CS50 course harvard, i did a course on vr game design, intro to python course as well. But i feel like there could be some other courses that i could be taking to expand on computer science.
31 answers
Yamuna’s Answer
Ryan’s Answer
Since you've already started with computer science by taking AP Comp Sci and online courses, it's time to work on personal projects. These projects will help you apply what you've learned and pick up new skills. You can find lists of projects online, ranging from easy to hard, to try on your own. Also, consider joining hackathons to work on projects with others and gain experience in a competitive setting. Look for local opportunities, like setting up a website or creating a database for a small business. While courses are important, gaining hands-on experience is just as crucial.
Anuj’s Answer
Enroll in a Data Structures and Algorithms online course (like Princeton's on Coursera), as it is the absolute core of all advanced computing.
Finally, look into a Discrete Mathematics class to build the essential logic and mathematical reasoning required for college-level CS.
sai’s Answer
Mark’s Answer
Alexander’s Answer
You've made a fantastic start by taking AP Computer Science Principles! Since you're in high school, trying AP Computer Science A could be a great next step for you. It's a bit more advanced, but you're ready for it. To build a strong foundation, consider exploring Data Structures & Algorithms as well.
Remember, it's always a good time to think about what parts of computer science excite you, like web development, machine learning and AI, or mobile app development. Keep exploring and discovering what you love!
Adam’s Answer
Anuj’s Answer
Enroll in a Data Structures and Algorithms online course (like Princeton's on Coursera), as it is the absolute core of all advanced computing.
Finally, look into a Discrete Mathematics class to build the essential logic and mathematical reasoning required for college-level CS.Dive into an **Artificial Intelligence or Machine Learning Foundations** course to understand data modeling and neural networks.
Try a **Full-Stack Web Development** class to master HTML, CSS, JavaScript, and database management for building real-world applications.
Explore an **Introduction to Cybersecurity** course to learn about network security, encryption protocols, and ethical hacking basics.
Jezlea’s Answer
Vijaya’s Answer
Sanjeev’s Answer
Great question and great to know that you want to increase your knowledge by taking other classes. This is the best time to explore different subjects. The best courses that will help you in the future are:
Programming Fundamentals - You're already on the right path and you've taken intro to Python. If this interests you then learn more about it. This is a great language and will help you in the field of data science
I'm sure you've already taken math classes but think about algebra, geometry, statistics
Robotics - This is another great hands-on coding and systems thinking that you can explore if your school offers it.
Cybersecurity - This is in great demand and getting to understand cybersecurity will help you
Data Science and AI basics - Once you understand basic programming, explore these.
I hope this helps.
Rachana’s Answer
Start with core CS classes like Introduction to Computer Science, Programming (Python or Java), Data Structures & Algorithms, and Discrete Math.
Then add more specialized classes such as Web Development, Databases/SQL, Computer Architecture, Operating Systems, or AI/Machine Learning depending on what interests you most.
Peter’s Answer
Nitin’s Answer
A few great areas to explore are data structures and algorithms, web development, discrete math, cybersecurity, databases, and computer architecture. Data structures and algorithms will strengthen your problem-solving skills, web development can help you build real projects, and discrete math gives you the logical foundation behind a lot of computer science. Cybersecurity and databases are also useful because they expose you to practical, high-demand areas of tech.
If you want my advice, I would prioritize data structures, algorithms, and one project-based course where you can build something on your own. That combination will help you grow faster than taking several more beginner-level courses. The goal now is to start developing depth and applying what you know in real projects.
Sikha’s Answer
You’re definitely on the right track if you want to grow your career in the software/IT industry. I think the next step is to figure out which specific area interests you the most, because that will help you focus your time and energy in the right direction.
If you want to go into app development and become a full-stack developer, you can start by learning a UI framework like React. For the backend, it would be helpful to learn an object-oriented programming language such as C#, Java, or C++. You should also start with the basics of SQL and then gradually build up to more advanced database concepts.
If you’re more interested in web development, then you should focus on building a strong foundation in HTML5, CSS3, and JavaScript, along with a framework like React.
Overall, I’d suggest choosing one path first, building a solid foundation, and then expanding your skills step by step.
Melrose’s Answer
John’s Answer
Other answers provided specific guidance about which resources to use, but I want to give more general advice. In a software engineering career you need to understand the tools you use (practical) but it also helps to understand a bit of math and computer science (theory) behind it.
Continue to learn different languages and software tools, but also learn about computer science topics. Discrete math and data structures and algorithms are, in my opinion, the core topics in computer science that software engineers need. A language may provide premade and reusable data structures such as lists or hashtables, but the computer science theory understanding will tell you which one to use. That computer science foundation will help you build your own solutions that are efficient and easy to maintain later.
Durganand’s Answer
1. Advanced High School and Dual Enrollment Classes
- Enroll in classes that offer college credit to show your academic strength.
- AP Computer Science A: This course emphasizes object-oriented programming with Java and is ideal for earning college credit.
- Dual Enrollment in Linear Algebra or Discrete Mathematics: These math courses are essential for computer science and will give you an edge in university algorithm classes.
- Data Structures and Algorithms: Take this through dual enrollment to get a head start on college-level coding, covering topics like linked lists and sorting algorithms.
2. Specialized Online Academic Tracks
- Since you've completed Harvard's CS50, explore free, advanced online courses.
- MITx 6.00.1x: This course on edX delves into computer science theory and computational thinking using Python.
- CS50W: Learn to design and deploy web applications with Python and JavaScript, building on your CS50 knowledge.
- C++ Programming: Learn C++ for VR game design, as it is crucial for understanding game engines like Unreal Engine.
3. Applied Systems and Infrastructure Knowledge
- To understand how code works with computers and networks, take practical systems courses.
- The Missing Semester of Your CS Education (MIT): This free course covers command line mastery, Git version control, and shell tools.
- Introduction to Linux: Learn to navigate and manage Linux systems, vital for backend development and cloud computing.
If you need help, we can:
- Plan your 12th-grade class schedule to balance APs and dual enrollment.
- Find free links to advanced CS50 courses.
- Brainstorm a summer project combining Python and VR game design.
wei’s Answer
Consider taking AP Computer Science A if it's available at your school. It focuses on Java and object-oriented programming, which are important for a solid computer science background. Java skills are valuable since many college programs and jobs use similar concepts.
Next, think about exploring these areas:
Data structures and algorithms: This is crucial in computer science. Find a beginner-friendly course covering arrays, lists, stacks, queues, trees, graphs, recursion, sorting, and searching. This knowledge will help you in college and job interviews.
Web development: Learn HTML, CSS, JavaScript, and maybe React. You can quickly create visible projects like portfolios, games, dashboards, study tools, or community apps.
Databases and SQL: Many software projects rely on data storage and retrieval. Understanding SQL and relational databases will make your projects more realistic.
Computer systems basics: If you liked CS50, you might enjoy learning about memory, operating systems, networking, Linux, and command-line tools. This gives you a deeper understanding of how computers work.
AI and machine learning: Once you're comfortable with Python, try a beginner machine learning course. Start with simple projects like image classification or data analysis before tackling advanced AI topics.
Most importantly, focus on building projects. Create something like a VR learning game, a personal website, a Python automation tool, a small web app, or a game with user accounts and a database. Colleges and employers want to see that you can apply what you've learned.
KARL’s Answer
You can also find affordable self-study courses on platforms like Udemy and LinkedIn Learning. These often lead to certifications that employers value. I've used these resources in my career too. A popular area right now is Artificial Intelligence (AI), with many training courses and certifications available. While some training options might have costs, there are often programs or sponsors that help students cover these expenses.
KARL recommends the following next steps:
Vamsi’s Answer
Traditional coding skills like Java, Python, and web development are increasingly being handled by AI tools like GitHub Copilot, Cursor, and Claude Code etc So instead of just stacking more coding courses, focus on what AI can't easily replace:
- Systems thinking: understanding how large, complex systems are designed and why
- Data and databases: SQL, data modeling, how information flows through systems
- Cloud and infrastructure: how software actually gets deployed and run at scale
- Problem framing: knowing what to build and why, not just how to build it
The engineers who will thrive are the ones who can direct AI tools effectively, not just write code themselves. :)
James’s Answer
Anuya’s Answer
Since you've already taken a Python course, consider diving into an introductory course on Artificial Intelligence and Machine Learning. This will deepen your understanding, especially with AI becoming more important in tech.
A great course to start with is Berkeley's Introduction to Artificial Intelligence, and you can access most of the materials for free at https://inst.eecs.berkeley.edu/~cs188/sp26/.
Good luck!
Anuya recommends the following next steps:
Jason’s Answer
I always like to equate programming languages to hammers because it's a simple analogy that nearly everyone can relate to. Although hammers are a tool in all trade workers toolbelt the trade itself determines the type of hammer. Construction workers use a framing hammer, automotive or metal fabrication workers use a ball-peened hammer... etc...
Nearly all modern software engineering positions are going to require a considerable focus on OOP patterns however much has changes since the original Gang of Four, Design Patterns book was written in the 1990's. Most modern OOP programming languages include opinionated specifications for these patterns baked into the compiler.
However game development for example, even though OOP languages are industry standard focus on an entirely different skillset.
OOP is a highly sought after programming paradigm in most corporate or enterprise work environments due to its native ability to translate data to real world behaviors(objects). Additionally, most modern cloud native distributed systems will feature a heavy reliance on OOP fundamentals alongside other paradigms such as imperative or functional programming.
I would highly recommend spending time familiarizing yourself with the following books and reading materials
Reading Fundamentals
- Design Patterns: https://en.wikipedia.org/wiki/Design_Patterns
- Agile Software Development(S.O.L.I.D. Patterns):
- https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445 or
- https://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258
- Clean Architecture: https://www.oreilly.com/library/view/clean-architecture-a/9780134494272/
- Working Effectively with Legacy Code: https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052
- Test Driven Development: By Example: https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530
- Designing Data-Intensive Applications: https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/
- Database Internals: https://www.oreilly.com/library/view/database-internals/9781492040330/
Microservice & Cloud Native
- Microservices Patterns: https://www.oreilly.com/library/view/microservices-patterns/9781617294549/
- Building Microservices: https://www.oreilly.com/library/view/building-microservices-2nd/9781492034018/
- Fundamentals of Data Engineering: https://www.oreilly.com/library/view/fundamentals-of-data/9781098108298/
AI Assisted Development
- Beyond Vibe Coding: https://www.oreilly.com/library/view/beyond-vibe-coding/9798341634749/
LeetCode Exercises
- https://leetcode.com/discuss/post/4595959/oops-basic-to-advanced-topics-part-1-int-heyk/
Sami’s Answer
Kinshuk’s Answer
Arvind’s Answer
Minigrace’s Answer
You're doing great with your computer science journey! To keep growing, try diving into how computers store data and process logic. You're building a strong base, so the next step is exploring specialized platforms. If you're interested in applying your skills or creating a portfolio, consider joining high school programs like MIT PRIMES. Also, see if there are local hackathons or coding clubs where you can work on team projects. Keep up the amazing work!
Maseerah’s Answer
Good luck,
Maseerah Muradabadi, UMKC alumni, Deloitte Senior Solution Specialist