Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

University of Virginia

Intro to Computer Science

University of Virginia via Udacity

This course may be unavailable.


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.


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

Taught by

Sebastian Thrun and David Evans


4.5 rating, based on 72 Class Central reviews

Start your review of Intro to Computer Science

  • Profile image for Donghyun Kang
    Donghyun Kang
    I'm not completely new to programming having learned a basic level of SQL for a semester at the uni. I found the pace and the overall difficulty of the lecture to be very fine. I believe this course is primarily aimed for people who had no previous…
  • Little Miss Random
    I really enjoyed the goal-oriented nature of the course. Instead of merely learning about the theory behind computing, we got a chance to apply what was being taught by writing code, and building upon the code written in previous units and put it al…
  • Ari Pine
    The stated goal is that the student will “have learned key concepts in computer science and enough programming to be able to write Python programs.” The course does an excellent job of doing this. As I stated before, I recommend at least some coding experience. The video lectures, with the support of the discussion forums, provide a clear exposition of the material in an easy-going manner. Professor Evans covers the key concepts for an introduction to computer science and to the fundamental tools to get programming jobs done. The quizzes and problem sets are what bind the whole experience together. Watching lectures alone cannot teach; learning is about doing. There is plenty of both to be had in Udacity’s CS101 class.
  • Anonymous
    Great course on the fundamentals of computer science. The course begins with line parsing to an eventual final project of building a search engine. On this journey, you start with the basic building blocks of constructing a program, then reintroduce…
  • Anonymous
    I also like Udacity's model. The lectures are very engaging, for international students who may have difficulties understanding English, there are captions. Just click cc on the video player and pick your language. And there is no pressure of deadlines or any stress. Discussion forums are maintained and comments are tagged well. Most of the time, I was able to find an answer to my question using forum's search (it may seem obvious but it's not the case on other sites where I cannot find even my own post). Very convenient IDE, built in quizzes, and plenty of homework exercises. I also like that they have * (star) challenges to push you further. Overall, I think that Udacity's platform is the best of all MOOCs so far.
  • David
    Don't pay for the enrollment, all of the course material is free..
    Their mentor feedback wasn't that great. When I got stuck on a project, they just kept sending redundant nonconstructive information, like. "Hey you're doing a great job check out this link
  • Ryan McCormack
    One of the great things about CS101 is that the entire course is couched in a real-world problem: how to build a search engine. This Rosetta Stone helped anchor the course content, quizzes and homework; everything was aimed at achieving that objective, which I found useful. Computer science concepts can be very abstract, and it helps to tie them into something with which everyone at least has familiarity (i.e., we’ve all used Google and get the basic idea).
  • Anonymous
    A good beginning course in Python. It can be frustrating when your code doesn't work and the feedback from the interpreter is not very helpful. Making use of the discussion boards is essential in those cases. Don't obsess over the assignments, because only the final exam counts for credit.

    A good choice for those who can't install Python software on the computers they use. Though having Python installed would be convenient, it is possible to submit everything through their interpreter with no special software required.
  • Anonymous
    Really great for understanding using lists in python, and overall programing in a geek way. And understanding why is line written this way and not other. Showing how memory is involve etc. If learning a program which will work for you this is a class for you. I think that this class will give you deep understanding of programing any language. If you are leaning more toward games I would recommend Rice University - which is great for OOP and first experience with GUI .
  • Robert Talbert
    The course was broken into seven Units, each consisting of about 30 short videos with embedded quizzes, followed by a homework set, and a final exam.

    Overall I was really impressed with how well-designed the course was. The fact that this one project — building a search engine — actually could lead, in a very natural way, to many of the fundamental concepts of computer science struck me as kind of genius.
  • Anonymous
    I really enjoyed this class. Prof. Evans teaches you string processing, functions, lists, dictionaries and hash functions as you build a web crawler to harvest URLs, then an index to store them, then a search engine based on the famous (Larry) Page rank algorithm that formed Google's first search engine.

    I liked his sense of humor and I liked the self-paced aspect of the class. Highly recommended for Python beginners.
  • Anonymous
    Really recommended! The instructor is brilliant while presenting every detail of the class. His explanations are clear and neat, and you definitely learn how to program on Python. What I really like about Udacity courses in general is that you are not constraint to schedules, you learn to your own pace, contents are updated, you learn a lot, and you can even get a certificate.
  • Anonymous
    I've tried multiple introductory courses and completed only this one. Many thanks to designers of the course!

    It;s using interactive programming environment that is pretty neat and great for learning purposes but you're not going to have it in the real life. Having some references to how to set up dev. environment in the real life would be nice to have.

    Overall, the course is great and highly recommended.
  • Anonymous
    This course builds a solid foundation on how to program. The lectures are very memorable with interactive quizzes.

    Homework assignments involve a lot of thinking and problem solving -- two or three star ones are quite challenging.

    Use discussion forums if you're stuck, excellent community of learners!

    If you're more game oriented I would suggest coursera's "Interactive Python" course though.
  • Anonymous
    This was my first programming course of any kind. I thought the pace and the topics were well thought out and covered many programming topics in a serious way. The coding interface works well and the forums were very friendly and helpful. I would highly recommend this course!
  • Profile image for Cheng Leong Chua
    Cheng Leong Chua
    A really good course covering all the necessary concepts, the basics of programming structures, and the logic mathematics required for computer-science.

    Best regards from
  • Anonymous
    Although building a search engine using Python is the project to complete by the end of the course, the main outcome is to learn general programming concepts.

    This is basically what final exam is testing, but don't worry, it's impossible not to learn well as the course has many quizzes and exercises.
  • Anonymous
    I really loved this class. It is self paced, very well organized, with lots of exercises. I highly recommend it to everyone new to programming,, because it starts from the scratch. But as with all self-paced courses, you have to apply a bit of a discipline in order to finish it.
  • Anonymous
    Ability to take it at my own pace is very important to me. Great course design, informative lectures, meaningful and consistent material. This is a complete package, no additional resources needed to complete the course requirements.
  • Anonymous
    Great class for beginners, although it doesn't delve much into Class definitions or other object-oriented aspects. All assignments are very helpful, and a very complex working product is constructed at the end, which in hindsight is quite impressive.

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.