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
- Grace Hopper
- 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
###Lesson 3: How to Manage Data
- Nested Lists
- A List of Strings
- List Operations
- List Addition and Length
- How Computers Store Data
- For Loops
- Popping Elements
- Crawl Web
### Lesson 4: Responding to Queries
- Data Structures
- Building the Web Index
- Buckets of Bits
### Lesson 5: How Programs Run
- Measuring Speed
- Spin Loop
- Index Size vs. Time
- Making Lookup Faster
- Hash Function
- Testing Hash Functions
- Implementing Hash Tables
- Modifying the Search Engine
### Lesson 6: How to Have Infinite Power
- Infinite Power
- Recursive Definitions
- Recursive Procedures
- 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
Donghyuncompleted this course, spending 20 hours a week on it and found the course difficulty to be medium.
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 exposure to programming. It involves a bit of maths, but it's more of a logical thinking(e.g. how would you define a Fibonacci series?), and oftentimes I've found it very ingenious the solutions provided by the lecturer or in the forum. (The forum is lively and you can always look up for answers from other students and moderators) As for the lectur…
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 exposure to programming. It involves a bit of maths, but it's more of a logical thinking(e.g. how would you define a Fibonacci series?), and oftentimes I've found it very ingenious the solutions provided by the lecturer or in the forum. (The forum is lively and you can always look up for answers from other students and moderators) As for the lecturer Dr. Evans, his instructions are very clear and his explanations are detailed, but not boring nor repetitive. I suppose he's had a lot of previous teaching experience. Plus, his quirky sense of humor and his abstractionist(?) drawings often made me chuckle and refreshed my attention. (All from an attempt to engage with the virtual audience!).
However, I've found, toward the end of the course(around ranking pages etc.), that the pace somewhat accelerated. And some of the supplementary problems at the end of each chapter are very challenging (still understandable after seeing the answer), which kind of demotivated me.
Overall, highly recommended class for who's interested in learning the basics of programming. I can say that I now have a solid basis on the concepts in computer science, such as loops, recursive functions, etc.
Littlecompleted this course, spending 12 hours a week on it.
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 all together to build something practical, a working search engine.
And the best part of CS101? It’s not just about programming. While I’ve never taken a computer science course before, I understand that there’s a difference between a programming class and a computer science class, and Professor Evans did a good job of mixing the two up. I didn’t just learn about Python and how to write a programme. I also learnt about famous computer scientists (Admiral Grace Hopper, who was an absolute hoot to watch on David Letterman, and Ada Lovelace among them), networking and what affects computing speeds
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.
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 reintroduced with better building blocks. For example, we learn about while/for loops, but later on learn about recursion. Also we try to store the keywords in lists, but later on we learn about hash tables. This is nice way to learn different approaches to tackle the same issue, and then investigate why these approaches work better in certain circumstances. D…
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 reintroduced with better building blocks. For example, we learn about while/for loops, but later on learn about recursion. Also we try to store the keywords in lists, but later on we learn about hash tables. This is nice way to learn different approaches to tackle the same issue, and then investigate why these approaches work better in certain circumstances. Dave is very thorough as steps through each concept. For example drawing out the 3 levels of a Fibonacci tree or diagram how networks work using ancient Greece as an example. Dave also steps back into the history of computer science and gives tribute to those who pushed the discipline forward. I learned about Grace Hopper's nano stick, and Alan Turing's machine model. The course is basically a hand-holding of finishing the search engine.
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.
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.
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).
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 .
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.
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.
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.
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.
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!
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.
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.
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.