Approx. 3 months

Join thousands of students

Start Free Course

Start Free Course
You get
Instructor videos
Learn by doing exercises and view project instructions
view course trailer
Watch Video

Course Summary

In this introduction to computer programming course, you’ll learn and practice key computer science concepts by building your own versions of popular web applications. You’ll learn Python, a powerful, easy-to-learn, and widely used programming language, and you’ll explore computer science basics, as you build your own search engine and social network.

Why Take This Course?

You’ll learn the programming language Python, and you’ll explore foundational concepts in computer science. Most importantly, you’ll start thinking like a software engineer by solving interesting problems (how to build a web crawler or a social network) using computer programming.

This course is a first step into the world of computer science, and whether you want to become a software engineer, or collaborate with software engineers, this course is for you. You’ll be prepared for intermediate-level computer science classes when you’ve mastered the concepts covered in this course.

Build a Search Engine

Throughout this course, you’ll build a search engine by learning about and producing key search engine components including a crawler, an index and a page rank algorithm. As you build these pieces, you’ll be learning about and practicing computer science skills that will ready you for intermediate level computer science courses.

Build a Social Network

At the end of the course we will give you a set of relationships (i.e. strings of phrases like “Dave likes Andy, Kathleen and Kristy”) and you will use your new computer science skills to organize these relationships into a social network. With your new social network, you can explore relationships and gain insight into how you fit into your own social networks.

Prerequisites and Requirements

There is no prior computer programming knowledge needed for this course. Beginners are welcome!

See the Technology Requirements for using Udacity.

What Will I Learn?


Final Project

For this project, your job is to take simple text strings like "Alex likes Carla, Ryan, and Priya" and turn them into a social network. To do this, you must complete a number of required procedures, as described on the next screen. You must also create a "make-your-own" procedure.


Lesson 1: How to Get Started

  • Interview with Sergey Brin
  • Getting Started with Python
  • Processors
  • Grace Hopper
  • Variables
  • Strings and Numbers
  • Indexing Strings
  • String Theory

Lesson 2: How to Repeat

  • Introducing Procedures
  • Sum Procedure with a Return Statement
  • Equality Comparisons
  • If Statements
  • Or Function
  • Biggest Procedure
  • While Loops
  • Print Numbers

Lesson 2.5: How to Solve Problems

  • What are the Inputs
  • Algorithm Pseudocode
  • Optimizing

Lesson 3: How to Manage Data

  • Nested Lists
  • A List of Strings
  • Aliasing
  • List Operations
  • List Addition and Length
  • How Computers Store Data
  • For Loops
  • Popping Elements
  • Crawl Web

Lesson 4: Responding to Queries

  • Data Structures
  • Lookup
  • Building the Web Index
  • Latency
  • Bandwidth
  • Buckets of Bits
  • Protocols

Lesson 5: How Programs Run

  • Measuring Speed
  • Spin Loop
  • Index Size vs. Time
  • Making Lookup Faster
  • Hash Function
  • Testing Hash Functions
  • Implementing Hash Tables
  • Dictionaries
  • Modifying the Search Engine

Lesson 6: How to Have Infinite Power

  • Infinite Power
  • Counter
  • Recursive Definitions
  • Recursive Procedures
  • Palindromes
  • Recursive v. Iterative
  • Divide and Be Conquered
  • Ranking Web Pages

Lesson 7: Past, Present, and the Future of Computing

  • Past of Computing
  • Computer History Museum
  • First Hard Drive
  • Search Before Computers
  • Present of Computing
  • Slac and Big Data
  • Open Source
  • Future of Computing
  • Text Analysis
  • Energy Aware Computing
  • Computer Security
  • Quantum Computing

Instructors & Partners

instructor photo

Dave Evans


David Evans is a Professor of Computer Science at the University of Virginia where he teaches computer science and leads research in computer security. He is the author of an introductory computer science textbook and has won Virginia's highest award for university faculty. He has PhD, SM, and SB degrees from MIT.

track icon track icon track icon

View more courses in
Web Development — Software Engineering — Data Science

Frequently Asked Questions

When does the course begin?

This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course.

How long will the course be available?

This class will always be available!

How do I know if this course is for me?

Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. If you want to know more, just enroll in the course and start exploring.

Can I skip individual videos? What about entire lessons?

Yes! The point is for you to learn what YOU need (or want) to learn. If you already know something, feel free to skip ahead. If you ever find that you’re confused, you can always go back and watch something that you skipped.

What are the rules on collaboration?

Collaboration is a great way to learn. You should do it! The key is to use collaboration as a way to enhance learning, not as a way of sharing answers without understanding them.

Why are there so many questions?

Udacity classes are a little different from traditional courses. We intersperse our video segments with interactive questions. There are many reasons for including these questions: to get you thinking, to check your understanding, for fun, etc... But really, they are there to help you learn. They are NOT there to evaluate your intelligence, so try not to let them stress you out.

What should I do while I’m watching the videos?

Learn actively! You will retain more of what you learn if you take notes, draw diagrams, make notecards, and actively try to make sense of the material.