CS50 introduces computational thinking across 10 weeks plus a final project, using 4 languages in sequence: Scratch (week 0), C (weeks 1 through 5), Python (weeks 6 through 7), SQL (week 7), and HTML, CSS, and JavaScript (weeks 8 through 9). Week 0 covers algorithms and abstraction with Scratch. Weeks 1 through 4 drive C through Mario, Cash, Credit, Caesar, Substitution, Plurality, Tideman, and Runoff. Week 5 introduces data structures (linked lists, hash tables, tries) through Speller. Weeks 6 and 7 pivot to Python with Sentimental ports, then DNA, then Hogwarts House sorting, then Movies with SQL. Week 8 ships Homepage with vanilla web. Week 9 ends with Finance, a multi-route Flask app with SQL accounting. The course assesses through 10 problem sets graded by check50 (correctness) and style50 (style), a final project graded by 3 CS50 staff against a published rubric, and 9 lab notebooks graded for completion. Lectures are recorded weekly on Friday at Sanders Theatre and posted to cs50.harvard.edu. The university-internal version (Harvard College and Harvard Extension School) carries the same content as edX CS50x with one difference: Harvard students complete a hackathon and a CS50 Fair in person, while edX learners submit the final project asynchronously.
10
recurring assignments covered
Get help with CS50 → CS61B teaches data structures and Java software engineering across 14 weeks under Josh Hug (since 2017) and Justin Yokota (recent semesters). Lectures cover lists, sets, maps, trees, balanced search trees (LLRB, B-trees, B+ trees), hashing, heaps, graphs, BFS, DFS, Dijkstra, A-star, MSTs, sorting, comparison-based and radix sort, and software engineering topics including version control, testing, and asymptotic analysis. Weekly cadence: 2 lectures, 1 lab, 1 discussion, and either a homework set or a project milestone. The course assesses through 11 lab autograded assignments (one per topic week), 3 homework sets (HW0 Java basics, HW2 conceptual asymptotic analysis, HW3 algorithm design), 4 projects (Project 0 NBody n-body gravity simulation, Project 1 Deque with linked-list and array-deque variants, Project 2 Gitlet a 4,000-line clone of git, Project 3 BYOW a procedurally-generated 2D tile world), a midterm at week 7, and a 3-hour final at the end of week 14. Project autograders use JUnit 4 with @Timeout annotations enforcing per-test budgets: Project 2 Gitlet must complete all 35 acceptance tests in under 60 seconds wall-clock; Project 3 BYOW world generation must seed-stably reproduce a world from a 9-digit seed in under 5 seconds. Grading splits 30 percent labs and homework, 50 percent projects (10-10-15-15), 10 percent midterm, 10 percent final.
8
recurring assignments covered
Get help with CS61B → MIT 6.006 introduces algorithms across 13 weeks with 26 lectures, 13 recitations, and 7 problem sets. The Spring 2020 redesign by Erik Demaine, Jason Ku, and Justin Solomon restructured the course around 5 modules: (1) introduction and document distance, (2) data structures (sequence and set abstract data types, dynamic arrays, hashing, AVL trees, sorting), (3) graphs (BFS, DFS, topological sort, weighted shortest paths), (4) shortest paths (Dijkstra, Bellman-Ford, Johnson), and (5) dynamic programming (single subproblem, multiple subproblems, subset-sum, longest common subsequence). Lectures Monday and Wednesday at 11 AM in 32-123 (Ray and Maria Stata Center), recitations Friday at 11 AM. Problem sets release every 2 weeks on Wednesday at 8 PM Eastern, due 13 days later Tuesday at 11 PM Eastern. Each problem set contains 4 to 6 problems mixing written analysis (asymptotic bounds, correctness proofs) and Python implementation (with PyPy 3 as the grading interpreter, allowing 2x to 10x speedup over CPython for algorithm-heavy workloads). Grading: 7 problem sets at 10 percent each (total 70 percent), 2 mid-term quizzes at 10 percent each, final exam at 10 percent. The 6.006 lecture videos are mirrored at MIT OpenCourseWare and the textbook is CLRS 4th edition (Cormen, Leiserson, Rivest, Stein).
8
recurring assignments covered
Get help with 6.006 → DATA 100 teaches the principles and techniques of data science across 14 weeks under Joseph Gonzalez, Narges Norouzi, and Lisa Yan (recent semesters), with co-development between EECS and the Division of Computing, Data Science, and Society. The course covers 6 modules: (1) Pandas and data wrangling, (2) exploratory data analysis (EDA) and visualization, (3) sampling and experimentation, (4) modeling and least-squares regression, (5) gradient descent and feature engineering, (6) classification with logistic regression, decision trees, and cross-validation. Languages and libraries: Python 3.11 with Pandas 2.x, NumPy 1.26, scikit-learn 1.4, matplotlib, seaborn, plotly, and statsmodels in select labs. The course assesses through 12 weekly Jupyter notebook homework assignments graded by Otter-Grader (an open-source autograder originally written for DATA 8 and extended for DATA 100), 2 projects (Project A1 housing-price regression, Project A2 spam-classification with logistic regression), a midterm at week 8, and a final at week 14. Lectures Monday and Wednesday at 5 PM in Wheeler Hall (or Pimentel for larger semesters), discussion Friday at varied times. Grading: 30 percent homework, 30 percent projects (15-15), 15 percent midterm, 20 percent final, 5 percent discussion attendance. The course is the second course in the Data Science major after DATA 8 (Foundations of Data Science) and is a prerequisite for DATA 101 (Data Engineering) and CS 189 (Machine Learning).
8
recurring assignments covered
Get help with DATA 100 →