Originally published in the May 1992 issue of The Computing Teacher, this essay by IMACS alumna Natasha Chen brought much needed attention within computer science education circles to the debate over teaching computer programming for beginners. Amazingly, almost 20 years later, the key issue raised by the article – how to teach fundamental computing concepts in a way that is effective, engaging and empowering – remain unresolved. Many students still find themselves in syntax-driven classes that focus on a short-term ability to “make apps now!” in the language du jour rather than being taught strong fundamentals that enable success throughout college and career, regardless of which programming language is used. At a time when the US faces a huge gap between technical job positions and qualified individuals to fill them and the UK is grappling with a need for true computer science in its national curriculum, IMACS revisits this issue with a renewed urgency.
A Bad Beginning In BASIC
My first experience in computer programming classes was an elective course in BASIC back in sixth grade. I chose that class because I thought that computers were powerful and capable of doing many interesting things. Electives usually have a reputation for being fun, but my classmates and I heard stories about the difficulty of this course and how only one or two kids ever got A’s. I thought to myself, “Maybe they just weren’t interested in computers. But I am, so how bad could it really be?”
Pretty bad! Forget learning anything that encouraged us to think, wonder and explore. We were asked to study the history of computers, memorize the names of hardware, and master the rules of syntax. We were sixth graders. We weren’t about to enter the high-tech world of programming. All we wanted was to see what neat things we could do with the computer. The class wasn’t difficult at all; memorization is hardly a challenge if you take the time to do it. There were so few A’s because no one cared to do busy work, and that’s all that was offered.
Swamped By Syntax
After my sixth grade BASIC experience, I never wanted to take another computer science course again. Of course, when you are eleven years old, G.P.A. and class rank don’t mean much to you. But by the time I was about to enter my junior year in high school, I started thinking about those things … and college … and the classes I needed to take. To avoid another BASIC nightmare, I decided to bypass Computer Programming I (BASIC) and go straight into Computer Programming II (Pascal). Pascal was different enough from BASIC to make me think that it had to be better. I found out that the improvement was far less than I had hoped. We jumped right into the syntax of Pascal: program (input, output), begin-end, etc. Even after two years of studying Pascal, I still can’t remember all the rules.
It’s like trying to interest small children in reading. You try to show how much there is to discover in books by reading with or to them. Maybe they will pick up some books on their own and then some more, and pretty soon they will have built up a library. But if you dump the library on top of them, ask them to memorize the Dewey Decimal System and then put the books back in order, by the time they finish – assuming they do – they won’t care to look at another book, much less read one.
One of the students from that CP2 class had a very hard time with the syntax of writing information-processing programs, but when it came to the one graphics program we were assigned he was an absolute genius. I can’t begin to describe all the amazing things he could make the cursor do. But he was never recommended for the AP Computer Science class. By having no place for such a student, the computer education system may very well be tossing aside some of the best computing minds, simply because they don’t fit the mold of the curriculum whose rigidity derives from that of the languages used.
AP Computer Science: As Good As It Gets?
Five of us made it to the AP CS class and four more came from the CP3 (Fortran) class. We spent the first two days refreshing our memories of the syntactic rules that had evaporated over the summer. It seemed as if the purpose of CP2 was to teach us the rules and now, we had to remember them so that we could play the game – someone else’s game.
The last year was one of frustration. The most commonly heard outburst in our classroom was undoubtedly, “Stupid computer!” No matter what, it was always the computer’s fault. It seemed that my classmates’ programming strategy was to let the computer find their errors in the hope that this would somehow help them solve the problem. It never occurred to them that the computer is simply a testing ground for a well-thought-out idea. A human could conceivably go through an algorithm manually; it would just take an intolerably long time. For most of my classmates, this was their fourth year in the computer science education system, and all it had taught them was to rely too much on the computer and not enough on themselves.
The root of this problem lies in what is currently thought to be important for students to learn in computer programming courses, namely, syntax. Whoever is designing the high school computer science curriculum seems to think that, once students learn the rules of the language they are studying, having them write programs that demonstrate how those rules are applied will teach them what is important in computer science. As a student who has been through the system, who has had to waste the majority of my patience, concentration, and effort on keeping the syntax of my programs straight, leaving barely enough of these qualities to devote to solving the problem, I can tell you that such a belief could not be more wrong. This method of teaching is brainwashing. It is not like brainwashing or similar to brainwashing; it is brainwashing. It is a danger to computer science, sending out trained hackers instead of enthusiastic visionaries. Fortunately for me, I was given the opportunity to recover.
Saved By Scheme
In ninth grade, my math class began an introductory computer programming course in Logo. My classmates and I looked forward to every other Friday when we studied Logo, not only because it meant a break from math, but also because working in Logo was a lot of fun, and it was easy. Unfortunately, that course was ‘squeezed out’ as far as my class was concerned by the pressure of our math courses over the next three years. During that time, however, the course had been rewritten using the programming language Scheme.
As a senior, I had a study hall period that I sometimes spent in my math classroom doing homework. It was on one of these days that I happened to overhear my math teachers talking about Scheme. I was already tearing my hair out in my Pascal class trying to learn something for the upcoming AP Computer Science exam – in fact, all I was learning was the page number of the reference section in our textbook, which I frequently consulted to see whether type declarations or variable declarations came first or to re-check how to declare a record for a linked list. Enticed by what I heard, I willingly gave up my study hall to come in four days of every week to learn Scheme on my own for no credit at all, using The Schemer’s Guide.* My reward was that I regained the enthusiasm and interest I thought I had lost six years earlier.
In the four months it took me to complete my course in Scheme, I learned more about computer programming than I had in my two years of Pascal. In less than five minutes after I began reading the text, almost everything I learned more than three years previously in our aborted Logo course came back to me. Five minutes, not the two days it took to recover from just one summer away from Pascal. There were hardly any rules of syntax to remember. Furthermore, throughout the entire four months, I never touched a computer. The ease of learning and using Scheme gave me such confidence in the programs I wrote that I didn’t feel the need for the security of a compiler to check my work.
Simple Language Makes Learning Complex Concepts Easier
The thing I liked most about taking this course in Scheme was that I knew that I was learning something. Every concept I had ever tried and failed to understand comprehensively in my Pascal class – searching and sorting procedures, recursion, processing binary trees – was made clear when I studied them in Scheme. These things occur so naturally in Scheme that I couldn’t help but understand. After mastering the concept, I could then go back into my Pascal class and easily master the code. The point here is that concepts like these are universal in computer science. After you understand them, then you can learn the rules of any language in order to encode them. But it doesn’t matter how well you have mastered the syntax of a language if you don’t understand the meaning of what you are typing or the reason why it works.
Recursion serves as a prime example. My understanding was very vague; I knew that something was done over and over again. But after seeing the first recursive program in the Scheme text, I understood what it was all about. When we took the test on recursion in AP CS, my whole class seemed to choke, with grades in the 60s and 70s, and the second highest score in the 80s. Thanks to my background in Scheme, I aced the test. I couldn’t quite believe it myself! For the first time, I fully realized that Scheme was not only easy to learn; it was also easy to learn from.
It is a myth to think that length and complexity make a program impressive – a prevalent idea among my AP classmates. Scheme code is clear and easy to understand. There is no need for pseudo-code. Thoughts go straight from your head to clear, simple code. The strange thing is that Pascal sets you up to fall into the trap of complexity and to disobey the laws of top-down design. As a procedural language, it enticed us into trying to do too much in one procedure simply because it could be done. With Scheme, I couldn’t write a function that had more than one purpose. It is as inherently top-down as it is inherently recursive.
Computer Programming Is Fun Again!
In my four months of studying Scheme, I not only covered and understood everything that had been presented in the AP Computer Science course, but went beyond that to study functional programming, data and functional abstraction, objected-oriented programming, and artificial intelligence. I still can’t believe all the amazing things I have learned in this short time. This is how I wanted to learn when I was in that BASIC class in sixth grade. I had to wait six years to do it, but it was well worth it.
I wrote this article because I don’t want another kid to have to go through the frustration that I did and not get anything out of it. I don’t want another kid’s enthusiasm snuffed out by a pile of library books. I want students who study computer science to be inspired to create their own game. Kids never liked rules anyway, and that’s all we are – kids.
*The Schemer’s Guide serves as the basis for IMACS‘ series of University Computer Science courses.
It’s winter at IMACS headquarters in South Florida. What does that mean? Sunshine. Temperature in the 70s and 80s. New Yorkers at the mall. Gotta love it! With the holidays around the corner, you might be wondering what to get for the math or science lover in your family. So we asked members of our IMACS family to share some of their favorite books or movies for our Winter 2011 Staff Picks list. Instructors Guy Barmoha, Frances Keiper and Jeff Piskun offered some terrific recommendations. If you’re still in need of ideas, check out more favorites from our Summer 2011 Staff Picks blog post.
Guy Barmoha, Senior IMACS Instructor
Guy has a BS in Mathematics from Florida State University and a Master of Science in Teaching Mathematics from Florida Atlantic University, where he continues to serve as a Teaching Assistant. He has been a part-time instructor with IMACS since 1995 and has taught all levels of our Mathematics Enrichment courses as well as the summer Logic Puzzles course, a Computer Enrichment course, and an Electronic course.
Guy is an award-winning teacher who taught middle school math for 11 years, including the Great Exploration in Mathematics gifted program. He received the prestigious Edyth May Sliffe Award for Excellence in Teaching in 1997. In 2001, he was a finalist for Broward County Teacher of the Year and was named Broward County Middle School Teacher of the Year in 2004. For the past four years, Guy has been a Mathematics Curriculum Specialist for Broward County Public Schools, and before that, he spent two years teaching math to distance-learning students. As you can tell, Guy is one busy, well, guy! But he always manages to find time to teach at IMACS. As he puts it, “Teaching here is always a bright spot in my week – the interactions with the students, parents, and staff always make it feel like home. Not to mention the great curriculum!”
Guy’s survey response is below:
“There are quite a few books that I enjoyed reading, not all related to mathematics. Even though we are mathematics educators, we all understand the importance of literacy. It is hard for me to pick a favorite book, so I will choose two to discuss. One that has some sentimental value, especially since we are discussing IMACS, is called What Is the Name of This Book? by Raymond Smullyan. This is more a compilation of logic puzzles than a novel; however, there are surely stories told within the book. You may ask why I chose this book. Well, the answer is simple – this is the book that reminds me of learning to teach at IMACS. In this book, students have to solve logic puzzles to find their way around the Island of Knights and Knaves, where Knights always tell the truth and Knaves always lie. Many of our logic puzzles that we use at IMACS are based on the problems in this book and other Raymond Smullyan books. I can still see our late founder, Burt Kaufman, teaching from this book and showing all the cases and subcases that students have to consider to solve the puzzles.
The second book is named Innumeracy by John Allen Paulos. Since we mentioned how important literacy is, we should not overlook the importance of numeracy. This book discusses consequences of innumeracy. A story from the book that sticks with me is the one about the stockbroker. The story goes something like this …
… Suppose I told you that I could predict the movement of the stock market correctly for the next five weeks in a row. Would you trust me enough to be one of my clients? Most people would. Well what you may not know is that I gave the same deal to 2,048 people. I then told half of them that the stock market will drop, and I told the other half that the stock market will rise. After the first week, there are 1,024 people who believe I predicted the movement of the market. Of those 1,024 people, I tell half that the market will drop and half that it will rise over the second week. By the end of this cycle, I will have 64 people who will believe that I am knowledgeable enough about the stock market to be able to predict its movement for five weeks in a row. …
This book was full of interesting situations like the one mentioned above. This is why I enjoyed reading it and refer to it often.”
Frances Keiper, IMACS Instructor
Frances has a BS in Mathematics from Stetson University and an MS in Applied Math from the University of Central Florida. She has been teaching part-time for IMACS since 2003 and previously taught math at Broward College. Frances worked for IBM Federal Systems Division at Cape Canaveral, Vandenberg AFB, and in Houston on Space Shuttle ground support software and on an upgrade to Mission Control flight information systems. She’s also had a few international assignments with IBM in Melbourne, Australia, where she created software and hardware upgrades for various banks, and in Kuala Lumpur, Malaysia, where she managed a project for the state-owned telephone company.
Frances’s survey response is below:
“I loved Dune by Frank Herbert – the book, not the movie. I got totally lost in the fantastic but somehow believable world Herbert created and just hated it when I finished the book. (I recommend skipping the sequel.) Herbert created a physical world full of sand containing creatures perfectly suited to that environment such as giant worms that travel rapidly over and through the sand. Then he populated the world with people who had their own elaborate social order and customs, again perfectly suited to that world but unlike anything we know on earth. The magic of the book is that it is so rich in detail and written so vividly that it becomes very real to the reader. You are drawn into this made-up universe. I don’t believe, even amidst the mountains of details regarding the physical and the social systems of Dune, that there is a single bit that is illogical. It all fits together so beautifully. You just have to believe.
For a more recent favorite, I really liked The Disappearing Spoon by Sam Kean. It’s full of quirky tales from the Periodic Table.
I loved the play Proof, which I saw at American Heritage Schools’ Mosaic Theater. And I liked the movie, too. It’s about a famous mathematician who is working incredibly hard to develop a proof, something that will be acclaimed the world over. He is an old man in the story and dies. His daughter, a mathematician in her own right, cares for him and grieves at his death. At first you’re not sure if the old mathematician was a genius or crazy. His behavior was bizarre. After a while, you’re convinced he was crazy.
Then a young math student shows up and trolls through the old man’s notebooks looking to find or maybe steal his brilliant but maybe non-existent proof. The twist toward the end is that the student finds the brilliant proof, but the person who developed it is the old mathematician’s daughter! I especially loved the fact that the hero is a FEMALE mathematician!
I almost never miss checking in to see what topics NPR’s Science Friday covered during it’s most recent broadcast. And I also really like an Australian call-in science show from Triple J Youth Radio. It’s called Dr. Karl. Dr. Karl himself is an enthusiastic and engaging science guy who can explain anything in simple terms and will readily admit that he’s not qualified to answer when he isn’t!”
Jeff Piskun, Senior IMACS Instructor
Jeff has a BS in Mathematics from Villanova University and an MS in Sports Administration from St. Thomas University. He started with IMACS in 2003 and is currently one of our part-time instructors. Jeff also teaches middle school math. A big sports enthusiast, he worked for over six years in sports and entertainment venue management for several professional teams, including the Florida Marlins, Miami Heat, and Florida Panthers.
Jeff’s survey response is below:
“Two books I would recommend are Freakonomics and Super Freakonomics by Steven Levitt and Stephen Dubner. These two economists use basic economic principals and basic statistics to look at real-life situations and investigate the hidden side of everything. The books are written in a fun but eye-opening manner and explain things like: why charging parents late pickup fees will actually increase late pickups not deter them; why your realtor actually does not have your best interest at heart; how walking drunk is more dangerous than driving drunk (not endorsed!); that many government programs actually have the opposite effect than intended (shocker). Parents should note that the books address some adult topics, so beware, but they are really an eye-opening read.
I enjoy movies that are similar to the original Stargate with Kurt Russell and James Spader. I like anything with codes and ancient secrets and the science/adventure/historical fiction genre overall. I’m intrigued by the idea that even though certain events are part of “history,” we still do not know everything about what occurred and why. Many many years later there are still mysteries and puzzles that need to be solved and theories to be investigated. Codes, puzzles, and mysteries based on historical events and real data are exponentially more fascinating than fictional ones.”
Guy, Frances and Jeff – Thank you for the awesome recommendations!
To our readers – Thank you for making our blog a part of your online experience. We sincerely appreciate your time, comments and feedback. Our next post on December 22nd will be a classic from the IMACS vault. All the best to you and your families for a wonderful holiday season and happy and healthy New Year!