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

University of Toronto

Learn to Program: The Fundamentals

University of Toronto via Coursera


Unlock Unlimited Opportunities: Get 50% Off Your First Month of Coursera Plus
Behind every mouse click and touch-screen tap, there is a computer program that makes things happen. This course introduces the fundamental building blocks of programming and teaches you how to write fun and useful programs using the Python language.


  • Python, Variables, and Functions
    • This module gives an overview of the course, the editor we will use to write programs, and an introduction to fundamental concepts in Python including variables, mathematical expressions, and functions.
  • Strings and Designing Functions
    • This module introduces strings (a Python data type used to represent text), and a process to follow when creating a function.
  • Booleans, Import, Namespaces, and if Statements
    • This module introduces Booleans (logical values True and False), how to convert between types, how to use Boolean expressions in if statements to selectively run code, and the concept of a Python module.
  • For Loops and Fancy String Manipulation
    • This module introduces one way to repeat code (using a for loop), how to manipulate strings, and how to use a debugger to watch a program execute step by step.
  • While Loops, Lists, and Mutability
    • This module introduces another way to repeat code (using a while loop), how to properly document your code to help other programmers understand it, Python's list data type, and the concept of mutation.
  • For Loops Over Indices, Parallel and Nested Lists and Strings, and Files
    • This module introduces how to use a for loop over the indexes of a list, how to nest lists, and how to read a write files.
  • Tuples and Dictionaries
    • This module introduces tuples (an immutable version of lists), and Python's dictionary type.

Taught by

Jennifer Campbell and Paul Gries


4.7 rating, based on 110 Class Central reviews

4.7 rating at Coursera based on 6421 ratings

Start your review of Learn to Program: The Fundamentals

  • I signed up for several different introductory CS courses (LTP1 and ITPP on Coursera, CS50x and 6.00x on EdX) and I have to say that this was the best one. Demanding but not too much - about 4-4,5h/week, very thorough but not boring (the disjointed…
  • This course is absolutely perfect for beginners who have no previous experience with coding. It really dives deep into the fundamentals of Python and teaches you from scratch. You are constantly tested on the concepts through questions that pop up d…
  • Anonymous
    You will learn A LOT in this class. This is the best introductory programming class I have taken, and they don't mess around. You will learn everything you should learn to get started with Python 3.3 (and of course the principles apply to other languages as well). They go over things that other courses don't really mention, like good documentation, how to design a program, and how the computer runs through the program and handles the memory. Truly enlightening. It is rather fast paced, and I think it really helps to have at least a tiny bit of experience in programming, a total newbie who doesn't know the difference between an integer and a floating point will probably struggle to keep up.
  • Anonymous
    I loved this class. I learned string and list manipulation, modular arithmetic, list mutations. I was very happy with the learning experience and plan to take the second half of the class when it is offered.

    I also took Introduction to Interactive Programming via @Coursera @ Rice. This Toronto class is a little bit better for absolute beginners and focuses a little bit more on fundamentals, like the title suggests. If you were going to take both classes, I would take this Fundamentals class first as the Rice class can have a big workload for beginners who don't have these fundamentals.
  • Haider Ali
    This is THE Class for people without any programming background. This course will give you the best grounding for understanding basics of Python which will come handy when you are doing other introductory and advanced courses on Coursera and Udacity.

    I will say that other introductory courses on Coursera and Udacity are advanced when compared with this course. However, if you want to learn the basics of a programming language and progress in a structured manner this should be the first course on your list.
  • Anonymous
    I highly recommend this course to anybody wanting to learn how to program in Python! The content, the instructors, the structure of the course were great! I must admit that I find the course a bit tough and challenging, but I found myself fully eng…
  • I have special inspiration to wards developing relevant software to solve traffic and road safety problems. For this case I prefer to learn online basic programming courses.
  • Anonymous
    Jennifer and Paul are both World Class professors who hit a home run with their course. They have proven that a properly architected online class is a superior form of leaning. Their video lectures were understandable, efficient , and relevant and were not overdone or too long. The exercises and quizzes were challenging and effective. Through all of this they bridged the cyber world and physical world by making you feel as though you were sitting right in their office and they were giving you personal instruction in programming. I am proud of both of them and can't thank them enough for what they have done. They are the new breed of education Rock Stars and deserve the ultimate praise.
  • Anonymous
    They recommend you get Python 3.4, since 3.5 is not always compatible with their teachings....and then you learn that 3.4 was retired in 2019 and they are now on 3.9. One person teaches you the function design recipe, then in the very next nodule, the other instructor tells you the function design recipe is different, so good luck when this shows up on the week 2 test. With a topic that is always moving and adapting like computer programming, it seems unfortunate that we are obviously dealing with a course that hasn't been updated in years.

    I am totally stuck on the week 2 test, and ready to give up on this in order to learn from youtube videos, at least some of them are current
  • Anonymous
    I just finished the Fall '13 course offering and am quite happy with the design of the course and support I got on the forums. I'm a beginning programmer and found the first four weeks "leisurely" but very informative. the instructors used the Python Visualizer to show what's happening behind th scenes in memory stacks which helped a lot. Starting in week 5 things picked up with 6 being a tough week. I would suggest the instructors move the file open topic from week 6 to week 4 for balance. Also, adding a lab assignment in weeks 3 and 5 would help people get more comfortable with the Idle shell sooner in the course. I learned a lot and would recommend this to anyone that wants to learn beginning Python.
  • Xinru Cheng
    Awesome course! Just what I needed as a beginner in programming. The instructors and discussion forum mentors were extremely helpful, and after this course I feel more confident about programming in general, not just in Python.

    The course material is well-organized, and quizzes during the video really help consolidate learning. The instructors are friendly and patiently walk you through the details, with a little humour in the examples too.

    The final exam felt easier than the weekly quiz though, and I could benefit from a couple more coding assignments. But overall the best MOOC experience I've had so far!
  • Anonymous
    I really loved this course. the pace is just right, with a little challenge, but not as hard that you want to bang your head in the table and then just quit. (although I almost did that in some of the weeks but not because the professors didn't teach the class well or the assignment was too hard, It's just that I over think the solutions.)

    So if you have no prior experience in programming and want to learn. (really want to learn) then you should try this out. and one tip I can give is as I have said earlier, do not over think the answers.
  • Anonymous
    Comprehensive programming course: Clear explanations, practical examples, and excellent support. Highly recommended
  • John
    This is an excellent course to take if you want to learn to program in Python,. There are many exercises that get you 'hands on' with programming and the programming tests are based on the material being taught.

    I am currently finishing week 4 and will finish this course in its entirety. I am also taking another course that is more oriented to Big Data called " Python for Data Science from the UC San Diego. The course number is DSE200X. This is pure hands on with little programming as it takes advantage of the libraries available through Python.
  • Both instructors are very good at explaining the content. And the content covered was quite a good foundation. If I have one complaint, it is that I wish there were more programming assignments and fewer quizzes. I feel like I would have learned more from doing than from picking the right answer(s) from a list. Having said that, this may just be because it is a beginner course.

    I would highly recommend the course and these instructors.
  • Anonymous
    The main take away for me from this class was the structured nature in which it was presented. The examples presented for breaking down tasks in functions and writing programs to a specification to handle data. The lecturers done an excellent job with their selection of material and pacing and it was topped at the end with a certificate, which gives a sense of accomplishment. I took the RICE Python games programming course at the same time and may have found it more challenging if the basics weren't covered here first.
  • Anonymous
    Fantastic intro to Python programming. Course material well presented. The pace of the course is perfect for beginners, and lays a firm foundation for future advancement.

    Video Lectures, written notes, peer discussion forum, regular assessment exercises and assignments.

    Highly recommended.
  • Anonymous
    This is the best introductory MOOC on Python available in learning plataforms, to the best of my knowledge. The instructors code during the lectures, making every step of the process clear with useful comments and notes. The assignments are aligned with the content of each week. It is also very comprehensive, nonetheless quite detailed.
  • Anonymous
    This course falls within the definition of the "flow". It's not super hard or too long to bore you and it's not too short or too easy to be a walk in the park. Great course.
  • Profile image for Ted Watson
    Ted Watson
    Could improve video quality, but the content is easy to follow and challenging at some points. Tests and exercises are really useful. Great moderation in the forums.

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.