The top 10 reasons why object-oriented programming can't be taught in CS 1
SIGCSE '94 Proceedings of the twenty-fifth SIGCSE symposium on Computer science education
SIGCSE '95 Proceedings of the twenty-sixth SIGCSE technical symposium on Computer science education
A software infrastructure to support introductory computer science courses
SIGCSE '96 Proceedings of the twenty-seventh SIGCSE technical symposium on Computer science education
Grading student programs using ASSYST
SIGCSE '97 Proceedings of the twenty-eighth SIGCSE technical symposium on Computer science education
A case study of the static analysis of the quality of novice student programs
SIGCSE '99 The proceedings of the thirtieth SIGCSE technical symposium on Computer science education
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Software quality: a curriculum postscript?
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Strategies for encouraging individual achievement in introductory computer science courses
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Software testing in the computer science curriculum -- a holistic approach
ACSE '00 Proceedings of the Australasian conference on Computing education
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
Teaching CS1 with karel the robot in Java
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
In support of student pair-programming
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
Integrating testing into the curriculum — arsenic in small doses
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
A paradigm shift to OOP has occurred…implementation to follow
CCSC '00 Proceedings of the fourteenth annual consortium on Small Colleges Southeastern conference
Grading student programs - a software testing approach
CCSC '00 Proceedings of the fourteenth annual consortium on Small Colleges Southeastern conference
Developing an automated program checkers
Proceedings of the seventh annual consortium for computing in small colleges central plains conference on The journal of computing in small colleges
Communications of the ACM
Guidelines for teaching object orientation with Java
Proceedings of the 6th annual conference on Innovation and technology in computer science education
Karel++: A Gentle Introduction to the Art of Object-Oriented Programming
Karel++: A Gentle Introduction to the Art of Object-Oriented Programming
DrJava: a lightweight pedagogic environment for Java
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
Teaching a Java-based CS1 course in an academically-diverse environment
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
A gimmick to integrate software testing throughout the curriculum
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
ITiCSE-WGR '99 Working group reports from ITiCSE on Innovation and technology in computer science education
Test Driven Development: By Example
Test Driven Development: By Example
Production programming in the classroom
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
Teaching objects-first in introductory computer science
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
Jeroo: a tool for introducing object-oriented programming
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
Improving the CS1 experience with pair programming
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
IEEE Software
Computer science in the Air Force Academy core curriculum
SIGCSE '82 Proceedings of the thirteenth SIGCSE technical symposium on Computer science education
An experiential approach to incorporating software testing into the computer science curriculum
FIE '01 Proceedings of the Frontiers in Education Conference, 2001. 31st Annual - Volume 02
Using software testing to move students from trial-and-error to reflection-in-action
Proceedings of the 35th SIGCSE technical symposium on Computer science education
Improving student performance by evaluating how well students test their own programs
Journal on Educational Resources in Computing (JERIC)
Practical ways to add software testing to programming assignments: tutorial presentation
Journal of Computing Sciences in Colleges
Test-driven development goes to school
Journal of Computing Sciences in Colleges
Testing first: emphasizing testing in early programming courses
ITiCSE '05 Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
IDE Support for test-driven development and automated grading in both Java and C++
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Green: a pedagogically customizable round-tripping UML class diagram Eclipse plug-in
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Test-driven learning: intrinsic integration of testing into the CS/SE curriculum
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Design of class hierarchies: an introduction to OO program design
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
The Marmoset project: an automated snapshot, submission, and testing system
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Helping students appreciate test-driven development (TDD)
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Experiences using test-driven development with an automated grader
Journal of Computing Sciences in Colleges
Bug Hunt: Making Early Software Testing Lessons Engaging and Affordable
ICSE '07 Proceedings of the 29th international conference on Software Engineering
A Leveled Examination of Test-Driven Development Acceptance
ICSE '07 Proceedings of the 29th international conference on Software Engineering
A TDD approach to introducing students to embedded programming
Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education
Misunderstandings about object-oriented design: experiences using code reviews
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Test-driven learning in early programming courses
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Supporting student-written tests of gui programs
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Test-driven development in education: experiences with critical viewpoints
Proceedings of the 13th annual conference on Innovation and technology in computer science education
Scaffolding for multiple assignment projects in CS1 and CS2
Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Proceedings of the 2008 annual research conference of the South African Institute of Computer Scientists and Information Technologists on IT research in developing countries: riding the wave of technology
Test-driven design for introductory OO programming
Proceedings of the 40th ACM technical symposium on Computer science education
Understanding TDD in academic environment: experiences from two experiments
Koli '08 Proceedings of the 8th International Conference on Computing Education Research
Unit test support for Java via reflection and annotations
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Information and Software Technology
Mutation analysis vs. code coverage in automated assessment of students' testing skills
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Using a web-based repository to integrate testing tools into programming courses
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
LIFT: taking GUI unit testing to new heights
Proceedings of the 42nd ACM technical symposium on Computer science education
Secret ninja testing with HALO software engineering
Proceedings of the 4th international workshop on Social software engineering
Teaching cross-platform design and testing methods for embedded systems using DICE
WESE '11 Proceedings of the 6th Workshop on Embedded Systems Education
Running students' software tests against each others' code: new life for an old "gimmick"
Proceedings of the 43rd ACM technical symposium on Computer Science Education
RoboLIFT: engaging CS2 students with testable, automatically evaluated android applications
Proceedings of the 43rd ACM technical symposium on Computer Science Education
Proceedings of the 12th Koli Calling International Conference on Computing Education Research
FLOP, a free laboratory of programming
Proceedings of the 12th Koli Calling International Conference on Computing Education Research
Hairball: lint-inspired static analysis of scratch projects
Proceeding of the 44th ACM technical symposium on Computer science education
Software verification and graph similarity for automated evaluation of students' assignments
Information and Software Technology
Toward practical mutation analysis for evaluating the quality of student-written software tests
Proceedings of the ninth annual international ACM conference on International computing education research
Adaptively identifying non-terminating code when testing student programs
Proceedings of the 45th ACM technical symposium on Computer science education
Hi-index | 0.00 |
Despite our best efforts and intentions as educators, student programmers continue to struggle in acquiring comprehension and analysis skills. Students believe that once a program runs on sample data, it is correct; most programming errors are reported by the compiler; when a program misbehaves, shuffling statements and tweaking expressions to see what happens is the best debugging approach. This paper presents a new vision for computer science education centered around the use of test-driven development in all programming assignments, from the beginning of CS1. A key element to the strategy is comprehensive, automated evaluation of student work, in terms of correctness, the thoroughness and validity of the student's tests, and an automatic coding style assessment performed using industrial-strength tools. By systematically applying the strategy across the curriculum as part of a student's regular programming activities, and by providing rapid, concrete, useful feedback that students find valuable, it is possible to induce a cultural shift in how students behave.