If this is your first time programming, you should start out by learning the basic logic of programming and learn a beginner-level functional programming language such as Python or JavaScript. Here are some resources to help you get started:
Scratch (block programming to help teach the logic of programming)
edX (you can find hundreds of free CS courses here)
After gaining some experience with functional programming, object-oriented programming (OOP) is the next step. Python and JavaScript support OOP as well as functional programming, so it may be easier to add on to your knowledge of Python and JavaScript rather than learning a completely new language. Here are a few OOP languages:
Tutorialspoint Java Tutorial (has more advanced topics)
Tutorialspoint C++ Tutorial (has more advanced topics)
Code sharing tools are essential when you're collaborating with others on projects.
GitHub allows you to share the code for your projects publicly (which will help display your knowledge to employers in the future) and it allows multiple people to easily collaborate on a project.
To start using GitHub, create a new GitHub account. After that, follow this guide to set up Git on your computer: Setting Up Git (Guide).
The creative coding frameworks below can be used for interactive graphics, games, and procedural art. They're a fun way to get started programming, especially thanks to their visual aspect. They both have extensive tutorials and documentation as well as a helpful community.
The Coding Train is an educational YouTube channel that covers Processing and p5.js and showcases many coding challenges.
For data science on your local machine, you should install Jupyter Notebook.
You can also use Google Colab to write and execute Python code in your browser.
Using Kaggle Notebooks may be better than the above options if you're doing a Kaggle competition.
Data science at its core attempts to find relationships in data. This can be done using supervised or unsupervised learning. Read this article to find out more. Here are a few of the topics that are in data science:
Linear Regression
Logistic Regression
Polynomial Regression
There are a few smaller models, but for now, you should start looking up Medium articles on these topics. I find that the people there are very good at explaining the concepts that drive these models. Before this, though, you would also want to know either Python or R (I strongly recommend Python). Here's a few resources for Python and the topics above:
If you are at this stage, you know all of the topics above, but likely haven't explored the full depth of neural networks. Try learning about the internals of the neural network and learning about the following components too:
Adam
Nadam
Adagrad
RMSprop
SGD
The TensorFlow tutorials and Medium articles will be your best resources here. At this stage, you should also try learning about a bit of reinforcement learning and building some applications based on what you have learned so far in data science. Neural Networks from Scratch is a good book on the subject, but you can also look up the topics in it if you want to learn more.
Make a neural network from scratch
Medical imaging project
Recommendation system
Stock price predictor
I recommend Visual Studio Code (VS Code) as an IDE.
This isn't necessary, but I prefer to use Git Bash as an integrated terminal in VS Code. If you need help configuring it, you can consult VS Code's documentation.
For both frontend and backend web development, you'll likely need to install Node.js and Node Package Manager (which comes with Node.js)
For backend web development, additional installations (including other IDEs) may be needed depending on your choice of framework. For IDEs and required installations for specific programming languages, see THE BASICS section.
I recommend learning about HTML, CSS, and JavaScript before using web frameworks. These 3 languages are the most important web languages. After that, move on to frontend web development and design, and once you become familiar with frontend, you should move on to backend development. Here are the best general web development resources:
Also, I'd recommend learning about the following (this stuff is mostly conceptual at a beginner level, but you'll become more familiar with it as you begin implementing it):
The best way to get good at design is to practice! As you begin doing more and more web design, you'll start noticing small details on company websites that can be applied to your own websites. However, for beginners, here are some helpful starting points for design:
A consistent color scheme is vital for websites! This article explains basic color theory very well: https://neilpatel.com/blog/website-color-scheme/
Bootstrap (most well-known CSS framework)
This is a huge list of resources if you're looking for something specific: https://github.com/bradtraversy/design-resources-for-developers
Frontend web development mainly involves coding the user interface/user experience (UI/UX) of a webpage. You can use vanilla JavaScript for frontend web development, and I'd suggest doing at least one project using vanilla JS to become familiar with it, but frameworks make development easier. Here's a few of the top frontend frameworks worth learning how to use:
jQuery is very easy to learn and it's convenient, but it's slowly becoming outdated in the web development community in favor of other frameworks. Nonetheless, it's good to know it - I just don't recommend it being the only frontend framework you learn.
React is one of the most popular frameworks right now. It's harder to learn initially, but it makes your code more organized (which is better for long-term projects that need to be maintained), and it's better to use React rather than jQuery for large projects.
Backend development essentially gives a website its functionality and makes a website dynamic; it allows users to make accounts and generate posts on your website. Depending on your needs, you might need to learn an additional programming language for backend web development. Here's a few notable frameworks in various languages:
If you're already familiar with JavaScript, Express would be easiest for you since it's a framework for Node.js, which is a JS runtime environment. Node.js has a lot of various packages as well, which is helpful for large projects.
If you're coming from a Python background, this might be easiest for you.
If you use a framework that supports ORM (object-relational mapping), you won't need to write raw SQL queries, but it's still good to know SQL because it teaches you how to best store data.
Next.js (JavaScript), Laravel (PHP), Ruby on Rails (Ruby), Spring (Java)
The best way to learn is through doing projects! Through trial and error, you'll gain experience. If you get stuck, Google how to do something or ask for help in the Coding Club Discord server. If you have a website idea in mind, pick a frontend and/or backend framework and try to implement it. If you need project ideas, here's a list of ideas to inspire you:
A hangman game
A quiz game
A personal/portfolio site about you
Use the Giphy API
Task list/a productivity app
A chat app
If you decide to use Flutter or React Native, I recommend using Visual Studio Code (VS Code) as an IDE.
For Android development you'll need Android Studio.
For iOS development, you can use Xcode.
Flutter uses the programming language Dart, which is object-oriented and has C-style syntax.
If you're familiar with web development, React Native is in JavaScript and might be easier for you.
Click here for the official Android Studio docs (for both Kotlin and Java)
Kotlin is the preferred language for Android development.
Java is more popular than Kotlin and is widely used outside of app development. If you've taken AP Computer Science A, you will already have experience with Java, so app development with Java might be easier for you.
For iOS development, you can learn either Swift or Objective-C. However, Swift is favored over Objective-C (which is considered outdated).
Swift is highly recommended for iOS development.
Be creative! If you have past projects, you can try to make one of them into a mobile app. Here's a few ideas for apps you can make if you need inspiration:
Calculator app
Exercise tracker
To-do list
Painting/drawing app
Contact tracing app (challenging but relevant)
Unity and Unreal Engine are two of the most popular game engines. Here's something that can help you decide which one to go with: https://gamedevacademy.org/unity-vs-unreal/.
You can use Visual Studio as an IDE for both Unity and Unreal Engine.
P.S. A lot of programming languages have packages or libraries specifically for game development. A few include Pygame (Python) and MelonJS (JavaScript).
Jimmy Vegas on YouTube has a variety of different game tutorials for Unity that you can follow. This playlist covers a lot of the Unity basics.
Platformer game
Recreate Minecraft
First person shooter game
Recreate one of your favorite games