Genetic programming: on the programming of computers by means of natural selection
Genetic programming: on the programming of computers by means of natural selection
Peer learning in an introductory computer science course
SIGCSE '94 Proceedings of the twenty-fifth SIGCSE symposium on Computer science education
Symbiotic Coevolution of Artificial Neural Networks and Training Data Sets
PPSN V Proceedings of the 5th International Conference on Parallel Problem Solving from Nature
Experimenting with pair programming in the classroom
Proceedings of the 8th annual conference on Innovation and technology in computer science education
Enhancing apprentice-based learning of Java
Proceedings of the 35th SIGCSE technical symposium on Computer science education
Students' alternative standards for correctness
Proceedings of the first international workshop on Computing education research
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Reducing lecture and increasing student activity in large computer science courses
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
Toward a more effective visualization tool to teach novice programmers
Proceedings of the 7th conference on Information technology education
Introduction to Java Programming: Fundamentals First (6th Edition) (Fundamentals First)
Introduction to Java Programming: Fundamentals First (6th Edition) (Fundamentals First)
Supporting active learning and example based instruction with classroom technology
Proceedings of the 38th SIGCSE technical symposium on Computer science education
Commonsense computing: using student sorting abilities to improve instruction
Proceedings of the 38th SIGCSE technical symposium on Computer science education
Agile Java(TM): Crafting Code with Test-Driven Development (Robert C. Martin Series)
Agile Java(TM): Crafting Code with Test-Driven Development (Robert C. Martin Series)
Redundancy and syntax-late approaches in introductory programming courses
Journal of Computing Sciences in Colleges
Evaluation of a computer networking class in information technology
SIGITE '08 Proceedings of the 9th ACM SIGITE conference on Information technology education
Self direction & constructivism in programming education
SIGITE '08 Proceedings of the 9th ACM SIGITE conference on Information technology education
JHAVEPOP: visualizing linked-list operations in C++ and Java
Journal of Computing Sciences in Colleges
Teaching the novice programmer: A study of instructional sequences and perception
Education and Information Technologies
An experience report on improving constructive alignment in an introduction to programming
Journal of Computing Sciences in Colleges
The effectiveness of live-coding to teach introductory programming
Proceeding of the 44th ACM technical symposium on Computer science education
Proceedings of the 14th annual ACM SIGITE conference on Information technology education
Hi-index | 0.00 |
This descriptive study discusses two conceptual difficulties encountered by students in introductory programming courses regardless of the chosen language or pedagogical approach (e.g. objects, classes or fundamentals first). Firstly, students tend to learn programming by memorizing correct code examples instead of acquiring the programming thought process. Secondly, they tend to read code by "flying" over it at a comfortable altitude while thinking to its assumed intent. While relaxing, this practice fails to train students to develop the rigor to catch bugs in others' or their own code. Both trends result in an almost complete loss of intentionality in the programming activity; un-innovative code is generated by analogy with (or cut and paste from) existing solutions and is then almost randomly modified until "it fits" the minimal tests requirements without real analysis of its flaws. We review and evaluate pedagogical strategies which can be leveraged by instructors to address the above mentioned issues. Namely, we discuss the benefits of various forms of "Live coding" and test-driven pair programming active learning practices.