David J. Malan, Instructor
malan@harvard.edu
http://www.cs.harvard.edu/malan/

Harvard College

Introduction to the intellectual enterprises of computer sciences. Algorithms: design, implementation, analysis. Software development: abstraction, encapsulations, data structures, debugging, testing. Architecture of computers: low-level data representation, instructions processing. Computer Systems: programming languages, compilers, operating systems, databases. Computers in the real world: networks, websites, security, forensics, cryptography. This course teaches students how to think more carefully and how to solve problems more effectively. Problem sets involve extensive programming in C as well as PHP and JavaScript.

Loading...

These lectures were filmed in Sanders Theatre in Memorial Hall. Notes were taken by Anjuli Kannan '09 and Andrew Sellergren '08.

If you have questions or would like to discuss the material with others, you may want to join the Google Group at right.

Week 0 ▶ Monday ▶ Wednesday ▾ expand all

Introduction. Bits. Binary. ASCII. Programming. Algorithms. Scratch. Statements. Boolean expressions. Conditions. Loops. Variables. Threads. Events.

Week 1 ▶ Monday ▶ Wednesday ▾ expand all

C. Source code. Compilers. Object code. SSH. SFTP. GCC. Functions. Comments. Standard output. Arithmetic operators. Precedence. Associativity. Local variables. Types. Casting. Standard input. Libraries. Boolean expressions, continued. Conditions, continued. Loops, continued.

Week 2 ▶ Monday ▶ Wednesday ▾ expand all

Functions, continued. Global variables. Parameters. Return values. Stack. Frames. Scope. Arrays. Strings. Command-line arguments. Cryptography.

Week 3 ▶ Monday ▶ Wednesday ▾ expand all

Linear search. Binary search. Asymptotic notation. Recursion. Pseudorandomness. Bubble sort. Selection sort. Insertion sort. Merge sort. Debugging.

Week 4 ▶ play ▾ expand all

Structures. Dynamic memory allocation. Pointers.

Week 5 ▶ Monday ▶ Wednesday ▾ expand all

Debugging, continued. Pointers, continued. Heap. File I/O. Forensics.

Week 6 ▶ play ▾ expand all
Week 7 ▶ Monday ▶ Wednesday ▾ expand all

Valgrind. Bitwise operators. Hash tables. Trees. Binary search trees. Tries. Heaps. Heapsort. Huffman coding.

Week 8 ▶ Monday ▶ Wednesday ▾ expand all
Week 9 ▶ Monday ▶ Wednesday ▾ expand all
Week 10 ▶ play ▾ expand all
Week 11 ▶ Monday ▶ Wednesday ▾ expand all

Enterprise architectures. Virtualization. Cloud computing. Sneak previews.

Week 12 ▶ play ▾ expand all

Sections (otherwise known as "recitations" or "precepts" at other universities) supplement lectures. Videos of Fall 2008's sections are not available (except for one "supersection" in Week 10 led by Keito Uchiyama '11), but videos of Fall 2009's sections are.

Week 2
Week 3
Week 4
Week 5
Week 6
Week 7
Week 8
Week 9
Week 10 ▶ play
Week 11

In order to accommodate students with different backgrounds, some problem sets are released in two editions: a standard edition intended for most students and a "Hacker Edition" intended for some students. Both editions essentially cover the same material. But the Hacker Edition typically presents that material from a more technical angle and poses more sophisticated questions. Most standard editions, though, are accompanied by code "walkthroughs" during which students receive direction on where to begin and how to approach the problem set. Led by Keito Uchiyama '11, these walkthroughs were filmed in Northwest Science Labs.

If you have questions or would like to discuss the material with others, you may want to join the Google Group at right.

Problem Set 0: Scratch

Create your own animation, game, or interactive art.

Problem Set 1: C ▶ play ▾ expand all

Meet Linux and C.

Problem Set 2: Crypto ▶ play ▾ expand all

Encrypt and decrypt sensitive information.

Problem Set 3: The Game of Fifteen ▶ play ▾ expand all

Implement a childhood classic.

Problem Set 4: Sudoku ▶ play ▾ expand all

数字は独身に限る。

Problem Set 5: Forensics ▶ play ▾ expand all

Recover lost photos. Solve a murder mystery.

Problem Set 6: Mispellings ▶ play ▾ expand all

Implement a spell-checker that's faster than your classmates'.

Problem Set 7: C$50 Finance ▶ play ▾ expand all

Design a database. Build a dynamic website.

Problem Set 8: Mashup ▶ Part 1 ▶ Part 2 ▾ expand all

Google Maps meet Google News. And Ajax.

Below are quizzes; other answers may be possible. Reviews were led by Batool Ali '10, Alex Chang '10, Jesse Cohen '10, Aaron Oehlschlaeger '11, Zeina Oweis '10, Ken Parreno '11, and Keito Uchiyama '11.

If you have questions or would like to discuss the material with others, you may want to join the Google Group at right.

Quiz 0 ▶ play ▾ expand all

Covers weeks 0 through 6.

Quiz 1 ▶ play ▾ expand all

Covers weeks 0 through 10 with emphasis on 7 onward.

Seminars cover material beyond the scope of the course. Fall 2007's seminars and Fall 2009's seminars are also available.

Accepting Payments with Google Checkout ▶ play

by Mike Tucker '03

Advanced Ajax and JavaScript ▶ play

by Josh Bolduc '11

Android ▶ play

by Brett Thomas '10

ASP.NET ▶ play

by Patrick Schmid

BlackBerry Apps ▶ play

by Brett Thomas '10

Django ▶ play

by Andy Lei '09

Facebook Apps ▶ play

by Linfeng Yang '11

Firefox Add-Ons ▶ play

by Brett Thomas '10

iPhone Apps ▶ play
Java 3D ▶ play

by Sanjay Gandhi '10

Java Swing/AWT ▶ play

by David Wu '11

Real-world PHP ▶ play

by Keito Uchiyama '11

Ruby on Rails ▶ play

by Aaron Oehlschlaeger '11 and Linfeng Yang '11