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.