Instructional Design of a Programming Course
U N I V E R S I T Y O F A A R H U S Department of Computer Science
Michael E. Caspersen Jens Bennedsen A Learning Theoretic Approach
ICER ’07, Atlanta, 15-16 September 2007
Instructional Design of a Programming Course A Learning Theoretic - - PowerPoint PPT Presentation
Instructional Design of a Programming Course A Learning Theoretic Approach Michael E. Caspersen Jens Bennedsen ICER 07, Atlanta, 15-16 September 2007 U N I V E R S I T Y O F A A R H U S Department of Computer Science Calibration of
U N I V E R S I T Y O F A A R H U S Department of Computer Science
Michael E. Caspersen Jens Bennedsen A Learning Theoretic Approach
ICER ’07, Atlanta, 15-16 September 2007
2
Does the paper have a clear theoretical basis? 5: Very clear and strong, well-documented with citations What it is This work presents our attempt at improving (the instructional design of) an introductory programming course by incorporating selected results of cognitive science and learning theory. Consider it a first step... Does the paper have a strong empirical basis? 1: No data collected
3
Research Questions What is the foundation in learning theory that supports (or contradicts) the theses above? Theses Revealing the programming process to novices eases and promotes the learning of programming. Teaching skill as a supplement to knowledge promotes the learning of programming.
4
Background Motivation, model-based programming, course context Learning-Theoretic Foundation Cognitive (architecture, load theory, and apprenticeship) Pattern-Based Instruction Direct injection of cognitive schemas Instructional Design Macro and micro perspective Conclusion Future work, evaluation, how? Discussion...
5
Background Motivation, model-based programming, course context Learning-Theoretic Foundation Cognitive (architecture, load theory, and apprenticeship) Pattern-Based Instruction Direct injection of cognitive schemas Instructional Design Macro and micro perspective Conclusion Future work, evaluation, how? Discussion...
6
Grand Challenges in Computing (GCC ’04) Education and Research Newcastle upon Tyne 29-31 March 2004
Promote an improved and ultimately very positive public image of computing, ensuring that public gains respect for the field and the professionals who practice within it.
Provide simpler models of computing as a discipline and have this reflected in a better mix of high quality computing courses that genuinely accommodates a broad spectrum of student ability and interest
Ensure that the quality of computing skills and competence are recognized as important by graduates throughout their career, and put in place an infrastructure to provide support and guidance on a career-long basis.
Ensure that students of computing see relevant mathematics and formalism in a very positive light, as providing support, guidance and illumination.
Establish e-learning as a credible, viable complement to face-to-face education.
Rationalize the situation at the pre-university level and direct it towards the promotion of computing to would-be students of computing. Create for students a smooth transition from school to university by enthusing and informing potential students and by creating a positive influence affecting pre-university computing.
Understand the programming process and programmer practice to deliver effective educational transfer
7
“The particular concern is that, after more than forty years of teaching an essential aspect of
professionals, we cannot do so reliably.” “Indeed, there are perceptions that the situation has become worse with time.”
1. Incorporate the results of psychological studies into our curricula and textbooks. 2. Establish student aptitude for programming. 3. Understand the programming process and programmer practice to deliver effective educational transfer of knowledge and skills. 4. Encourage students to practice programming. 5. Establish assessment methods that assess individual programming competency effectively.
8
41% 2,653 17 Non US 33% 5,513 54 Total
Students Universities Average failure rate for introductory programming courses Many European universities reported failure rates of more than 50%. The maximum failure rate reported was 95% Internal report of community colleges in a coalition to improve their retention rates in computing: One school reported an avg. failure rate over a ten year period of 90%!
9
Over the past 25 years, study after study, even multi- institutional and multi-national studies, have provided empirical evidence that students cannot program and that the major problems they experience are composition- based how to put the pieces together. It is not syntax! We have a long-standing problem of international scale, which we are aware of, and yet we persist to teach programming primarily by explaining language constructs and show-casing finished programs even though it is procedural knowledge and strategies for putting the pieces together, that is needed! From language issues to programming skills
10
11
Aims: The participants will after the course have insight into principles and techniques for systematic construction of simple programs and practical experience with implementation of specification models using a standard programming language and selected standard classes. Goals: Upon completion the participants must be able to apply fundamental constructs of a common PL identify and explain the architecture of a simple program identify and explain the semantics of simple specification models implement simple specification models in a common PL apply standard classes for implementation tasks. Evaluation: Each student is evaluated through a practical examination where the student solves a simple programming task.
12
Conceptual Model Problem/vision Specification Model Implementation Model Analysis Implementation Design
Reference System Model System The process involves identification of concepts and phenomena in the referent system and representation of these in the model system. The process consists of three subproceses: Abstraction in the model system (implementation) Abstraction in the referent system (analysis) Modeling (design) No Particular ordering is imposed on the subprocesses.
13
Model-Based Programming tasks starts from a specification model. The specification model is expressed as a class model with functional specifications of all methods. Progression Models become increasingly complex during the course. Associated systematic programming techniques (at three levels). Language issues are covered “by need”. Programming Techniques Inter-class structure: Standard coding patterns for the implementation of relations between classes Intra-class structure: Class invariants and techniques for evaluating these Method structure: Algorithmic patterns and loop invariants.
14
Conceptual model Problem/vision Specification model Implementation model Analysis Implementation Design
Problem domain Model
15
A Stand-alone class Shape, Crayon, Person, Die, Date, Heater, Account, ... A Simple association and composition B A B
2 2
DieCup, ClockDisplay, ... A Recursive Association
0..1
A
*
Person (lover and fiancee), Person (friends) Animal (parents, brood), ... A Association (to another class) B A B
* 0..1
Car-Person (isOwnedBy), Track-Playlist (contains) Implementing an interface A B
*
I Comparable and Comparator Use of Collections.sort(), etc.
16
Background Motivation, model-based programming, course context Learning-Theoretic Foundation Cognitive (architecture, load theory, and apprenticeship) Pattern-Based Instruction Direct injection of cognitive schemas Instructional Design Macro and micro perspective Conclusion Future work, evaluation, how? Discussion...
17
Long-term memory: Schemas Working memory: Integration encoding decoding recoding/chunking (unconscious) decision (conscious) Senses Muscles Environment
New information is processed in WM to form knowledge structures called schemas stored in LTM. Learning Memory structures that permit us to treat a large amount of information elements as one. Schemas
18
Cognitive load: the load on working memory during problem solving, thinking, reasoning, ... Cognitive load theory: a universal set of learning principles that are proven to result in efficient instructional environments as a consequence of leveraging human cognitive learning processes The fundamental axiom of CLT: that learning outcome is
working memory with elements that allow for optimal schema acquisition
19
– cognitive load intrinsic to the problem that cannot be reduced without reducing understanding
– a non-intrinsic cognitive load caused by instructional procedures that interfere with rather than contribute to learning
– a non-intrinsic cognitive load that contributes to, rather than interfere with, learning by supporting schema acquisition
Learning
Cognitive load
Optimize learning: minimize E maximize G
20
Worked examples effect Alternation of worked examples and problems increase learning
Variability effect Worked examples with high variability increase cognitive load and learning provided that intrinsic cognitive load is sufficiently low. Guidance-fading effect Complete examples followed by partially completed examples followed by full problems is superior to any of the three used in isolation.
21
The theory of cognitive apprenticeship holds that masters of a skill often fail to take into account the implicit processes involved in carrying out complex skills when teaching novices. Modeling Scaffolding Fading Coaching Give models of expert performance. Support given by the master to carry out a a task. The master gradually pulls back leaving the responsibility for performing the task more and more to the apprentice The entire process of apprenticeshipoverseeing the process of learning.
22
Background Motivation, model-based programming, course context Learning-Theoretic Foundation Cognitive (architecture, load theory, and apprenticeship) Pattern-Based Instruction Direct injection of cognitive schemas Instructional Design Macro and micro perspective Conclusion Future work, evaluation, how? Discussion...
23
Motivation Patterns capture chunks of programming knowledge and skills. Reinforces schema creation when cognitive load is “controlled” (+germane cognitive load). (Cognitive science and educational psychology) Origin Ideas similar to pattern-based instruction can be traced back to Mayer (1981), Soloway (1986), Rist (1989), Linn & Clancy (1992). East et al. (1996) and Wallingford (1996) were among the first to accept the challenge put forward by Soloway. Soon, others followed, e.g. Astrachan et al. (1997, 1998), Reed (1998), Bergin (2000).
24
Inter-class structure Standard coding patterns for the implementation of relations between classes. Intra-class structure Class invariants and techniques for evaluating these. Method structure Algorithmic patterns, elementary patterns and loop invariants. Association pattern Aggregation pattern Specialization pattern Sweep pattern Search pattern Divide, solve, and combine ...
25
B A
*
class A { ... // A-fields public A() { ... } ... // A-methods } class B { ... } import java.util.*; bs = new ArrayList(); private List bs; public void add(B b) { bs.add(b); } public void remove(B b) { bs.remove(b); }
26
class B {} class A { ... private List<B> bs; public B findOneX() { B res= bs.get(0); for ( B b : bs ) { if ( “b is a better X than res” ) { res= b; } } return res; } }
27
Inductive Patterns are “discovered” by the students after N examples. Deductive Patterns are presented up-front and students are asked to apply them to N examples.
28
Background Motivation, model-based programming, course context Learning-Theoretic Foundation Cognitive (architecture, load theory, and apprenticeship) Pattern-Based Instruction Direct injection of cognitive schemas Instructional Design Macro and micro perspective Conclusion Future work, evaluation, how? Discussion...
29
Practice consume before produce Present worked, exemplary examples Reinforce patterns and conceptual frameworks ...
5 4 3 Create 4 3 2 Extend 1 1 1 Use Model Class Method
Allows more interesting things to be done. Helps separate spec and impl. Applies at many levels (code specification, class libraries, design patterns, frameworks, ...)
30
(1) Getting started: Overview of fundamental concepts. Learning the IDE and other tools. (2) Learning the basics: Class, object, state, behaviour, control structures. (3) Conceptual framework and coding recipes: Control structures, data structures (collections), class relationship, recipes for implementing structure (class relations). (4) Programming method: The mañana principle, schemas for implementing functionality. (5) Subject specific assignment: Practice
(6) Practice: Achieve routine in solving standard tasks. Method extend Method create Class extend Method use Class create Class create Class create
Reduce extraneous CL Increase germane CL (patterns) Cognitive apprenticeship (to reveal process) Worked examples and faded guidance Cognitive skill acquisition and automation
31
modify, and extend both examples.
program with two classes, Playlist and Track.
P T *
example (say Account and Transaction) is made available.
A T *
extend the Playlist-Track example by adding an Image class.
P T * I *
where the students implement a system of three classes, say Notebook, Note, and Keyword.
Nb N * K * W
k e d e x a m p l e s w i t h h i g h v a r i a b i l i t y i n c r e a s e c
n i t i v e l
d a n d l e a r n i n g p r
i d e d t h a t i n t r i n s i c c
n i t i v e l
d i s s u f f i c i e n t l y l
. V a r i a b i l i t y e f f e c t
32
Background Motivation, model-based programming, course context Learning-Theoretic Foundation Cognitive (architecture, load theory, and apprenticeship) Pattern-Based Instruction Direct injection of cognitive schemas Instructional Design Macro and micro perspective Conclusion Future work, evaluation, how? Discussion...
33
Instructional Design of a Programming Course Based upon results of cognitive science and educational psychology. Model- and pattern-based approach. Progression defined by complexity of specification models. Focus on skill development rather than just knowledge. Objects-First Debate Heated debate (SIGCSE mailing list, symposium, ...) Formal Evaluation of our Approach Be my guest! ;-)
U N I V E R S I T Y O F A A R H U S Department of Computer Science
Jens Bennedsen Michael E. Caspersen A Learning Theoretic Approach
ICER ’07, Atlanta, 15-16 September 2007
35
Playlist
String playlistName void addTrack(Track t) void removeTrack(Track t) Track findShortestTrack() void printTracks()
Track
String artist String songName int min int sec String toString()
Driver
void exam() 1. Create a simple class Track ... with constructor and a toString method… 2. Create a test method… 3. Create two instancies… 4. Create a new class Playlist ... 5. Implement the methods addTrack and removeTrack 6. Modify the test method to create a Playlist object… 7. Implement the method findShortestTrack 8. Modify the test method to use the findShortestTrack method to… 9. Let the Track class implement the Comparable interface…
printTracks and modify ...