Iteratively Intervening with the “Most Difficult” Topics of an Algorithms and Complexity Course

When compared to earlier programming and data structure experiences that our students might have, the perspective changes on computers and programming when introducing theoretical computer science into the picture. Underlying computational models need to be addressed, and mathematical tools employed, to understand the quality criteria of theoretical computer science. Focus shifts from doing to proving. Over several years, we have tried to make this perspective transition smoother for the students of a third-year mandatory algorithms, data structures, and computational complexity course. The concepts receiving extra attention in this work are NP-completeness, one of the most central concepts in computer science, and dynamic programming, an algorithm construction method that is powerful but somewhat unintuitive for some students. The major difficulties that we attribute to NP-completeness are that the tasks look similar but have a different purpose than in algorithm construction exercises. Students do not immediately see the usefulness of the concept, and hence motivation could be one issue. One line of attacking NP-completeness has been to emphasize its algorithmic aspects using typical tools for teaching algorithms. Some potential difficulties associated with dynamic programming are that the method is based on a known difficult concept—recursion—and that there are many ingredients in a dynamic programming solution to a problem. For both dynamic programming and NP-completeness, we have invented several new activities and structured the teaching differently, forcing students to think and adopt a standpoint, and practice the concepts in programming assignments. Student surveys show that these activities are appreciated by the students, and our evaluations indicate that they have positive effects on learning. We believe that these activities could be useful in any similar course. The approach to improving the course is action research, and the evaluation has been done using course surveys, self-efficacy surveys, rubrics-like grading protocols, and grades. We have also interviewed teaching assistants about their experiences.

[1]  Viggo Kann,et al.  Computer lab work on theory , 2010, ITiCSE '10.

[2]  Sally Fincher,et al.  Computer Science Curricula 2013 , 2013 .

[3]  Possible Student Justification of Proofs , 2011 .

[4]  D. Chazan High school geometry students' justification for their views of empirical evidence and mathematical proof , 1993 .

[5]  A. Bandura Social Foundations of Thought and Action: A Social Cognitive Theory , 1985 .

[6]  Matthew Inglis,et al.  Self efficacy and mathematical proof: are undergraduate students good at assessing their own proof production ability? , 2010 .

[7]  Bruria Haberman,et al.  Pattern-oriented instruction and its influence on problem decomposition and solution construction , 2007, ITiCSE.

[8]  Hank Kahney,et al.  What do novice programmers know about recursion , 1983, CHI '83.

[9]  Michael Sipser,et al.  Introduction to the Theory of Computation , 1996, SIGA.

[10]  Ian Douglas Sanders,et al.  Mental models of recursion: investigating students' understanding of recursion , 2010, ITiCSE '10.

[11]  Justus J. Randolph Meta-Analysis of the Research on Response Cards , 2007 .

[12]  Bruria Haberman,et al.  The case of base cases: why are they so difficult to recognize? student difficulties with recursion , 2002, ITiCSE '02.

[13]  F. Marton,et al.  Learning and Awareness , 1997 .

[14]  E. Knuth,et al.  Undergraduate mathematics majors’ writing performance producing proofs and counterexamples about continuous functions , 2009 .

[15]  B. Bloom,et al.  Taxonomy of Educational Objectives. Handbook I: Cognitive Domain , 1966 .

[16]  Andrea F. Lobo,et al.  NP-completeness for all computer science undergraduates: a novel project-based curriculum , 2006 .

[17]  Orna Muller Pattern oriented instruction and the enhancement of analogical reasoning , 2005, ICER '05.

[18]  N. Balacheff Aspects of proof in pupils ' practice of school mathematics , 2003 .

[19]  B. Haberman,et al.  Teaching abstraction to novices: Pattern-based and ADT-based problem-solving processes , 2008, 2008 38th Annual Frontiers in Education Conference.

[20]  Susan Wiedenbeck,et al.  Development and Validation of Scores on a Computer Programming Self-Efficacy Scale and Group Analyses of Novice Programmer Self-Efficacy , 1998 .

[21]  Judith Gal-Ezer,et al.  Reductive thinking in undergraduate CS courses , 2005, ITiCSE '05.

[22]  EFRAIM FISCHBEIN Intuition and Proof * , .

[23]  Benjamin S. Bloom,et al.  Taxonomy of Educational Objectives: The Classification of Educational Goals. , 1957 .

[24]  Pierluigi Crescenzi Using AVs to explain NP-completeness , 2010, ITiCSE '10.

[25]  P. Kirschner,et al.  Do Learners Really Know Best? Urban Legends in Education , 2013 .

[26]  Éva Tardos,et al.  Algorithm design , 2005 .

[27]  Gary Ford,et al.  A framework for teaching recursion , 1982, SGCS.

[28]  Douglas K. Duncan,et al.  Clickers: A New Teaching Aid with Exceptional Promise , 2006 .

[29]  Pierluigi Crescenzi,et al.  From theory to practice: NP-completeness for every CS student , 2013, ITiCSE '13.

[30]  Petek Askar,et al.  AN INVESTIGATION OF FACTORS RELATED TO SELF-EFFICACY FOR JAVA PROGRAMMING AMONG ENGINEERING STUDENTS , 2009 .

[31]  Dino Mandrioli,et al.  On teaching theoretical foundations of Computer Science , 1982, SIGA.

[32]  Emma Enstr Dynamic programming - structure, difficulties and teaching , 2013 .

[33]  Keith Jones The student experience of mathematical proof at university level , 2000 .

[34]  Bruria Haberman,et al.  Supporting abstraction processes in problem solving through pattern-oriented instruction , 2008, Comput. Sci. Educ..

[35]  David Ginat,et al.  Teaching recursion in a procedural environment—how much should we emphasize the computing model? , 1999, SIGCSE '99.

[36]  Christian Pape Using Interactive Visualization for Teaching the Theory of Np-completeness , 1997 .

[37]  Jennifer Stephan,et al.  TEACHING RECURSION BEFORE LOOPS IN CS1 , 1999 .

[38]  Oded Goldreich On Teaching the Basics of Complexity Theory , 2006, Essays in Memory of Shimon Even.

[39]  Markus A. Brändle GraphBench: Exploring the Limits of Complexity with Educational Software: Exploring the limits of complexity with educational software , 2006 .

[40]  R. Zerr,et al.  Learning from Their Mistakes: Using Students' Incorrect Proofs as a Pedagogical Tool , 2011 .

[41]  Michal Armoni Reductive thinking in a quantitative perspective: the case of the algorithm course , 2008, SIGCSE 2008.

[42]  Orna Muller,et al.  Work in progress — Courses dedicated to the development of logical and algorithmic thinking , 2011, 2011 Frontiers in Education Conference (FIE).

[43]  Jane E Caldwell,et al.  Clickers in the large classroom: current research and best-practice tips. , 2007, CBE life sciences education.

[44]  Frank M. Pajares,et al.  Role of self-efficacy and self-concept beliefs in mathematical problem solving: A path analysis. , 1994 .

[45]  A. Bandura GUIDE FOR CONSTRUCTING SELF-EFFICACY SCALES , 2006 .

[46]  Viggo Kann,et al.  Five years with kattis — Using an automated assessment system in teaching , 2011, 2011 Frontiers in Education Conference (FIE).

[47]  Christos H. Papadimitriou,et al.  NP-Completeness: A Retrospective , 1997, ICALP.

[48]  Cynthia Bailey Lee,et al.  Can peer instruction be effective in upper-division computer science courses? , 2013, TOCE.

[49]  Andreas J. Stylianides,et al.  Can a proof and a counterexample coexist? Students' conceptions about the relationship between proof and refutation , 2010 .

[50]  Gregory Light,et al.  Learning and Teaching in Higher Education: The Reflective Professional , 2009 .