The Role of Domain Expenence in Software Design
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Learning to program = learning to construct mechanisms and explanations
Communications of the ACM
Mental models: towards a cognitive science of language, inference, and consciousness
Mental models: towards a cognitive science of language, inference, and consciousness
Learning iteration recursion from examples
International Journal of Man-Machine Studies
A debate on teaching computing science
Communications of the ACM
Parameter passing: the rules the students construct
SIGCSE '91 Proceedings of the twenty-second SIGCSE technical symposium on Computer science education
An empirically-derived control structure for the process of program understanding
International Journal of Man-Machine Studies - What programmers know
Mental models and the acquisition of expert knowledge
The psychology of expertise
Mental models and computer programming
International Journal of Human-Computer Studies
Avoiding object misconceptions
SIGCSE '97 Proceedings of the twenty-eighth SIGCSE technical symposium on Computer science education
Novice comprehension of small programs written in the procedural and object-oriented styles
International Journal of Human-Computer Studies - Best of empirical studies of programmers 7
Programming in Java: student-constructed rules
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
EROSI—visualising recursion and discovering new errors
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
The Psychology of How Novices Learn Computer Programming
ACM Computing Surveys (CSUR)
A diagnosis of beginning programmers' misconceptions of BASIC programming statements
Communications of the ACM
Cognitive strategies and looping constructs: an empirical study
Communications of the ACM
Optimising student cognitive load in computer education
ACSE '00 Proceedings of the Australasian conference on Computing education
Studying the language and structure in non-programmers' solutions to programming problems
International Journal of Human-Computer Studies
Constructivism in computer science education
Journal of Computers in Mathematics and Science Teaching
Role playing in an object-oriented world
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
Artificial Intelligence Review
Difficulties in Learning and Teaching Programming—Views of Students and Tutors
Education and Information Technologies
Identifying and correcting Java programming errors for introductory computer science students
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
Mental Models of Recursion and Their Use in the SCENT Programming Advisor
KBCS '89 Proceedings of the International Conference on Knowledge Based Computer Systems
Exploring the role of visualization and engagement in computer science education
Working group reports from ITiCSE on Innovation and technology in computer science education
What do novice programmers know about recursion
CHI '83 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
When mental models go wrong: co-occurrences in dynamic, critical systems
International Journal of Human-Computer Studies
Controversy on how to teach CS 1: a discussion on the SIGCSE-members mailing list
Working group reports from ITiCSE on Innovation and technology in computer science education
A multi-national study of reading and tracing skills in novice programmers
Working group reports from ITiCSE on Innovation and technology in computer science education
On understanding the statics and dynamics of object-oriented programs
Proceedings of the 36th SIGCSE technical symposium on Computer science education
A study of the difficulties of novice programmers
ITiCSE '05 Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education
Novice Java programmers' conceptions of "object" and "class", and variation theory
ITiCSE '05 Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science education
Special Feature: Epigrams on programming
ACM SIGPLAN Notices
What does it take to learn 'programming thinking'?
Proceedings of the first international workshop on Computing education research
What do teachers teach in introductory programming?
Proceedings of the second international workshop on Computing education research
ITiCSE-WGR '06 Working group reports on ITiCSE on Innovation and technology in computer science education
Research perspectives on the objects-early debate
ITiCSE-WGR '06 Working group reports on ITiCSE on Innovation and technology in computer science education
Conceptual models of software artifacts
Interacting with Computers
Factors in novice programmers' poor tracing skills
Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education
Mental models: a theoretical overview and preliminary study
Journal of Information Science
Program working storage: a beginner's model
Proceedings of the 6th Baltic Sea conference on Computing education research: Koli Calling 2006
Journal on Educational Resources in Computing (JERIC)
A principled approach to teaching OO first
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Using BlueJ to Introduce Programming
Reflections on the Teaching of Programming
Learning flow of control: recursive and iterative procedures
Human-Computer Interaction
Preprogramming knowledge: a major source of misconceptions in novice programmers
Human-Computer Interaction
The same but different students' understandings of primitive and object variables
Koli '08 Proceedings of the 8th International Conference on Computing Education Research
Natural language programming: styles, strategies, and contrasts
IBM Systems Journal
Identifying student misconceptions of programming
Proceedings of the 41st ACM technical symposium on Computer science education
Introductory programming and the didactic triangle
Proceedings of the Twelfth Australasian Conference on Computing Education - Volume 103
Reflections on threshold concepts in computer programming and beyond
Proceedings of the 10th Koli Calling International Conference on Computing Education Research
The impact of different teaching approaches and languages on student learning of introductory programming concepts
Assignment and sequence: why some students can't recognise a simple swap
Proceedings of the 11th Koli Calling International Conference on Computing Education Research
Assessing fundamental introductory computing concept knowledge in a language independent manner
Assessing fundamental introductory computing concept knowledge in a language independent manner
'Explain in plain English' questions: implications for teaching
Proceedings of the 43rd ACM technical symposium on Computer Science Education
Fuzzy OOP: expanded and reduced term interpretations
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education
Students' understandings of storing objects
Koli Calling '07 Proceedings of the Seventh Baltic Sea Conference on Computing Education Research - Volume 88
Debating the OO debate: where is the problem?
Koli Calling '07 Proceedings of the Seventh Baltic Sea Conference on Computing Education Research - Volume 88
ACE '11 Proceedings of the Thirteenth Australasian Computing Education Conference - Volume 114
Swapping as the "Hello World" of relational reasoning: replications, reflections and extensions
ACE '12 Proceedings of the Fourteenth Australasian Computing Education Conference - Volume 123
Illustration of paradigm pluralism in computing education research
ACE '12 Proceedings of the Fourteenth Australasian Computing Education Conference - Volume 123
A Review of Generic Program Visualization Systems for Introductory Programming Education
ACM Transactions on Computing Education (TOCE)
A Review of Generic Program Visualization Systems for Introductory Programming Education
ACM Transactions on Computing Education (TOCE)
Hi-index | 0.00 |
This article brings together, summarizes, and comments on several threads of research that have contributed to our understanding of the challenges that novice programmers face when learning about the runtime dynamics of programs and the role of the computer in program execution. More specifically, the review covers the literature on programming misconceptions, the cognitive theory of mental models, constructivist theory of knowledge and learning, phenomenographic research on experiencing programming, and the theory of threshold concepts. These bodies of work are examined in relation to the concept of a “notional machine”—an abstract computer for executing programs of a particular kind. As a whole, the literature points to notional machines as a major challenge in introductory programming education. It is argued that instructors should acknowledge the notional machine as an explicit learning objective and address it in teaching. Teaching within some programming paradigms, such as object-oriented programming, may benefit from using multiple notional machines at different levels of abstraction. Pointers to some promising pedagogical techniques are provided.