Introduction to Computer Science I

Course Description

“Demanding, but definitely doable. Social, but educational. A focused topic, but broadly applicable skills. CS 50 is the quintessential Harvard course.”

In this course, Harvard Professor David J. Malan gives 32 video lectures on Introduction to Computer Science. This is a first course in computer science at Harvard College for concentrators and non-concentrators alike. More than just teach you how to program, this course teaches you how to think more methodically and how to solve problems more effectively. As such, its lessons are applicable well beyond the boundaries of computer science itself. That the course does teach you how to program, though, is perhaps its most empowering return. With this skill comes the ability to solve real-world problems in ways and at speeds beyond the abilities of most humans. 

Topics included in this course are:

- Introduction to the Intellectual Enterprises of Computer Science

- Algorithms: Their Design, Specification, and Analysis.

- Software Development: Problem Decomposition, Abstraction, Data Structures, Implementation, Debugging and 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


None. CS 50 does not assume any prior programming experience.


No books are required for this course.

However, you may want to supplement your preparation for or review of some lectures with self-assigned readings relevant to those lectures’ content from either of the books below. The first is intended for those inexperienced in (or less comfortable with the idea of) programming. The second is intended for those experienced in (or more comfortable with the idea of) programming. Both are available for purchase at the Coop and at sites like Both of these books have been placed on reserve at Cabot Science Library and Gordon McKay Library. Realize that free, if not superior, alternatives to these books can be found among the course’s online resources.

For Those Less Comfortable

Absolute Beginner’s Guide to C, Second Edition

Greg Perry

Sams Publishing, 1994

ISBN 0-672-30510-0

For Those More Comfortable

Programming in C, Third Edition

Stephen Kochan

Sams Publishing, 2004

ISBN 0-672-32666-3

The book below is recommended for everyone, particularly those interested in understanding how their own computers work, for personal edification. At the Coop, this book is bundled at a discount with each of the books above. It is also available for purchase separately at sites like It, too, has been placed on reserve.

For Everyone

How Computers Work, Eighth Edition

Ron White

Que Publishing, 2005

ISBN 0-7897-3424-9

This last book below is recommended for aspiring hackers, those interested in “programming tricks” and low-level optimization of code, for applications beyond the scope of this course. It is also available for purchase at the Coop and at sites like It, too, has been placed on reserve.

For Aspiring Hackers

Hacker’s Delight

Henry S. Warren Jr.

Addison-Wesley, 2003

ISBN 0-201-91465-4

Original Course Name: Computer Science 50: Introduction to Computer Science I

Course Details:
Harvard College

Introduction to Computer Science I

Harvard Professor David J. Malan in Lecture 1: How Computers Work, Binary.
8 ratings

Video Lectures & Study Materials

# Lecture Play Lecture
1 How Computers Work, Binary Play Video
2 Introduction to Programming and Scratch Play Video
3 Threads and Programs with Multiple Scripts Play Video
4 Binary Numbers, Programming Languages, Working in Linux, and Programming in C Play Video
5 Secure File Transfer, Variable Types, and Arithmetic Operators Play Video
6 Standard Input Functions, Boolean Expressions, and Loops Play Video
7 Cryptography, Bugs, Integer Casting, and Functions Play Video
8 Local and Global Variables, the Stack, Return Values, and Arrays Play Video
9 Strings as Arrays, Command-Line Arguments, and more Cryptography Play Video
10 Run Times and Algorithms, Recursion Play Video
11 Sorting: Bubble Sort, Selection Sort, and Merge Sort Play Video
12 Hardware, Processors, and Implications for Software Play Video
13 Greedy Algorithms, Software Design and Debugging Play Video
14 Pointers Play Video
15 Pointers and Arrays, Dynamic Memory Allocation Play Video
16 Pointer Arithmetic, Structures, File I/O Play Video
17 Linked Lists Play Video
18 Inserting and Deleting Elements in Linked Lists, Doubly-Linked Lists Play Video
19 Hash Tables, Dealing with Collisions Play Video
20 Pointers to Pointers, Binary Search Tree, Tries, Heaps Play Video
21 Heapsort, Jeopardy! Play Video
22 Huffman Coding Theory Play Video
23 Bitwise Operators, Underneath the Hood - From Code to Executable File Play Video
24 Dangerous Functions, Secure Code Play Video
25 The Internet and Webpages - HTTP and XHTML Play Video
26 Introduction to PHP Play Video
27 User Input, Setting up a Login Page, SQL Play Video
28 Threats, Part 1 Play Video
29 Threats, Part 2 Play Video
30 Introduction to LISP Play Video
31 Brief Introduction to System Programming and Machine Organization Play Video
32 Conclusions Play Video


Displaying 10 comments:

yalew amare wrote 11 years ago.
Thanks,just share something to somebodys.

shashidhar wrote 11 years ago.
finally i got what i am looking for .......

thank u very much sir.......

shashidhar wrote 11 years ago.
finally i got what i am looking for .........

thank u very much sir ........

shashidhar wrote 11 years ago.
good one ...
i got what i am searching for ....

Ivan wrote 12 years ago.
Thank you for the lectures, and the whole entire website!
Simply awesome!

alvin hertzler wrote 12 years ago.
enjoying these lectures although above my head a little

dhago wrote 12 years ago.
This is great work and keeping this work fowards my give
this web a quick responding which leads powerful customers
around the world!

Mobby wrote 13 years ago.
Very nice description of Huffman Coding and Bitwise
Operators . . tNx.

hatem wrote 13 years ago.
i love this video & i need more to learn

hatem wrote 13 years ago.
i love this video i need more

  Post comment as a guest user.
Click to login or register:
Your name:
Your email:
(will not appear)
Your comment:
(max. 1000 characters)
Are you human? (Sorry)
CosmoLearning is promoting these materials solely for nonprofit educational purposes, and to recognize contributions made by Harvard University (Harvard) to online education. We do not host or upload any copyrighted materials, including videos hosted on video websites like YouTube*, unless with explicit permission from the author(s). All intellectual property rights are reserved to Harvard and involved parties. CosmoLearning is not endorsed by Harvard, and we are not affiliated with them, unless otherwise specified. Any questions, claims or concerns regarding this content should be directed to their creator(s).

*If any embedded videos constitute copyright infringement, we strictly recommend contacting the website hosts directly to have such videos taken down. In such an event, these videos will no longer be playable on CosmoLearning or other websites.