Resources

Want to learn more about coding? Here's a list of resources to help you!


Beginner Resources

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:

Advanced Resources

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:

Code Sharing Tools

Code sharing tools are essential when you're collaborating with others on projects.

Creative Coding

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.


Getting Set Up

  • 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.

Beginner Resources

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:

  • Regressions (Single and Multivariable)

    • Linear Regression

    • Logistic Regression

    • Polynomial Regression

  • Decision Trees

  • Neural Networks

  • Support Vector Machines

  • Principal Component Analysis

  • K-Nearest Neighbor and K-Means Clustering

  • Multivariate Gaussian Distributions for Anomaly Detection

  • Collaborative Filtering

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:

Advanced Resources

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:

  • RNNs (Recurrent Neural Network)

  • LSTMs (Long Short-Term Memory)

  • CNNs (Convolutional Neural Network)

  • Batch Normalization

  • Regularization

  • Optimization Methods

    • Adam

    • Nadam

    • Adagrad

    • RMSprop

    • SGD

  • GRUs (Gated Recurrent Unit)

  • Embedding Layers

  • Activation Layers

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. There is a good book on the subject here, but you can also look up the topics in it if you want to learn more.

Project Ideas

  • Make a neural network from scratch

  • Medical imaging project

  • Recommendation system

  • Stock price predictor


Getting Set Up

  • 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 this.

  • 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.

Basics

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):

Design

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:

Frontend Web Development

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

    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.

    W3Schools jQuery Tutorial

  • React

    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.

    Official React Tutorial

    YouTube - React Crash Course

  • Other frameworks worth researching:

    Angular, Vue.js, Ember.js, Svelte

Backend Web Development

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:

  • Express (JavaScript)

    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.

    Get Node.js

    Installing Express

    Express Tutorial

  • Django (Python)

    If you're coming from a Python background, this might be easiest for you.

    Docs

    Official Django Tutorial

  • MySQL (not a framework)

    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.

    W3Schools SQL Tutorial

  • Other frameworks worth researching:

    Next.js (JavaScript), Laravel (PHP), Ruby on Rails (Ruby), Spring (Java)

Project Ideas

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


Getting Set Up

Both iOS and Android

Android

Click here for the official Android Studio docs (for both Kotlin and Java)

  • Kotlin

    Kotlin is the preferred language for Android development.

    Docs

    YouTube - Tutorial Playlist

  • Java

    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.

    YouTube - Tutorial Playlist

iOS

For iOS development, you can learn either Swift or Objective-C. However, Swift is favored over Objective-C (which is considered outdated).

Project Ideas

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)


Getting Set Up

Unity

Unreal Engine

Project Ideas

  • Platformer game

  • Recreate Minecraft

  • First person shooter game

  • Recreate one of your favorite games