«^»
3. The order in which to teach things

During the last 25 years, I've been involved on a number of occasions with switching the first programming language.

University of Hull      Algol 60    Pascal
University of Durham    Pascal      Modula-2
University of Durham    Modula-2    Java
Every time you find yourself with a lot of new ideas to teach. And I find it exciting to sit down and think about what order to teach the various ideas.

Using Pascal/Modula-2, the topics that I have taught included:

terminal I/O
expressions
if statement
for statement
case statement
while statement
arrays
procedures and functions
recursion
records
pointers
linked lists
stacks 
queues
trees

When moving to Java, procedures and functions are called methods, and pointers, linked lists, stacks, queues and trees are replaced by other things.

Here is a list of some of the new ideas of Java:

creating an object
using an instance method
using a class method
using the wrapper types (Integer, Double, etc)
declaring a class type
declaring a method declaration
declaring an interface
implementing a Core API interface
implementing one of your own interfaces
implementation inheritance from a Core API class
implementation inheritance from one of your own classes
creating a window
adding buttons to a window
using a textfield for input/output
providing menus
using MVC to design programs
using the Collection API: lists, queues, stacks
using the Collection API: sets
using the Collection API: maps
using a throws clause
using a try statement
declaring an exception class
using applets

Those are some of the topics that I teach, but of course there are many more that could be taught. The order in which the parts of Java are taught in this course is given in the Appendix to this paper.