Introduction to the Theory of Computation
Introduction to the Theory of Computation
NP-Completeness: A Retrospective
ICALP '97 Proceedings of the 24th International Colloquium on Automata, Languages and Programming
On teaching theoretical foundations of Computer Science
ACM SIGACT News
Algorithm Design
NP-completeness for all computer science undergraduates: a novel project-based curriculum
Journal of Computing Sciences in Colleges
Reductive thinking in undergraduate CS courses
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
Reductive thinking in a quantitative perspective: the case of the algorithm course
Proceedings of the 13th annual conference on Innovation and technology in computer science education
Proceedings of the fifteenth annual conference on Innovation and technology in computer science education
Using AVs to explain NP-completeness
Proceedings of the fifteenth annual conference on Innovation and technology in computer science education
On teaching the basics of complexity theory
Theoretical Computer Science
Five years with kattis -- Using an automated assessment system in teaching
FIE '11 Proceedings of the 2011 Frontiers in Education Conference
Work in progress -- Courses dedicated to the development of logical and algorithmic thinking
FIE '11 Proceedings of the 2011 Frontiers in Education Conference
Hi-index | 0.00 |
NP-completeness is one of the most central concepts in computer science, and has been extensively applied in many diverse application areas. Despite this, students have problems grasping the concept and, more specifically, applying it to new problems. Independently, we have identified these problems at our universities in different countries and cultures. In an action research approach we have modified our courses and studied the effects. We here present some promising results. Our approach is mainly based on the idea of making more evident the fact that proving a new NP-completeness result is not at all different from designing a new algorithm. Based on this idea, we used tools typically used to teach algorithms (such as automatic program assessment and algorithm visualization systems), accompanied by other activities mainly devoted to augmenting the motivation to study computational complexity and forcing students to think and adopt a standpoint.