Among the major MOOC providers, Udacity takes a different approach, focusing on technical content geared primarily for people looking to improve their skills for a current or future job. By having this clear focus, they can tailor their offering to try to closely match the needs of their target learners.
Kunal’s background makes him uniquely qualified to be an instructor in this environment.
Kunal Chawla, a course developer and teacher at Udacity, took time to sit down for an interview with BestCerts to talk about Udacity’s pedagogical approach, and his new course, Programming Foundations with Python: Learn Object Oriented Programming. Kunal’s background makes him uniquely qualified to be an instructor in this environment: after obtaining a bachelor’s degree in Computer Science he worked as a programmer for three years, but then decided to switch gears (after reading David Bornstein’s How to Change the World) to pursue the field of education. He taught middle school science, worked with Google in an education initiative, and eventually earned a Masters degree in Educational Technology from Stanford University before joining Udacity.
Kunal on new ways of teaching online
Udacity combines the benefits of a MOOC with the support of real people
Udacity takes a project-based approach to teaching its technical subjects, where students learn primarily through completing projects, and learn by doing. This approach is not uncommon in teaching coding (for example, other MOOCs providers and sites like codeacademy), however, Udacity combines the benefits of a MOOC with the support of real people (with the paid version of the course). Here is how it works: you can audit Udacity courses for free and access all of the course content, exercises, and discussion boards. But for a monthly fee, you also have access to a Udacity-trained coach that will help you plan your course goals, review your code, and provide assistance along the way. You can also earn a verified certificate of accomplishment if you meet the criteria. Whether you take the free or paid course, you can learn from or help your peers via the discussion board, and finish the course with code that you build, where you can showcase it in an online portfolio to demonstrate your skills.
Behind the Scenes at Udacity to Create a Course
Kunal also walked us through the process Udacity goes through to develop courses, and it was nice to peek behind the curtain, and see what goes into making a course. A brief overview is as follows:
- First, Udacity forms a team, and they start by looking at the skills employers are looking for
- Then a course developer (usually also the teacher) takes the lead and considers the target learner, taking into account what they know and their comfort level with the subject
- Based on this, they determine the learning objectives for the course
- The course developer creates a few lessons and tries them out with volunteers that fit the target audience profile, and get feedback
- Once the feedback is incorporated, a script for the course is developed, and any needed resources are built out, such as tools for exercises or visual graphics
- Finally, they shoot footage in the studio or on location (Kunal relayed a humorous story about one teacher who spent an hour or two lecturing in front of a camera that wasn’t recording)
- Next is the video editing process, which can take some time
- Then the course is ready to beta test and undergo a final round of quality assurance before being released
These steps are what you might expect for a well-designed course, but seeing all of the steps makes you appreciate the amount of effort and care that goes into creating these courses.
On Teaching Object Oriented Programming
This should not be the first programming class a student takes
The new class that Kunal released is designed to teach object-oriented programming (OOP) concepts via the Python programming language. OOP is something that nearly every programmer will need to learn fairly early on, an “important component of a software developer’s toolbelt”, as Kunal says, along with other skills such as writing pseudocode, read documentation, debugging programs, etc. This should not be the first programming class a student takes, thus a pre-requisite is for students have some experience with basic computing constructs like if-then statements, for-loops, and function definitions.
We asked Kunal about the challenges that learners face in learning about OOP for the first time. He pointed to the fact that implementing objects looks superficially similar to function calls, which is unfortunate because they are quite different. But the biggest challenge, Kunal says, is to establish relevance and answer:
“‘Why should I do object-oriented programming?’ You have to tackle this head-on. The way we begin the course is to present a scenario where using the standard functional paradigm of writing code doesn’t work very well. You realize as a learner that you need something new to solve this new scenario–you just don’t know what that is yet. So I start to unpack that and introduce new concepts to name the things the learner is yearning to find.”
Kunal on the target learners he has in mind
If all they take away is how they use the OOP paradigm, I would have failed
Thus, with this start for the course, we can imagine the care and attention that is being paid to help learners understand the key aspects of object-oriented programming. However, Kunal makes clear that his goal is not just to teach OOP – “If all they take away is how they use the OOP paradigm, I would have failed. I’m after something more than that. In essence, the big thing they will take away, I hope, is an increased sense of self-efficacy. To believe in their own ability to become a programmer, to solve things with code…that’s what I’m shooting for.”
If people are committed and go through Udacity’s programming curriculum, through either the free or paid versions, they will likely develop the key programming skills they need to embark on a career in programming. In the current environment, when demand for programming talent is hot, that should be enough to land your first programming job. But what about over the longer term, when a larger proportion of people learn to code (there are many recent efforts to teach young children to code, e.g. Hour of Code, Tynker). What separates good coders from excellent or great coders? Kunal shared his thoughts on this:
“As we train more and more coders & programmers, I think employers are going to demand not just the skill of programming, they are going to demand skills that are more interdisciplinary than that. The ability to code would be important, but not sufficient. It may be: can you prototype, can you conduct interviews to find out what the real problem is, can you debug at a fast rate? All of these skills are going to be essential in making an individual that can create products that change the world.”
If you want to truly learn something, teach it to someone else.
In our world there is continual change, and we are going to have to constantly learn new things. Thus, it is exciting to see Udacity’s sharp focus, and Kunal’s passion for teaching and crafting ways to guide learners past pitfalls. We also hope that these efforts help raise the state of our collective knowledge about different ways to teach and to learn in general. If you are interested in Kunal’s course, Programming Foundations with Python: Learn Object Oriented Programming, it is self-paced, so you can take a look and start it at any time.
Final Thoughts: learning through explaining to others