Sie sind auf Seite 1von 21

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

 Investigate the major problems in learning OOP


 Explore students learning behaviour
 Identify the root causes of learning difficulties
 Adopt a best practice technique to aid their learning
 Improve teaching through motivating, engaging,
active thinking … supported with visual materials,
emphasising on pedagogic aspects
Diagnostic Test
 Questionnaire based at the beginning of the module
(42 respondents = 100%)
─ To collect general information, e.g. motivation of students in
learning the subject or taking the module
─ To determine students general knowledge of the basic but
essential underpinning subject concepts and programming ability
that this module is supposed to take as its starting point
─ To identify the most common stumbling blocks experienced
during their previous learning

 Used to decide the best way to organize & teach the


module
Problems & Behaviors
in learning
 Insufficient prior knowledge in the fundamental concepts & general
programming principles
 Poor understanding of basic code
 Lack of confidence in writing any programs; poor memory of syntax
 Rush to coding, without much thinking; never note errors/repeating!
 Sometimes lucky … but still no idea of what the program is doing
 Little effort in doing exercises as deemed worthless, since only
interested in or care about assessed pieces of work
 Many simply cannot program, as they don’t know where to start or
how to go about completing a given task
 Frustrated by so many errors messages which they can’t understand
 Poor self-management skill in organising their work
Problems in assessment
 Assessment (50% coursework : 50% examination)
– In most modules, a coursework component requires students to
implement only one or two assignments – provokes plagiarism
– Week-by-week programming exercises are given to enable timely
practical experiments with the specific concepts taught that week,
however the performance in doing so has no direct effect on the
module mark
– The grading scheme does not motivate, and perhaps discourages
good effort in attempting regular practical
programming activities

What was
Low pass rate (the university target≥ 70%): I/we doing
– 42.9% (2002 – 03) wrong?
– 44.7% (2003 – 04) 
Causes of common problems
 Poor programming skills and a complete inability to write program
after two or even three years’ study appeared to be a common problem!

• Is there something fundamentally wrong with the


teaching and learning system we use?

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

"... visualization technology, no matter how well it is designed,


is of little educational value unless it engages learners in an
active learning activity”
– Naps et al.
What is important in teaching?
 Make students to want to learn, & value the learning outcome
– Job info/salary, teachers’ enthusiasm vs. motivation, interests …
 What we teach
– programming principles and techniques
– a systematic programming process, explicitly by doing
– use a particular programming language as a tool
 How we teach (break big picture down based on complexity of concepts)
– Organisation of teaching material, start from the very basic
– Useful lectures use visual material, developed in a systematic way
– Tutorials and labs, supporting material, guide by the process
 What we assess - to encourage effective learning of how to program
– performance in regular programming activities
– adherence to the systematic programming process
– ability to write programs that work
Learning vs. assessment
 We must guide them on what to do to learn effectively
– starting from the basics and then steadily & progressively move on to
more complex concepts and techniques
– using a systematic programming process
– knowing what is happening by drawing diagrams
– getting into the habit of noting down errors & corrections right from
the beginning
 We must support their learning with explicit material
– A worksheet giving a few exercises is issued each week; students are
encouraged to undertake them within that week
– Logbook is introduced, in which students are required to record their
programming activities whilst attempting the exercises
– Logbook forms part (40%) of the coursework component assessment
to encourage participation week-by-week
Learning Aids towards a
systematic programming process
 Learning aids
– logbook
– well-specified logbook guidelines
– explicitly defined assessment criteria
 Follows a best practice technique introduced in “Personal Software
Process” & “A Discipline for Software Engineering” by the domain
expert, Watts Humphrey.
 Aims at helping students learn effectively from the process of
recording their programming activities in a systematic manner
 Provides a useful communication channel which allows timely
feedback between tutor and student
 Also improves personal organisational skills as everything is in one
place – the logbook – which perhaps can be seen and used as a
personalised reference book
Logbook content vs. marking criteria

  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

 Learning aids that support students with an explicit guidance on


what process to follow to learn effectively are necessary.
Acknowledgements

I would like to thank Lisa Payne, who


contributed valuable comments and many
helpful ideas to this project.
Reference
• Humphrey, W.S., (1997) Introduction to the Personal Software
Process, Addison-Wesley
• Humphrey, W.S., (1995) A Discipline for Software Engineering,
Addison-Wesley
• Naps, T. L.et al. (2003) Exploring the Role of Visualization and
Engagement in Computer Science Education. ACM SIGCSE
Bulletin 35(2), pp.131-152.
• Craig Larman, Applying UML and Patterns – an introduction to
Object-Oriented Analysis and Design and the Unified Process,
Prentice Hall (3/e)
• Cay Horstmann, Big Java, John Wiley & Sons (2/e);

Das könnte Ihnen auch gefallen