Resources
Useful places to learn, practice, and build.
This is a growing collection of courses, books, tutorials, tools, and datasets that I find useful or worth sharing. It includes friendly starting points for people new to computer science as well as deeper references for experienced learners.
Most of these resources are freely available online.
Good places to start
CS50x: Introduction to Computer Science
A rigorous but welcoming introduction to problem solving, algorithms, data structures, and programming. It assumes no previous computer science experience.
The Missing Semester of Your CS Education
A practical MIT course about the command line, Git, editors, debugging, profiling, and other tools that traditional courses often leave implicit.
R for Data Science
A hands-on introduction to importing, transforming, visualizing, and communicating with data in R.
Learning to program
- Codecademy — Short, interactive lessons across many programming languages; useful when you want to begin by writing code immediately.
- DataCamp — Interactive courses focused on Python, R, SQL, data science, and machine learning.
- The Python Tutorial — The official tour of Python, best for someone who understands basic programming and is new to the language.
- Hacking with Swift — Project-based tutorials for Swift, SwiftUI, and Apple-platform development.
- LeetCode — Algorithm and data-structure practice, especially useful after learning the fundamentals.
Tools and workflows
There is no universally best editor. If a course specifies one, begin there. Otherwise, choose the tool that fits the language and the amount of guidance you want.
- Visual Studio Code — A flexible general-purpose editor with extensions for most languages.
- Positron and RStudio — Strong choices for Python and R data-science work.
- JetBrains IDEs — Full-featured, language-focused environments such as IntelliJ IDEA and PyCharm.
- Xcode — The development environment for Swift, SwiftUI, and Apple platforms.
- Visual Studio and Eclipse — Established environments for .NET, C++, Java, and other workflows.
- Happy Git and GitHub for the useR — A friendly guide to installing Git, connecting it with GitHub, and using both effectively.
- Quarto: Get Started — Official tutorials for reproducible documents, presentations, websites, and books.
Data science and artificial intelligence
Core books
- An Introduction to Statistical Learning — An accessible introduction to statistical learning, with editions and labs for R and Python.
- Modern Data Science with R — Data wrangling, visualization, modeling, databases, and responsible data science.
- Fundamentals of Data Visualization — A language-independent guide to clear, accurate, and effective visualization.
- R Graphics Cookbook — A practical recipe collection for common visualization tasks in ggplot2.
- Artificial Intelligence: Foundations of Computational Agents — A broad, open textbook on the foundations of artificial intelligence.
- Forecasting: Principles and Practice
- Tidy Modeling with R
- Beyond Multiple Linear Regression
- Statistical Inference via Data Science
- Introduction to Probability for Data Science
- Text Mining with R
- Advanced R
- Efficient R Programming
- R Packages
- Mastering Shiny
- Geocomputation with R
- Data Science at the Command Line
Finding data
- Kaggle Datasets, OpenML, and the UCI Machine Learning Repository offer broad collections for projects and classroom use.
- Google Dataset Search, Data.gov, World Bank Open Data, and UNICEF Data are useful starting points for public data.
- The Registry of Open Data on AWS and Awesome Public Datasets help locate larger or more specialized collections.
Mathematics and computer systems
- Mathematical Foundations of Computer Science — Course materials connecting discrete mathematics with foundational computer-science ideas.
- Mathematics for Machine Learning — Linear algebra, calculus, probability, and optimization for machine learning.
- Dive into Systems — An approachable introduction to C, architecture, operating systems, and parallel computing.
- A Journey in Creating an Operating System Kernel — A project-centered guide to understanding operating systems by building a small kernel.
A living collection. I will keep adding material as I find resources worth sharing. A link here is an invitation to explore, not necessarily an endorsement of every viewpoint or paid offering on the linked site.