Using a Programming Contest Format to Excite Introductory Students

Jump to: navigation, search

Using a Programming Contest Format to Excite Introductory Students

Arup Guha
University of Central Florida (UCF)


The University of Central Florida (UCF) enrolls nearly 700 students each semester in Introduction to C Programming (COP 3223) in three large sections of about 230 students. Last fall, the University added an Honors section of the course with a limited enrollment of 20 students. In order to further encourage these Honors students, each Friday class session was devoted to solving contest style problems. These sessions greatly improved the students’ ability to solve problems and translate those solutions into code. Furthermore, students showed greater enthusiasm towards programming due to these “Friday problems.” Though this method isn’t easily scalable to a large class of 200+ students, for any university with smaller class sizes, this approach will help students become better programmers and problem solvers.

In a typical class, lectures include code shown on a projector. As new C constructs are introduced, students see examples of those constructs used in short sample C programs. Students are asked various questions and the answers to those questions are presented by editing the code, recompiling and running the new version of the program. While this level of interaction does improve learning compared to typical lectures, many students have real trouble solving problems on their own and converting their solutions into code. Thus, in one class period a week, instead of having any lecture at all, students were asked to pair up and work on programming contest style problems. Students worked on the problems on paper and then on their laptops. Instead of a formal contest submission, students would raise their hands to get their problem checked via the input file for the problem. By collaborating, students exchanged ideas and in many cases, groups where neither student would have solved the problem completely on their own would figure out a solution together. Many times, one student would spot a logical error the other student made, and vice versa. Students seemed motivated by trying to match the given output and by informally competing with the other groups of students. The group work also promoted students studying together and learning together outside of class.

A second issue that often occurs in introductory collegiate programming classes is that some students have a prior background in programming. A second, more challenging problem was given to these students, which kept up their interest in the course. While these students were often good at finding ways to solve problems, they rarely thought about the efficiency of their solutions. Carefully crafted problems with posted data files helped these students look for more efficient solutions. Without a long lecture on big-oh notation, these students learned more tangibly the importance of efficient algorithms.

Introducing programming contest style problems to beginning students in a group setting has many benefits: it promotes student learning from one another, it improves students’ problem solving and coding skills, it is an avenue to keep the interest of the more experienced students, and it is useful in showing those students the importance of efficiency. At the end of the 2010 Fall semester, 75% of the students in the course earned A’s, a much higher percentage than usual.