The Missing Pedagogy in Computer Science

Having recently made the transition to computer science from the “softer” sciences, I’ve come to understand the field of computer science, and probably to a larger extent the entire area of science, technology, engineering, and mathematics (STEM), suffers from a serious pedagogy problem.  Originally I thought this was an issue with my particular teachers, but after a number of classes at different institutions, I realized it is endemic and it gets worse with the relative prestige of the institution.

In my experience, the pedagogy as it exists now has some basic assumptions:

  • Long lectures with minimal examples and applications are the best way to describe foundational concepts
  • Students are responsible for any and all understanding of actual applications
  • Assignments need not have any correlation to what has been lectured on or any correlation to the assigned reading
  • The Internet will provide any and all supplemental materials
  • Students who complain about the lack of useful and applicable educational material are whiners and are best culled from the program or otherwise marginalized

This flies in the face of all I’ve come to understand as the optimal way of learning material, particularly complex technical material. Providing massive amounts of technical information in a short amount of time as an unending stream of consciousness without any integrative exercises is the best guarantee most, if not all information will be forgotten almost as soon as the slide is changed.  If all learning happens outside the classroom, then there is no incentive for students to come to class.  The students’ time would be better spent going over the slides and learning the material on their own instead of wasting time in class being overwhelmed with more than they could possibly retain.

The mistake lies in assuming the learner’s brain is like a sponge.  In fact, we learn through making connections, often through different sensory modalities.  The unisensory visual method (death by PowerPoint) is only marginally useful.  The compaction of various topics into a dense lecture overloads the natural systems for integrating information into memory, which is the essence of learning.

Despite the differences in how students learn, research has shown that no matter the subject or the ability of the teacher, the average student is able to focus for only 10-15 minutes on a lecture.  The rest of the time is essential a waste.  I’ve sat in lectures that lasted a full 2 1/2 hours. I wrote notes and used those notes later to try and understand the assignments, but I question how much I really learned.  It was even worse when the course was taught without any book.  Lectures were the sole source of information for the course.  This meant the information outside the first 15 minutes was virtually lost.

Added to this is the socio-economic dynamic of learning in technical fields.  If the onus is on the students to teach themselves the material outside of class, only those students who have the time, ability, and resources to put in that work will likely be successful.  As an undergraduate, I worked 20 hours a week (if not more) in order to pay my way through college.  If I was in a technical program that required me to spend this time studying material that was poorly presented in class, I would’ve been confronted with the choice to either fail college or drop out because I couldn’t pay for it. I came from a family flush with engineers and technical professionals who could’ve lended a hand, but what about the student who dreams of an engineer but comes from a family of non-technical types who don’t know the first thing about writing code? I wonder if this isn’t one of the primary barriers to entry for women and minorities who would otherwise succeed in STEM fields if it weren’t for the poor state of the pedagogy.

My characteristic response to this problem is to roll up my sleeves and try my hand at teaching technical skills.  Starting as a teaching assistant in a Data Mining course at Fordham University and later an introductory informatics course at NYU, I started working out what it took to teach technical topics, particularly to the non-technical. I’ve since taught classes for the City of New York, including an introduction to open-source mapping with QGIS and data analysis for managers as part of the City of New York Management Academy.  I’m now preparing to teach an introductory course entitled Mining the Open Web for the new Pratt Institute Certificate in GIS and Design.  The course focuses on how to acquire, clean, analyze, and visualize open data, which I’m teaching to the technical and non-technical alike.

The approach I take is this:

  • Teach for comprehension, not completeness. At some point, it will be important for students to learn the formal definition for linear regression but that is not on the first day of teaching. No one learns from a formula, but there is a tendency to use formal definitions and comprehensive explanations to introduce a topic. That’s the wrong answer.  There’s no way anyone can integrate all the information on a topic they’ve no experience with and it’s a fool’s errand to try.  Teach the basic principles and concepts to get the “ah-ha” moment, and then introduce the edge cases and formal definition.  In most cases, the students won’t even realize they’re learning, just using their curiosity to explore.  Ideally as an instructor, I’ll be building on their existing knowledge so they can easily integrate the information I’m presenting.
  • Teach to what they know. I often start off a new topic with an ideation exercise to both find out what they already know about a topic and to get them primed for the material I’m about to present.  Knowing what already interests them about a topic helps me hit the important points they may already be aware of, as well as better integrate the new information into what they already know.  I try to structure these exercises to accommodate learners who may not be comfortable speaking in front of the whole class by having them first discuss their ideas in a small group before writing them down on Post-It Notes that I have them bring up to the front.
  • Teach for “just-in-time” learning. When I first heard of this concept, it was like the heavens opening and angels singing.  This was exactly the framework I was looking for. I highly encourage you to read this article, but in case you don’t, there are three key concepts to this approach:
    1. Teach them how to get started
    2. Teach them what they can do with the technology
    3. Teach them the basics to cover what they’ll be doing 90% of the time

    I’d add to this a list of tips, tricks, and resources for when they get stuck. Part of this process is getting stuck. It’s the people who’ve gotten themselves stuck the most who grown and learn in this discipline, but as instructors, we shouldn’t see throwing our students into the deep-end and watching them drown as a virtue. It’s our responsibility to teach them how to swim.

  • Teach to all their senses. More learning happens in discussion when students are able to not only listen, but speak, as well as write or otherwise do the tasks they’re learning. I give them time to practice the material I’ve covered in whatever way they need to assimilate the material into their minds.
  • Teach with plenty of breaks.I have a background in performing but I don’t want to be “onstage” for an hour and a half with all eyes on me. If I’m lecturing for more than 20 minutes, I’d better have a really good reason. That’s the time to give my students a short break, even if it’s just a transition into a practical exercise, a class discussion, or some kind of group work.  The overwhelmed mind is the worst type of learner.
  • Teach with humility. I’ve been in classes where I wasn’t the most knowledgeable person in the room on the topic I was teaching, but I like to think I made it meaningful for them because I taught at various levels. For the novice, I clearly explained foundational concepts and gave a framework for further learning.  For experts, I gave tips and tricks they may have not been exposed to, as well as personal experience they may not have gained in their own work. I also recognize learning isn’t just vertical, it’s horizontal as well.  I allow plenty of time for students to learn from each other. I also open myself to my students so they can teach me.  This goes with the previous point, I give myself plenty of time to circulate around the classroom, checking in with groups, finding out how they’re doing with the material, and helping me shape the rest of the class. I make sure I stay a learner in the process of teaching.
  • Teach with a plan, but keep the plan flexible. I’m a planner by nature, but I’ve learned to put together a loose structure around my lectures.  I bring plenty of material and a strong sense of what I want my students to learn, but I leave the exact course we take open to the students.  Instead of plotting out what I’m going to say at every available moment, I make it a more dynamic experience. This requires me to be fully present, engaged, and prepared for the class, which is how every instructor should approach the task of teaching. We expect students to be prepared for class and as instructors, we should give them nothing less.
  • Teach for all skill levels. In a class I taught for the Management Academy, I stumbled upon this technique of the multiple pass through a task.  I describe and demo a task relatively quickly and hit the important points, then release those who already “got” the task to start working on a project. I then go back and teach the same technique, slower and with more description, allowing that group to continue working as well. I then do it again for those who need more help, addressing any remaining problems before they also continue working on the project.  This requires a certain level of trust with the students that they won’t get left behind, but teaching to the mean or the lowest common denominator in the class will only ensure most people are bored.  Someone will find it too slow or too fast and I’ll get bogged down in minutia. Better to get as many people out of the gate and on their own while I circle back on those still having trouble.

The course is 8 hours long and runs 4 Saturdays in September.  I’m teaching in 50 minute blocks, with 20 minutes or so of lecture to get the students primed on the topic, and then time to work through class exercises to reinforce the material and allow them to better integrate the information through hands-on work with the tools.  In the first class, we will do an end to end project using relatively clean data, easy-to-use online tools, and a simple question.  In the next classes, we will drill down on the various tools, techniques, and approaches at each step in the process as we work towards our final project.  I’m then going to introduce some more advanced topics they’re free to explore on their own time. My goal is to expose them to the critical tools, techniques, and skills necessary to get started, show them the resources to help them grow in the field, and otherwise stand back and let them direct their own learning.

So, if you’re interested in seeing the course in person, feel free to join us Saturdays by registering for the course.  It’ll be a fun adventure and hopefully we’ll all learn something new and interesting from the experience.

2 thoughts on “The Missing Pedagogy in Computer Science

  1. Pingback: Curriculum Development Using Design Thinking | Datapolitan

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s