Ana Bell , is a lecturer at MIT in the Electrical Engineering and Computer Science department. She co-lectures the Introduction to Computer Science and Programming Using Python course aimed at students who have no prior programming experience. She has been teaching this course for the past two years. She was first introduced to Python in graduate school at Princeton University where she started using it to parse and reformat large files in her research and then began using it to implement machine learning algorithms in her research.
She was also involved with the introductory programming course in Java while working as a teaching assistant in graduate school.

ana_bell

This weekend, Ana Bell, author of Learn Programming, talked with me about how she launched her career in programming and how it’s an outlet for creative expression that everyone can benefit from learning!

1 – Tell us a bit about yourself, your interests, and what you’ve been up to.

 

I first became interested in teaching intro classes when I TA’ed for Intro to Java at Princeton. After explaining the idea of a loop in 3 ways (a drawing, an example, a formula), I realized the hardest part of teaching programming is figuring out how someone learns. It was satisfying watching students in my tutorial section have “aha” moments and being a part of that. I’m now a lecturer in the Electrical Engineering and Computer Science Department at MIT for Intro to Programming and Computer Science using Python. I also run the same course on edX. It’s been interesting to watch how the same course evolved in the campus and MOOc settings and to deal with the challenges each has to offer.

 

2 – What got you into programming?

 

I first started programming at 12 years of age, in Java. My dad showed me the basics and after doing the traditional “hello world” program, I wrote a choose-your-own-adventure game. In terms of concepts, all I knew was how to read user input, print text to the screen, and make decisions in the code, so the program was very convoluted. I gradually learned more advanced concepts that made my original game more feature-rich (and less buggy!). But I was hooked when I had my very own “aha” moment — when the idea of object oriented programming clicked for me, after being explained oh so many times. I think not understanding a concept and then suddenly understanding it has made me very aware that not everyone just “gets it”.

 

3- Why is learning to program important?

 

Programming is merely another way to express your ideas — instead of writing a poem or painting, you can write a program. Programming is creative and rigorous at the same time. Programming is no longer a specialized field — it’s being incorporated in many different professions and activities. You can use it to make decisions and use it to analyze results in any field. Programming means getting the computer to do what you tell it to do, and these days the computer can do it really quickly. You can even incorporate programming in your daily routine: write a program to calculate a restaurant tip, or randomize a list of names and pick one arbitrarily, or write a program to help you plan a schedule such that you maximize the number of movies you see at a film festival.

 

4 – Why is Python a good language to learn with?

 

It’s difficult to answer this question because many people reading this book won’t really have any other language to compare Python to. The most beneficial thing about learning Python as your first programming language is that it has simple and easy to understand syntax under which to learn key programming concepts. If you were to read Python code, it would feel as if you were reading some weird English prose; it would have an odd flow to it, but you could understand what was going on. After learning Python, implicitly you will also learn some basic concepts that apply to most other programming languages; all you will now have to do to learn syntax specific to the other languages.

 

5- How did you get the idea for this book? What motivated you to write it?

 

Perhaps counterintuitive, I feel as if there are fewer and fewer formal resources for someone who has never programmed before. Many resources make that claim but then go on to assume certain basic concepts that are easy to forget they once did not know. With Python being a language that became popular later than others did, many resources assume that their audience already knows programming and just wants to learn what makes Python different. But the beauty of Python is that it has simple syntax that makes it a perfect language for a beginner programmer. So I wanted to write a book that someone could pick up, feel as if they are having an informal conversation, and by the end learn the Python language and how to program. All from scratch.

 

6 – Any advice to beginning programmers?

 

Programming is a skill, like reading or math. Boring as it may be, practice through repetition is necessary to make sure that certain parts of the programming process become second-hand. Programming also has a creative side; there’s a little bit of thinking, exploration, and drawing that should happen to envision a few different ways to solve a task, before writing any code. It’s easy to get wrapped up in wanting instant results, which means wanting to start coding right away. Unfortunately, starting to code boxes you into a solution which you feel like you need to see through, when sometimes you might just need to scrap it and start over. Mostly, keep at it and if you get frustrated, take a break. It’s amazing what a little time away from the computer can do towards having your own “aha” moments!