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

Harvard College

Introduction to the intellectual enterprises of computer science. Algorithms: their design, specification, and analysis. Software development: problem decomposition, abstraction, data structures, implementation, debugging, testing. Architecture of computers: low-level data representation and instruction processing. Computer systems: programming languages, compilers, operating systems. Computers in the real world: networks, security and cryptography, artificial intelligence, social issues. Assignments include extensive programming in the C language and PHP.

Loading...

These lectures were filmed in Sever Hall. Notes were taken by Anjuli Kannan '09.

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 ▶ Friday ▾ expand all

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

Week 1 ▶ Monday ▶ Wednesday ▶ Friday ▾ expand all

C, continued. 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 ▶ Friday ▾ expand all

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

Week 3 ▶ Wednesday ▶ Friday ▾ expand all

Linear search. Binary search. Asymptotic notation. Recursion. Bubble sort. Selection sort. Merge sort.

Week 4 ▶ Monday ▶ Friday ▾ expand all

Debugging software. Designing software.

Week 5 ▶ Monday ▶ Wednesday ▶ Friday ▾ expand all

Structures. Dynamic memory allocation. Pointers. Heap. Digital forensics. File I/O.

Week 6 ▶ Monday ▶ Wednesday ▶ Friday ▾ expand all

Linked lists. Hash tables.

Week 7 ▶ Monday ▶ Friday ▾ expand all

Binary search trees. Heaps. Heapsort.

Week 8 ▶ Wednesday ▶ Friday ▾ expand all

Huffman coding. Preprocessing. Compiling. Assembling. Linking. CPUs. Ant-8.

Week 9 ▶ play ▾ expand all

Secure coding.

Week 10 ▶ Monday ▶ Wednesday ▶ Friday ▾ expand all

TCP/IP. HTTP. XHTML. PHP. SQL.

Week 11 ▶ Monday ▶ Wednesday ▶ Friday ▾ expand all

Designing Web-based software. Cybersecurity. Sneak preview of CS 51.

Week 12 ▶ Monday ▶ Friday ▾ expand all

Sneak preview of CS 61. Fun. Exciting conclusion.

Supersections are weekly review sessions led by the teaching fellows that supplement sections (otherwise known as "recitations" or "precepts" at other universities). These supersections were filmed in Science Center. Videos of Fall 2007's sections are not available, but videos of Fall 2009's sections are.

Week 1 ▶ play
Week 2 ▶ play
Week 3 ▶ play
Week 4 ▶ play
Week 5 ▶ play
Week 6 ▶ play
Week 7 ▶ play
Week 8 ▶ play
Week 9

No supersection this week

Week 10

No supersection this week

Week 11 ▶ play

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.

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
Problem Set 2: Crypto

Encrypt and decrypt sensitive information.

Problem Set 3: The Game of Fifteen ▾ expand all

Implement a childhood classic.

Problem Set 4: Forensics ▾ expand all

Recover lost photos. Solve a murder mystery.

Problem Set 5: Mispellings ▾ expand all

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

Problem Set 6: Huff'n Puff ▾ expand all

Compress your own files.

Problem Set 7: C$50 Finance ▾ expand all

Design a database. Build a website.

Below are quizzes; other answers may be possible. Reviews were led by Rose Cao '11, Matthew Chartier '12, Jesse Cohen '10, Derek Lietz '09, and Mike Teodorescu '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

Covers weeks 0 through 2.

Quiz 1

Covers weeks 0 through 5 with emphasis on 3 onward.

Quiz 1

Covers weeks 0 through 10 with emphasis on 6 onward.

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

C++/Object Oriented Programming ▶ play

by Thomas Carriero '08

Choosing the Right Languages/Libraries ▶ play

by Kelly Heffner and Paul Govereau

Event-Driven Programming ▶ play

by Kelly Heffner

How to Write SMS-Based Programs ▶ play

by Chris Power

Intro to Ruby on Rails ▶ play

by Kevin Bombino '08

Network Programming ▶ play

by Paul Govereau

OpenGL (Graphics Library) ▶ play

by Paul Govereau

SDL (Graphics Library) ▶ play

by Thomas Carriero '08