Introduction to Computer Science and Python
Recently I've completed the MIT course "Introduction to Computer Science and Programming Using Python" offered by the edX platform and taught by Eric Grimson - a Professor of Computer Science and Engineering at MIT. It teaches basic Python, but it's not a typical online programming course. It's a challenging, rigorous and pretty formal exposure to computer science, where Python seems to be taught by the way. It gives a lot of opportunities to practice and to analyse problems. It teaches how to think and act like a computer scientist. And also how to think recursively and reduce problems into smaller chunks.
About the course
It takes 8 weeks to complete the course. Each week there are two sets of videos introducing two different topics and each topic comes with practice exercises. There's also a problem set that requires more time and thinking. It took me around 12-15 hours to complete each week (2 hours spent on videos and the rest on exercises). There are also two exams: in the middle and at the end of the course. If you'd like to receive an official certificate after completing the course, it costs 49 USD and you need to complete all graded exercises on time and achieve a score above 55%. Otherwise, you will just receive a final grade.
All exercises and problem sets are scored by the system and there are no peer graded exercises. If you feel stuck or would like to discuss an issue with a real human, the discussion forum works well. You can't paste there your code, but you can receive some suggestions or inspirations from other students.
The course was updated for Python 3.5
So what have I learned?
The course is aimed at students with no prior programming knowledge who would like to develop their computational approaches to problem solving. Besides Python basics, a lot of effort is put to learn Python data structures and classes: how to use them and how to build hierarchies. It also introduces the idea of divide and conquere algorithms, bisection search and recursion, showing a few ways to find Fibonacci numbers (and predicting the growth of rabbits in Australia ;) ). A seperate lecture is devoted to the Big O notation and how to reduce complex problems into simple ones. There are also lectures and exercises about plotting using PyLab and debugging.
The course teaches computational modes of thinking and computational problem solving using three tools: abstractions, algorithms and automated execution.
On the positive side
The course is a challenging one and requires more time and effort than the usual online courses (e.g. at Codecademy, DataCamp, or even Coursera). If you like challenges (and I assume that you do if you got interested in programming), definitely go for it. During those 8 weeks many new topics are introduced briefly due to the time constraint, so the knowledge you get will be broad and shallow. But you will see a bigger picture. The course will give you an idea what's possible and what to take into account when writing your programmes, so you can look further. I encountered a few topics new to me and they've already proved useful in my programming.
You don't need to become a software developer or data scientist to use the course's assets. Whether you are a student, chemist, biologist, mechanical engineer, or work in finance or reporting, or maybe you would like to organize your personal finance records, abstraction and computational thinking may improve your work.
Last but not least, it's also a stepping stone to more advanced computer science courses (MIT offers part 2).
New course starts in January 2017.All Posts