An Introduction to Interactive Programming in Python at Coursera.org
I started this course in April (and I did not write barely any articles since) and now it’s at the end. So I thought I could write a review about the course — to help people interested in the topic if this course is for them or not.
First of all I have to tell you: I’m a semi-professional software developer and this course is really an introduction: not just to interactive programming but to Python too. So if you are like me you have to overcome your ego and take the course as it is.
What I really liked was the weekly mini projects: developing a simple game with the features you learned through the video lectures. First just a static game that writes to the console, than add some GUI features, interaction with the user, graphics, dynamic graphics and at the end you have a full working game you can share with your family and friends.
And the comments of your evaluators are good too. As the course goes on the more your workmates get to know python and can suggest you some issues which can help you making a better program.
However it’s not permitted to improve your work and add a GUI later to your games or enhance the first-submitted version if you learn the tricks during the course.
What the biggest problem for you could be is CodeSkulptor. This is an IDE developed by Scott Rixner which is supposed for creating Python GUI apps using a self-maintained library: simplegui. This means you have to write your applications in / at codeskulptor, save it there and share the URL with anyone who wants to see your game.
This means you have to share the code too — so CodeSkulptor is really engaged for open source development. Naturally there are forum posts which help ambitious students convert their code into “run everywhere” products, that means they describe how conversion between simplegui and TKinter works. After you have your Python application running with a common Python GUI framework, you can create a runnable file from your Python code and share this among the people — so your code is safe (more or less 😉 ).
I thought I could post the mini-project solutions I’ve made but I’m not sure if would this be against the honour code or not. Eventually for future students I could be a temptation. So I did a sample project with CodeSkulptor: Lights Out. I know, not a fancy one but it shows the capabilities of the IDE, and python programming.
Note: this code runs currently only in CodeSkulptor — but I have the conversion to another framewok on my ToDo list 😉
I created the application in more steps — as most of the developers do.
- First of all I made a simple version of a 3×3 grid, drawing circles as the lights.
- Then I got some images to work as the lights. (I aggree, the background is terrible. I could upload another image but let’s not argue on that.)
- After this I went to a more complex version (to be honest it is not as complex as it seems): I added an extra phase to the switches, so now you win if you have all lights in the same colour — you do not have to achieve blue.
- And finally I made the game resizeable (and I think mathematically it’s almost impossible to solve the game on a not 3×3 grid).
- And added a background (it was not much work).
As a good developer, I created a second example with a bit better GUI: Conway’s Game of Life. It has some development potential (i.e. zooming) but I find it not so bad as a first development. You can look at the code again at CodeSkulptor: Game of Life
Well, I guess if someone of a later course finds my solution for the last mini-project the teachers will find it too. Besides this if someone who got poor grades on his/her mini-projects before gets maximal points for the submission — it would be suspicious.
So here is my Rice Rocks game.
And an important note: currently the projects work with Chrome the best (because Firefox issued some changes in the HTML5 and graphics display). So please use Chrome for CodeSkulptor and running my examples.
I suggest this course for everyone who never did any development in Python (or never developed software at all) and want to learn the basics of GUI development. Naturally the less experience you have with software development the more time you have to spend on learning the concepts and develop your skills.
For experienced developers: this is a great course, I had a lot of fun (however with my experience I spent only one or two hours weekly with the assignments) so if you can overcome your ego I encourage you to join.