Michael Scott

Michael Scott

Department of Computer Science
CS Studio: Teaching Introductory Programming to at Risk Students in a Small Class Structure

Project Overview

This initiative hopes to increase the pass rate for students with no prior programming experience. The typical introduction to programming class has approximately 80 students and meets 3 times a week for lecture with 1 discussion section. The pass rate for this type of class for students with no programming experience is 65% compared to 80% - 85% for students with some programming experience.

In the small class structure, the students will still attend one large lecture session and then attend 3 lab sessions with approximately 25 students where they complete lots of problem sets. The smaller class sizes and guided practice structure will hopefully decrease the fail rate.

The "small class structure" provides lab sections limited to 25 students. During these sessions, students are given opportunities to code. I am flummoxed by how unwilling some students are to ask for help during the sessions. I observe them going to their book or the class slides when they hit a brick wall instead of asking myself or the TA. When I am fortunate enough to notice this I immediately step in to get them unstuck. I am thinking hard about why students are unwilling to ask for help and how to change that tendency.

We have had one exam and the students did better than past students with no previous programming experience. Yet, they are still not performing as well as those students who reported prior experience. We are at the point in the course where we have covered enough of the basics of programming that the problems are no longer trivial. Now is the time when I hope the extra, guided practice will assist students with little or no background in computer programming.

What has differed from your initial expectations?

It was difficult to ensure all of the students in the small sections met the profile or little or no programming background. I worked with the CS advisors who spent a lot of time and effort during summer orientations identifying the students who we hoped to most benefit. However, there were still openings in the small sections which were available to all students. This led to a mixed population in the small sections, something I had hoped to avoid.

I have also been surprised at how long it takes students to complete problems in class. It is my "expert blind spot." Just because I can complete a particular program in five minutes I am forgetting that I have been doing problems like this for years and have spend far more time programming than my students. It is not unusual for students to take two to three times as long to complete a given problem. Obviously, if each problem takes more time we don't cover the number of problems I had hoped to during the class.

How have you overcome any challenges?

Mostly I have had to scale back expectations on what the students can reasonably complete in an hour. With smaller problems I can give the students a task, let them work on it for fifteen minutes, then come back together as group to discuss various approaches to solving the problem. With a 50 minute class we can complete two such exercises and get the students started on a third problem.

I have also had to choose problems carefully so that they focus on one programming concept at a time. A tricky or complicated problem is not the best kind to use in these small, hands-on environments. The fundamental problems are the most valuable.

Where do you see this headed in the next year or so?

If I have the resources to continue this project I hope to create my own content videos for students to view before the problem sessions. There are content videos that accompany the class textbook and I ask students to watch these before class. I have found if the videos are not by the actual course instructor students discount the value of the resource. 

I also hope to have better controls on the students that are admitted to the small sections. My goal is to have a group of students with a homogenous background in programming, little to none, for the small, problem solving classes.

What is an example of experiential learning in one of your courses?

I teach an upper division CS course with a focus on Android application development. The first half of the course covers the fundamentals tools and techniques for creating an Android application. Students create a series of six tutorials that build on each other to create a simple app, a game of tic tac toe vs. an automated opponent. The second half of the course is much more open ended. Each student proposes two possible apps one of which must be service oriented. Student then form teams and build one of the apps during the rest of the term.

What was an influential learning experience that you had as an undergraduate?


For more on Dr. Scott's work, please visit his homepage or email him at scottm@cs.utexas.edu.

Dr. Scott is part of the Provost Teaching Fellows program. Find out more about this Faculty Initiative here.