Visual Material & Learning Aids in Teaching Object Oriented Programming
Visual Material & Learning Aids in Teaching Object Oriented Programming
Visual Material & Learning Aids in Teaching Object Oriented Programming
Dr Hong Guo
Dept. of Computer and Network Systems
Faculty of Engineering and Computing
Coventry University
7th HEA-ICS, Dublin 2006
Outline
• Background
• Problems observed
• Causes of difficulties
• Subject characteristics
• Teaching approach
• Learning & assessment
• Learning aids
• Early results … recommendations
Teaching Background
Module Leader for Applied Programming (new in 2002, 15Cr)
a level 2 mandatory module for degree students on
– Computing (2+2) Vocational Programmes, or
– BIT (2+2) Vocational Programmes
follow-on from a level 1 introductory OOP module, prerequisites
– double-pass mandatory module (30 cr.), HND/2+2 Computing
– pass mandatory module (single, 15Cr.), BA BIT
– single-pass mandatory double module, BSc CS or SE
Module Leader for Object Oriented Programming in Java
a MSc module, none pre-request
Sharing teaching Introduction to Programming (02– 04, 15Cr.)
a level 1 mandatory module, HND/2+2 BIT
Project Background
A Small Grant Educational Research project
“Enhancing computer programming skills by
using the technique of Personal Software
Process in teaching – a practical study”
To address the increasing problems with UG students,
e.g. high failure rates, poor programming skills, …
To explore/adopt innovative ways of teaching and
assessing which engage students in effective learning
and acquisition of programming skills
Project Approach
Key questions:
• What is object oriented programming?
• What and how should we teach, in terms of OOP?
• What should we expect students to learn and how can they learn?
• What should be assessed and how can we measure success?
OOP Characteristics
Programming is a practical skill for problem solving,
created by humans, ultimately executed on a computer …
A creative subject, employ programming principles and techniques
Logical thinking, follow a systematic programming process
Imaginative, visualization in computer vs. program execution
Experience, effort in regular practice over a period of time
– Understanding IDE, knowing your errors, learning from mistakes
– Time consuming: coding, compiling and executing before feedback
– … enjoy and achieve! but only if
know what you are doing A systematic programming
process would ease the
learning process!
OO = additional concepts & better structure
What is important in learning?
• Real effort in doing regular practice that follows a systematic
programming process is the only way to learn programming
• Sufficient experience in observing how program works whilst
running in a PC is essential
• Good knowledge of personal mistakes and ability to fix errors are
crucial to effective learning
• The level of personal interest in the subject determines the level of
success in learning – good understanding of the basics is the key
Marks For a bare pass (40%) For a "First class" mark (70%)
Entry 10 Entry made for each of the Clearly specified date, objectives,
worksheets, date and objectives estimated & actual time taken,
specified proportion completed by end of the
week
Log of activities 50 Reasonable discussion of errors or Very good indication of analysis &
problems encountered, solutions design decisions (i.e., algorithm,
made, mentioning design formula, diagrams using UML);
decisions & testing conducted, good test plan with data, expected
with plan, data & outputs output and evident output of
(expected & actual) working programs
Reflective 30 Some conclusions drawn, note the Reflective discussion on what has been
evaluation number of and type of errors learnt, what to improve, e.g,
made discussion of alternative
approaches
Code listings 10 Completed some exercises, printed Completed most exercises, well tested
& output listing, some commenting, not and demonstrated, well laided-out,
evidence major deviations from "good commented, appropriate naming
style"
Benefits of the learning aids
Makes the programming steps and the output of each step explicit,
therefore easier to understand and to follow
Encourages careful and active thinking before coding
Allows students to be aware of their personal strengths & weaknesses
compared to the cohort via reflective evaluation
Easy to track student progress based on actual evidence
Empowers students in developing good programming practices by
using a transparent learning process
More effective learning of programming skills from the process of
documenting their own mistakes
Engages students in regular programming activities
Contributes in developing a good foundation for the disciplined
software development
Conclusion
Major difficulties in learning OOP
1) acquiring a firm understanding of the basic, but interrelated
concepts of classes, objects and the essence of “objects
communicate by sending messages”
2) the ability to visualize the effects of program execution, with
respect to changes in computer memory, and changes in the
objects’ state
3) adopting a disciplined and systematic process to the creation of
computer programs, towards an effective development of
problem-solving skills
4) the ability to understand and sort out error messages during
compilation, especially when working on slightly larger and
more complex programs, such as an assignment.
Conclusion
from Evaluation/Comments
Visual materials in lectures can play an effective role in making
the OO concepts understandable. Students can become more
motivated if lectures are easy to follow and comprehend.
Learning aids are useful in enhancing programming skills
A systematic programming process encourages good programming
practices and contributes in effective learning.
However there may have pitfalls, i.e. extra work for students in
maintaining the logbook (cutting/paste), and perhaps extra work for
staff - more marking
• Improved pass rate by 17% (2004 – 2005), but 12.4% this year
2002–03 2003-04 2004-05 2005-06
42.9% 44.7% 62.2% 57.1%
Recommendations
Problems & difficulties in teaching & learning OOP may reduce if
– teaching material is properly focused and organised, being consistent across
a wide range of computer science courses
– subject knowledge in lectures is delivered in line with the subject
complexity:
programming basic class/object control structures arrays basic
arrays of objects aggregation/collection
inheritance/interface/polymorphism ...
– a systematic programming process is employed/embedded in both teaching
and learning