Active learning moves programming students from novice to skilled

College students working in groups on computer projects

Today’s educators are faced with numerous challenges, particularly in courses where students have a broad range of prior knowledge and interests. Introductory courses from many departments are often offered as general education credit courses comprised of students at different stages of their academic careers. For introductory programming courses in the computer and information science fields, this predicament requires students to spend significant, dedicated time practicing programming in order to be successful. In order for the practice to be meaningful, specific individual feedback is required to help students transition from novice to skilled, while also providing instruction that identifies and helps to resolve potential misconceptions. Significant hands-on training is required, yet student and faculty time is limited on a weekly basis, representing a significant challenge.

I tackled this challenge by redesigning an existing course that introduces students to computational thinking with a focus on the JAVA programming language. The course innovations that I introduced include:

  • pass/fail grading
  • flipping the classroom
  • additional lab exercises outside of weekly homework
  • continuous active learning


Pass/Fail Grading

Empowering students to take responsibility for their own learning and instilling rigor while maintaining a sustainable course load is a challenging combination. Creating pass/fail assignments in place of standard grading allowed me to create more challenging assessments that introduced academic rigor and set clear expectations for student homework completion. My goal is for students to learn the material and get it correct on homework, so they can replicate that success on quizzes and exams.  Students must earn at least 75 percent on each exercise by the due date to pass that assignment. Based on this competency level, points are earned on an all or nothing basis. Similarly, programming assignments graded with a rubric required a score of 75 percent or higher to earn a passing grade. I was able to employ standard approaches to grading while moving final assignment and assessment grades to a pass/fail format. For learners early in their academic career this can initially present problems as it is a grading method they may not be familiar with. However, since moving to pass/fail grading, I’ve found that students now take more responsibility for their work; while this often requires additional explanation and direction from the instructor, I believe it is worth the extra effort.

Since the pass/fail format was new and different, I introduced an optional program that allowed students to earn tokens which could later be “cashed in” for things like extending a homework due date or skipping an assignment. This combination of changes worked well in allowing me to control and maintain course rigor, but also gave students some flexibility as they managed their homework and assessment schedule.

Flipping the classroom

Before flipping the classroom, the traditional course consisted of a lecture component, use of a personal response system providing in-lecture feedback (clickers), and a separate hands-on lab component. The clickers worked well for immediate feedback, but overall, the lecture format still seemed too static and replicated significant content that was already presented in the accompanying textbook. To increase the time that students would be actively engaged and working on problems, I flipped the class. Content instruction was moved from the traditional class meeting time to the course preparation, homework, non-instructional time. This essentially freed our class time for direct interaction and hands-on instruction. My students are now able work through programming assignments in teams, with each student actively participating in their own learning every class period. With the flipped classroom, “every day is lab day” became my general principle. Short lectures are still a necessity for some of the more challenging course content, but students are actively engaged on a daily basis. This additional time that I am able to spend working with students allows me to jump in when the individual groups run into problems or individual students are in need of more support.

Lab outside the lab

Lab time is typically limited and does not allow students to receive individualized feedback on their programming efforts on a timely basis. We utilized Pearson’s MyProgrammingLab to assign homework problems, finding the hints and feedback provided when students enter incorrect program code or answer questions wrong to be a valuable homework asset. I assigned these programming exercises in MyProgrammingLab with an emphasis on practice, not necessarily accuracy and grading. Students were given unlimited attempts at completion, but did have firm due dates for submission; generally, due dates overlapped with lecture time so students could ask questions about the assignments and I could lecture, if necessary, on the more challenging topics. Informal feedback indicates that students like this approach overall, with the occasional caveat of ‘too many problem assignments’.

Continuous active learning

For introductory programming courses, individual students can greatly benefit from continuous, significant, and personalized feedback along their learning path. To reinforce content and provide feedback, I put mechanisms in place that guide students on a successful road to subject mastery. Students are given several programming assignments as graded homework and quizzes in Blackboard, our employed Learning Management System, that supplement the online training and active learning class meetings. These additional assessments are staggered so that students initially work on content understanding using the online textbook and self-guided hands-on exercises. Class meetings and lecture where students work on related programming problems overlap with the Blackboard and MyProgrammingLab exercises and assessments to create a continuous flow of learning and practice. This approach helps students engage with the content throughout the semester.

How did REVEL help?

For my students, REVEL replaced the traditional textbook/homework approach; REVEL is an interactive learning environment where my students read, practice and study in one continuous experience. My students do programming and problem solving as they move through the chapter material, receiving immediate feedback and reinforcement, which is similar to the previously employed MyProgrammingLab. This helps to bridge the existing gaps between lecture, hands-on learning in the lab, and the practical programming exercises being completed at home. For me, the homework grading is handled by REVEL, freeing up my time for class preparation and other course activities.

I participated in an educator study that examined improvement in student engagement and achievement. Read the full report here.


About the Author
Patrick Seeling, Ph.D.

Patrick Seeling, Ph.D.

Patrick Seeling is a tenured Associate Professor in the Department of Computer Science at Central Michigan University (Mount Pleasant, Michigan, USA). He received his Dipl.-Ing. Degree in Industrial Engineering and Management from the Technical University of Berlin (Berlin, Germany) in 2002 and his Ph.D. in Electrical Engineering from Arizona State University (Tempe, Arizona, USA) in 2005. He was a Faculty Research Associate and Associated Faculty with the Department of Electrical Engineering at Arizona State University from 2005 to 2007. From 2008 to 2011, he was an Assistant Professor in the Department of Computing and New Media Technologies at the University of Wisconsin-Stevens Point (Stevens Point, Wisconsin, USA) and from 2011 to 2015 he was an Assistant Professor at CMU.

Patrick Seeling has published over 90 journal articles and conference papers, as well as books, book chapters, and tutorials. His research interests comprise user experiences in mixed realities, networking (with a focus on multimedia and energy optimizations), distributed and mobile systems, and computer-mediated education; applied research and prototypes are typically embodied in smart device and application implementations.  He is a Senior Member of the Association for Computing Machinery (ACM) and the Institute of Electrical and Electronics Engineers (IEEE).