Manchester University logo

Main links

Java: Just in Time
Under development...
Pedagogy
Book contents
Coursework
Supporting material
Supporting tools
Additional chapters
Publisher
Buy it on Amazon
Errata and revisions
Book production
JTL's home page

Section links

Objects first or later?
Inheritance when?
Arrays before or after objects
Class introduction: fanfare versus stealth
Motivation for objects
Example versus Topic oriented
Full programs, or fragments?
Just in Time concept coverage
Making first objects: open or closed box
Class design
UML
Method design
Testing
Use of special classes
Environment tools
Nature of coursework
Back to top        
Java Just in Time: a first course in programming:         Pedagogical design principles

UNIVERSITY OF MANCHESTER

School of Computer Science

Java Just in Time: a first course in programming

Pedagogical design principles

Back in early 2004, a small group of experienced lecturers here at Manchester sat down to indentify the pedagogical principles behind the `ideal' first programming in Java course. For the previous three years, we had run an objects-first Java course, and we were not happy with the experience!

Having identified the principles, we then invited publishing rep.s to find a book that matched. They could not, and so Java Just in Time was born.

Here are some of the pedagogical principles we identified. For each area, we present various views or choices and mark whether we believe them to be `right' or `wrong'.

Section links

Objects first or later? Should objects be introduced on day one, or at the end, or `soon'?
Inheritance when? Should inheritance be introduced at the same as time as objects, or later?
Arrays before or after objects Should arrays be covered before, objects, or after?
Class introduction: fanfare versus stealth As we are not doing objects first, when they are covered properly how should the reader find them?
Motivation for objects How should objects be motivated?
Example versus Topic oriented The relationship between programming concepts and program examples.
Full programs, or fragments? Should examples and coursework be full stand alone examples, or just, say, methods within a given framework?
Just in Time concept coverage There is no easy way into Java as it is conceptually circular. How are early concepts introduced?
Making first objects: open or closed box Should students see instances being made before classes, or classes than instances at the same time?
Class design How much emphasis on class design should there be?
UML How, if at all, should UML be used?
Method design How much emphasis on method (algorithm) design should there be?
Testing How should program testing be covered?
Use of special classes Should special support classes be used to help hide language/API details early on?
Environment tools What IDE should be used, if any?
Nature of coursework Large exercises or small ones?

Objects first or later?

Should objects be introduced on day one, or at the end, or `soon'?

Arguments / choices: tick means we agreed, cross means we did not!

Anecodote: we tried an objects first course here at Manchester for three years. The students fell into three categories, as follows.

Conclusion: basics first, objects soon.

Back to top

Inheritance when?

Should inheritance be introduced at the same as time as objects, or later?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: basics first, objects soon, inheritance later.

Back to top

Arrays before or after objects

Should arrays be covered before, objects, or after?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Objects before arrays.

Back to top

Class introduction: fanfare versus stealth

As we are not doing objects first, when they are covered properly how should the reader find them?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Stealth, although it is necessary to warn students who have previously programmed that they may be meeting new ideas at that point.

Back to top

Motivation for objects

How should objects be motivated?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Objects are presented as a device to simplify a program previously seen. This is done in stages, the first introducing the minimum Java technology to use objcts at all, the later one adding on more technology. Once complete, the whole program design is revisited in the context of objects, i.e. OO design.

Back to top

Example versus Topic oriented

The relationship between programming concepts and program examples.

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Half way: one (or two) main topic(s) per chapter, one example per section.

Back to top

Full programs, or fragments?

Should examples and coursework be full stand alone examples, or just, say, methods within a given framework?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Within reason, all examples should be full programs.

Back to top

Just in Time concept coverage

There is no easy way into Java as it is conceptually circular. How are early concepts introduced?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Just in Time.

Back to top

Making first objects: open or closed box

Should students see instances being made before classes, or classes than instances at the same time?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Classes and instances are introduced together, i.e. there should be absolutely no occurences of the word new before that point.

Back to top

Class design

How much emphasis on class design should there be?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Low priority -- emphasis on OO-programming, upon which more complex OO-design can later be built.

Back to top

UML

How, if at all, should UML be used?

Arguments / choices: tick means we agreed, cross means we did not!

Anecodote: we tried an objects first course here at Manchester for three years, using a book which used UML throughout. The students fell into two categories:

Conclusion: Only as helpful -- in practise this means nowhere except inheritance heirarchies.

Back to top

Method design

How much emphasis on method (algorithm) design should there be?

Many Java books often put plenty of emphasis on class design, but somehow expect the reader to be already a natural algorithm designer!

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Explicit.

Back to top

Testing

How should program testing be covered?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: Stealth. (???? Testing theory discussion is on this web site, rather than in the book. ?????)

Back to top

Use of special classes

Should special support classes be used to help hide language/API details early on?

Many books use some specially written Java classes to aid students early on.

Arguments / choices: tick means we agreed, cross means we did not!

Anecodote: we tried an objects first course here at Manchester for three years, using a book that had an API of special classes to support it. They were simple to use, although they didn't always work, and were not very flexible. We had terrible trouble weaning the students off them onto the standard API classes. Many students insisted on using these toy classes for their third year project -- they simply could not let go of these `swimming floats', and so never really gained the confidence to swim in deep waters.

Conclusion: No special classes..

Back to top

Environment tools

What IDE should be used, if any?

Arguments / choices: tick means we agreed, cross means we did not!

Conclusion: A clean, uncluttered command line! Linux is ideal, and that is what we use!

Windows command prompt is a little messy, but still usable. Can anyone suggest an IDE that only has the three features listed above? E.g. a text editor that has plug-in compile and run programs?

Can anyone suggest how Eclipse can be used in `minimalist' mode?

Back to top

Nature of coursework

Large exercises or small ones?

Arguments / choices: tick means we agreed, cross means we did not!

>>>>>>Please note this page is under development.<<<<<<<

Conclusion:

Back to top