In Computer Science 50 you will learn how to design & build large, reliable, maintainable, and understandable software systems. In the process you will learn to program in C with Unix development tools.

In other words, you'll learn to be a hacker! Yes, a hacker, in the original sense of the word as defined by RFC1983 The Internet Users' Glossary as:

A person who delights in having an intimate understanding of the internal workings of a system, computers and computer networks in particular.

The other common use of the term hacker is actually a mistake and should instead be "cracker", which is defined by the same source as:

A cracker is an individual who attempts to access computer systems without authorization.

We won't be learning about cracking in CS50. If you want to learn about that, then you should take CS55 Security & Privacy.

The first few weeks of this course are a crash course in Unix and C. After that, you'll build your very own Search Engine application. Finally, you'll join a team of other students to design, build, document, and test a large software project.

This version of the CS50 course is based upon those designed by Professors Campbell and Balkcom, and further enhanced by Professors Zhou and Kotz. I am deeply indebted to these outstanding educators.