Helpful resources for students in COGS 108: Data Science in Practice at UC San Diego.
Nothing here is required. Use it to review something from lecture, get unstuck on your project, or go deeper than the course has time for. Sections after the fundamentals follow the same order as the course itself.
Every entry has a one-line description and a tag for what kind of thing it is: book, video, interactive, course, docs, cheat sheet, data, paper, tool.
Found a dead link, or something that helped you that isn't here? Open an issue or a pull request — see Contributing.
Fundamentals
Following the course
- Finding and Collecting Data
- SQL and Databases
- Data Ethics and Privacy
- Data Wrangling with pandas
- Exploratory Data Analysis
- Data Visualization
- Statistics and Inference
- Text Analysis and NLP
- Machine Learning
- Geospatial Data
- Communicating Results
Reference
COGS 108 assumes you already know basic Python. If you're rusty, start here.
- Introduction to Python — the COGS 18 textbook, written for this course sequence; the fastest way to review exactly the Python COGS 108 expects. (book)
- COGS 18 course site — lecture slides and materials from the prerequisite course. (course)
- COGS 18 Materials repo — notebooks and practice problems from COGS 18. (course)
- The Python Tutorial — the official language tutorial; the authoritative answer to "how does this actually work?" (docs)
- Python Crash Course, 3rd ed. resources — free cheat sheets, solutions, and setup guides from a popular intro book (the book itself is paid). (book, cheat sheet)
Reading about Python isn't the same as writing it. These give you problems to solve.
- Practice Python — short beginner exercises with solutions; good for a 15-minute warm-up. (interactive)
- CodingBat: Python — bite-sized logic and string/list problems that check your answer instantly. (interactive)
- Codecademy: Learn Python 3 — guided in-browser course, no install required (some content requires a paid account). (course)
- Exercism: Python track — 140+ exercises with automated feedback and free human mentoring. (interactive)
- LeetCode — interview-style algorithm problems; harder and more algorithm-focused than anything COGS 108 requires, but useful if you're prepping for internships. (interactive)
- Jupyter documentation — official docs for notebooks and JupyterLab, including keyboard shortcuts and the interface tour. (docs)
- Markdown Basic Syntax — how to format the markdown cells in your notebook (headers, links, lists, code blocks). (docs)
- GitHub Docs: Hello World — official 15-minute walkthrough of repos, branches, commits, and pull requests. (docs)
- GitHub Docs: Getting started — the umbrella guide; where to look when you need the official answer. (docs)
- git — the simple guide — one page covering the handful of commands you'll actually use. (docs)
- Learn Git Branching — interactive visual sandbox; the clearest way to build a mental model of branches and merges. (interactive)
- GitHub Desktop docs — official docs for the point-and-click app, if you'd rather avoid the command line. (docs)
- Managing personal access tokens — GitHub no longer accepts your password over HTTPS; this is how you generate the token you use instead. (docs)
- Installing and using
git, Part 1 — installgit, clone a repo, and make your first commits from the command line, by TA Ganesh. (video, 22 min) - Merge conflicts and branching, Part 2 — what a merge conflict is and how to resolve one, by IA Shubham Kulkarni. (video, 8 min)
- Using
gitwith GitHub Desktop — the same workflow without the terminal, by TA Sidharth Suresh. (video, 13 min) - Git & GitHub Tutorial — longer end-to-end tutorial from edureka!, with companion notes by TA Holly (Yueying Dong). (video)
- Personal Access Token tutorial — step-by-step token setup with screenshots, by Scott Yang. (docs)
- Dangit, Git!?! — plain-English fixes for the most common "I've broken my repo" situations. (docs)
- See also Troubleshooting below for notebooks too large to push.
- UCSD Library: Data & Statistics Sources — the librarians' guide to datasets, including ones UCSD pays for so you don't have to; start here. (data)
- San Diego & California data — regional data sources, useful for projects about campus or the city. (data)
- City of San Diego Open Data Portal — 120+ machine-readable city datasets (311 requests, police calls, permits, budgets), updated daily. (data)
- Kaggle Datasets — tens of thousands of user-uploaded datasets; convenient, but check the provenance before you build a project on one. (data)
- Google Dataset Search — search engine for datasets published anywhere on the web. (data)
- Data.gov — the U.S. federal government's open data catalog. (data)
- data.census.gov — U.S. Census and American Community Survey tables; the standard source for demographic context. (data)
- FiveThirtyEight data — the cleaned datasets behind their published stories, each with a README explaining the columns. (data)
- Awesome Public Datasets — large community-curated list of open datasets by topic. (data)
requestsdocumentation — the standard library for pulling data from web APIs. (docs)- Beautiful Soup documentation — parsing HTML when the data you need is only on a web page. (docs)
Before you scrape: check the site's terms of service and
robots.txt, rate-limit your requests, and prefer an official API when one exists. See Data Ethics and Privacy.
- SQLBolt — 18 interactive in-browser lessons from
SELECTto joins; the quickest way to get productive. (interactive) - SQL Tutorial — analyst-oriented tutorial with real data, organized around questions rather than syntax (formerly the Mode Analytics tutorial). (interactive)
- PostgreSQL Exercises — graded practice problems against a sample database, from basics to window functions. (interactive)
- Data Feminism — how power shapes what gets counted and by whom; the full book is free online. (book)
- Datasheets for Datasets — Gebru et al. on documenting a dataset's collection, composition, and intended uses; a useful checklist for your own project. (paper)
- Gender Shades — Buolamwini & Gebru's audit showing how aggregate accuracy hides large disparities across subgroups. (paper)
- Getting started with pandas — the official tutorials, organized by task ("how do I select a subset?"). (docs)
- 10 minutes to pandas — whirlwind tour of the API; good for a quick refresher. (docs)
- Kaggle: Learn pandas — hands-on interactive lessons in your browser, with exercises. (interactive)
- Python for Data Analysis, 3rd ed. — the definitive pandas book, by the author of pandas; free to read online. (book)
- Python Data Science Handbook — NumPy, pandas, matplotlib, and scikit-learn in one free book, written as notebooks. (book)
- Tidy Data — Wickham's paper on why one-row-per-observation makes everything downstream easier. (paper)
- Exploratory Data Analysis chapter, R for Data Science — the questions to ask of a new dataset; the code is R, but the thinking transfers directly. (book)
- Missing data in pandas — how pandas represents missing values and what your options are for handling them. (docs)
- From Data to Viz — decision tree from your data type to an appropriate chart, with code and common pitfalls. (interactive)
- The Python Graph Gallery — hundreds of charts with copy-pasteable code, organized by chart type. (docs)
- Fundamentals of Data Visualization — Wilke's free book on why some charts work and others mislead; light on code, heavy on judgment. (book)
- seaborn tutorial — official tutorial for the library that makes statistical plots short to write. (docs)
- matplotlib cheat sheets — one-page references for the plotting API and styling. (cheat sheet)
- Seeing Theory — interactive visual introduction to probability, distributions, inference, and regression. (interactive)
- Think Stats, 3rd ed. — Downey's free book teaching statistics through Python code rather than formulas. (book)
- StatQuest — short, clear videos on individual statistics and ML concepts; excellent when one idea from lecture didn't land. (video)
scipy.statsreference — the statistical tests and distributions available in Python, with usage notes. (docs)
- NLP in Python — conference-talk walkthrough of a text analysis project end to end, from raw text to findings. (video)
- spaCy 101 — gentle introduction to tokenization, part-of-speech tagging, and named entities using a modern NLP library. (docs)
- Text feature extraction in scikit-learn — how to turn documents into the bag-of-words and TF-IDF matrices models expect. (docs)
- Natural Language Processing with Python — the free NLTK book; thorough on linguistic fundamentals. (book)
- Kaggle: Intro to Machine Learning — build and validate your first model in a few hours, in the browser. (interactive)
- scikit-learn User Guide — the reference for every model you're likely to use, with worked examples and guidance on choosing one. (docs)
- Machine Learning, Andrew Ng — the classic full-length lecture series on the math behind common algorithms. (video, course)
- MIT Intro to Deep Learning — MIT's short course, with lecture videos and labs; refreshed each year. (course)
- TensorFlow and Keras course — long-form free course on building neural networks, well past what COGS 108 covers. (video, course)
- From 0 to Research Scientist — a structured reading path through ML, DL, RL, and NLP if you want to go much deeper. (course)
- GeoPandas: Introduction — working with geographic data in a DataFrame; start here. (docs)
- GeoPandas: Mapping and plotting — making choropleths and other maps from a GeoDataFrame. (docs)
- GeoPandas: Set operations with overlay — intersecting, clipping, and combining spatial layers. (docs)
- GeoPandas: Example gallery — worked examples to adapt for your own maps. (docs)
- Fundamentals of Data Visualization: Telling a story — structuring a set of figures into an argument a reader can follow. (book)
- How to ask a good question — how to build a minimal reproducible example; makes the answers you get on the course forum far more useful. (docs)
- pandas cheat sheet — one-page PDF of the most common DataFrame operations. (cheat sheet)
- matplotlib cheat sheets — plotting and styling at a glance. (cheat sheet)
- Python Crash Course cheat sheets — one-pagers for core Python syntax, lists, dicts, and classes. (cheat sheet)
My notebook is too big to push to GitHub. Large images and plots stored in notebook output can push a file past GitHub's size limit. Clear the outputs before committing:
jupyter nbconvert --clear-output --inplace MyNotebook.ipynbIf you need to keep the outputs, ipynbcompress
shrinks the embedded images instead. (tool)
I have a merge conflict. See Merge conflicts and branching (video, 8 min) and Dangit, Git!?!.
GitHub is rejecting my password. GitHub requires a personal access token for HTTPS, not your account password. See Managing personal access tokens.
Course logistics, assignments, and deadlines live on the course website and Canvas, not here. For questions about the material, post on the course forum — and include a minimal reproducible example so staff can actually see what went wrong.
This list is maintained by COGS 108 staff and students. If a link is dead, a description is wrong, or you found something that helped you:
- Open an issue describing the change, or
- Open a pull request editing this README directly.
When adding a resource, please match the existing format — a link, an em dash, one line on what it is and when it's useful, and a tag:
- [Title](https://example.com) — what it is and when you'd reach for it. *(tag)*