Skip to main content
31 answers
32
Updated 2266 views

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.


32

31 answers


1
Updated
Share a link to this answer
Share a link to this answer

Yamuna’s Answer

You're doing an amazing job, especially as a high school junior. You've chosen some excellent courses, and now it's a great time to focus on creating projects, strengthening your basics, and exploring areas like Java, web development, or data structures. Using AI tools can really boost your learning, help you debug code, spark project ideas, and enhance your work. Sharing your projects on GitHub is also a fantastic way to track your progress and showcase your skills. You're on a wonderful journey—keep learning, building, and staying curious!
1
0
Updated
Share a link to this answer
Share a link to this answer

Ryan’s Answer

Hi Vivi,

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Anuj’s Answer

Take AP Computer Science A next to master Java and object-oriented programming, building perfectly on your AP CSP foundation.
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.
0
0
Updated
Share a link to this answer
Share a link to this answer

sai’s Answer

Hi Vivi, you're doing really well. It might be helpful to learn SQL, data structures, algorithms, and cloud technologies. AI is especially important to explore since it's growing in many fields. Understanding the basics of Machine Learning and AI can lead to many job opportunities and help you grasp some of today's most influential technologies.
0
0
Updated
Share a link to this answer
Share a link to this answer

Mark’s Answer

Database fundamental type courses were incredibly helpful for me. I had studied full-stack without starting with DB basics, and if I had done the other way around I would have gotten more out of my courses.
0
0
Updated
Share a link to this answer
Share a link to this answer

Alexander’s Answer

Hi Vivi,

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!
0
0
Updated
Share a link to this answer
Share a link to this answer

Adam’s Answer

Hi there, I think you are already on a great track to prepare yourself! While courses are especially useful in learning the ropes and setting a baseline or standardizing your knowledge, the best way to learn and get real experience is to make your own projects. You can start at any level, but find something you may be passionate in, or want to play around with, and just start breaking things! Ai is also an increasingly smart tool to help you troubleshoot and learn how things operate. It will also help you identify what excites you most about Computer Science, Engineering and Development, so that you can further hone in on your skills as you grow.
0
0
Updated
Share a link to this answer
Share a link to this answer

Anuj’s Answer

Take AP Computer Science A next to master Java and object-oriented programming, building perfectly on your AP CSP foundation.
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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Jezlea’s Answer

Hi Vivi. You're doing great! The next classes you choose should align with what you want to focus on, like web design, app development, cybersecurity, data analytics, virtual reality, or AI. It's a good idea to learn different programming languages like C++ or Java. Being strong in one language is important, but knowing others can open more doors for you. I also suggest taking AI courses, as they're increasingly important in many careers, along with data analytics and database systems. If you're interested in web design, consider classes in both backend and frontend development. For cybersecurity, a network security class would be beneficial.
0
0
Updated
Share a link to this answer
Share a link to this answer

Vijaya’s Answer

Hi Vivi - Looks like you already have good foundation for a high schooler. I thinking building projects by using your knowledge and learning whatever is needed for the projects as you go, will be the best way to go. You can also build projects to solve small problems you see in your community or in your daily life.
0
0
Updated
Share a link to this answer
Share a link to this answer

Sanjeev’s Answer

Hi Vivi,

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Rachana’s Answer

Hello Vivi,

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Peter’s Answer

Hi Vivi! I can personally recommend Andrew Ng's Machine Learning course if you're interested in AI. For Computer Science in general you should be able to register for the GitHub Student Pack at https://education.github.com/pack which would give you access to other learning platforms for free (typically for 3 - 6 months). It sounds like you already found edX but there's also MIT OpenCourseWare at https://ocw.mit.edu/ for access to MIT's computer science lectures. You might also consider FreeCodeCamp as another option. Or if you just want to build coding projects that you're interested in, that's a totally fine way to learn as well!
0
Updated
Share a link to this answer
Share a link to this answer

Nitin’s Answer

You already have a strong start, especially for a high school junior. Since you’ve taken introductory courses in Python, VR game design, and computer science, I would recommend focusing next on classes that help you go deeper, not just broader.

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Sikha’s Answer

Hi Vivi,
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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Melrose’s Answer

Hello Vivi. As a junior in high school it's a great time to start thinking about your career and what courses you might want to take to expand your Computer Science knowledge. You are doing a great job so far. I would say it would be nice to take an introductory class for basic networking so you have an understanding of the basics of computers. Programming languages (python and Java), HTML for Web Design, Data Structures and Algorithms and a cybersecurity course will all go a long way towards preparing you for a career in Computer Science. Ask questions, network, and keep moving forward.
0
0
Updated
Share a link to this answer
Share a link to this answer

John’s Answer

You have done a good job being proactive and seeking ways to learn. Keep that up.

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

Durganand’s Answer

To deepen your computer science knowledge, move beyond basics to focus on core programming, math-based logic, and advanced technical courses.

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

wei’s Answer

You're on a great path with all the right steps. By studying AP Computer Science Principles, CS50, Python, and VR/game design, you're building a strong base in programming, problem-solving, and creative tech. Now, it's a good idea to dive deeper into a few key areas rather than just taking random courses.

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.
0
0
Updated
Share a link to this answer
Share a link to this answer

KARL’s Answer

Good afternoon, Vivi! It's exciting to know that you have many options beyond regular classes when it comes to learning about computer science or the overall area of information technology. Major Cloud Service Providers like Amazon Web Services and Microsoft Azure offer free or low-cost training using cloud technology. This includes hands-on labs along with lectures.

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:

This can be overwhelming, however it helps to pick a specific area you have interest and/or passion for and pursue available learning opportunities
Once you have done this once I believe it will be easier for the next learning objective as you gain experience on the various options, platforms, and technologies available.
0
0
Updated
Share a link to this answer
Share a link to this answer

Vamsi’s Answer

You're already ahead of most (AP CS, CS50, Python, game design is a solid foundation). But here's something worth thinking about as you plan ahead:

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. :)
0
0
Updated
Share a link to this answer
Share a link to this answer

James’s Answer

You've already mastered CS50 and Python, which is fantastic! Now, a great move forward is to explore Data Structures and Algorithms on NeetCode.io. This knowledge is key to landing jobs at top tech companies. With your experience in VR, trying out Unity with C# or creating a small web app using CS50's Web Programming course could be an exciting and rewarding challenge. At this point, it's not just about taking courses; it's about building real projects and familiarizing yourself with AI. These projects will make your resume shine when you apply for colleges and internships.
0
0
Updated
Share a link to this answer
Share a link to this answer

Anuya’s Answer

Hi Vivi! Awesome work on planning to expand your computer science skills after completing some basic courses.

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:

Berkeley's Introduction to Artificial Intelligence: https://inst.eecs.berkeley.edu/~cs188/sp26/
0
0
Updated
Share a link to this answer
Share a link to this answer

Jason’s Answer

This is a great question!

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/
0
0
Updated
Share a link to this answer
Share a link to this answer

Sami’s Answer

Hi Vivi! You're doing an amazing job building a strong foundation, and you've started earlier than most. Computer science offers many paths, and you're on a great journey. Consider exploring new languages like C++ and Java to expand your skills. Also, focus on understanding complex algorithms, data structures, and development methods. Don't forget to gain experience working with others in a team setting. Collaborating with different personalities is just as important as technical skills, and it will impress recruiters. Keep up the great work and show that you can thrive in a team environment!
0
0
Updated
Share a link to this answer
Share a link to this answer

Kinshuk’s Answer

Hi Vivi, as high school student - you are aleady ahead of most peers. I will recommend think of a project that is close to your heart and start working on it that can be practically used by your friends and family. This will give you put your theortical knowledge to test, and understand real life problems with end user, using your product.
0
0
Updated
Share a link to this answer
Share a link to this answer

Arvind’s Answer

Given that you have already done an impressive set of courses at the high school level, I'd recommend focusing on doing a few personal projects as well to supplement your interest in computer science. This will help you put your theory knowledge to practical use and also give you an idea on what area of computer science you find the most interesting and want to pursue.
0
0
Updated
Share a link to this answer
Share a link to this answer

Minigrace’s Answer

Hi Vivi,
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!
0
0
Updated
Share a link to this answer
Share a link to this answer

Maseerah’s Answer

You have great potential, and your interest in computer science, Python, and VR gaming is impressive! I recommend taking courses in Data Structures and Algorithms and Database Management Systems. These courses will give you essential skills that every computer science engineer, analyst, or developer needs. They are foundational for your career in CS.

Good luck,
Maseerah Muradabadi, UMKC alumni, Deloitte Senior Solution Specialist
0
0
Updated
Share a link to this answer
Share a link to this answer

Anusha’s Answer

AI skills, prompt engineering, and fundamentals are essential for starting your career with AIPDLC.
0
0
Updated
Share a link to this answer
Share a link to this answer

Vidhya’s Answer

You've done an amazing job by starting with AP Computer Science Principles, CS50, Python, and VR game design. Now, it's time to take the next exciting step and dive into courses that will enhance your problem-solving skills and introduce you to more specialized areas of computer science. Consider exploring AP Computer Science, Data Structures & Algorithms, AI & Machine Learning, Mobile App Development, and Cybersecurity to deepen your knowledge.
0