I graduated from a technical high school in informatics where teachers explained that once we understand logic, we are able to learn any programming language in specific. Algorithm rulers, pencil, eraser, and sometimes a computer, were the main tools for the Programming Language class. After this experience, I ended up teaching programming for 2 years before going to college. The language used in the school that I worked for was Visual basics, a Microsoft language that used written language and a graphical interface. Now, I feel happy to learn Python, with a very innovative teaching and learning design.
One of the Codecademy’s founders used to be a Columbia University undergraduate student who dropped the course to invest in a programming platform that should be easy and intuitive for everyone. This is worth mentioning because his endeavor is a result of his frustration with the university methods of teaching and learning, and the content itself. He has advocated for teaching programming to young people, and it is not difficult to see him in education conferences and seminars.
This was my first time using the Codecademy platform, although I had planned to do it previously. I found it very pragmatic and effective: learn a language to communicate with a machine. Referring to Jeannette Wing’s article, the platform does not intend to form computer scientists, instead, it focuses on creating programmers, who learn the language to give instructions to the machine. Learning is intended to come from experience: the more one uses and the more s/he assimilates.
I completed 25 activities (2 lessons) through which I could notice that I memorized more easily commands that are usually used by other languages: the use of quotation marks for informing strings, the mechanism to define a variable and store data on it, the use of math operation expressions similarly to what is used in math, etc.
On the other hand, my mistakes showed interesting findings. As David Evans (2011) explains, programming means to describe every step using a language that humans understand and the machine can execute. The error notification messages that I received were very clear about that. One of them exposed my confusion between a variable and a string, using quotation marks. The error message tried to explain me that I was not saying to the machine what I was supposed to say. It clearly exposed that there were no margins for machine interpretation. The platform understood what I did, explained me it and informed me what I should have done instead. The platform algorithm is very didactic and focused on the learner at the same time that implicitly it makes clear that I need to learn how exactly to represent what I want the machine to do.
Interestingly, I imagine that the platform, which seems to have more than 25 million users so far, will be able to predict users’ mistakes more precisely, giving better instructions in the exercises.
The level of Python abstraction, as explained by Evans (2011) is not so hard to get use to it. For instance, upper(), lower() are abstract commands, but they are intuitive as well. So far, Python seemed to be a “simple, unambiguous, regular, and economical” language. This is maybe why it has become one of the most popular languages in social actions which try to teach young people and women to program.
Although I advocate for teaching programming at schools, I do not agree with Jeannette Wing that we need to have computational thinking at schools as a way to teach abstract and problem solving thinking. This seems to come from someone who does not know the schools curriculum, which already has different disciplines focused on such skills. Math, for example! The problem is how schools and teachers teach that. The problem is in the design of the classes. This is why the Codecademy platform is very ingenious – it changes the teaching-learning process design using the tools available nowadays. I share Jeannette Wings and David Evans aspiration of having liberal arts students and young people learning computational skills at schools, but my reasons are grounded in the necessity of changing the teaching-learning design and leveraging the number of skilled people from different backgrounds able to command machines for good of their communities and day-to-day life.