Intensive Introduction to Computer Science

David J. Malan, PhD, Lecturer on Computer Science, Harvard University

This free online computer science course is an introduction to the intellectual enterprises of computer science. Topics include algorithms (their design, implementation, and analysis); software development (abstraction, encapsulation, data structures, debugging, and testing); architecture of computers (low-level data representation and instruction processing); computer systems (programming languages, compilers, operating systems, and databases); and computers in the real world (networks, websites, security, forensics, and cryptography). The 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.

The lecture videos

The recorded lectures are from the Harvard School of Engineering and Applied Sciences course Computer Science 50, which was offered as CSCI E-52, an online course at the Extension School.

The Quicktime and MP3 formats are available for download, or you can play the Flash version directly. Each week has 2 hour-long lectures.

Introduction

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

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.

Functions

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

Linear search

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

Structures

Dynamic memory allocation. Pointers.

Debugging

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

Linked lists

Valgrind

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

 

DOM

Inheritance. JavaScript. Events, continued. OOP. Ajax.

Preprocessing

Compiling. Assembling. Linking. CPUs.

Enterprise architectures

Virtualization. Cloud computing. Sneak previews.

Exciting conclusion

Enroll in Harvard Extension School courses

If you enjoyed this free online computer science course, the Harvard Extension School offers a wide variety of courses in numerous fields. Search for classes and enroll for credit during the fall and spring registration periods.