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 JavaEvery 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.