24
1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408.

1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

Embed Size (px)

Citation preview

Page 1: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

1

Teaching Java backwardsPresenter: Ku-Chou TaiAdvisor: Ming-Puu Chen

Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408.

Page 2: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

2

Agenda

Introduction Background to the higher diploma DDS course Design philosophy of the higher diploma DDS

course Practical experiences Conclusions

Page 3: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

3

Introduction 1/5

This paper takes the idea of abstraction-first teaching a step further, by using Bloom’s Taxonomy to design a course to present factual content early, followed by higher-level cognitive skills.

In the course described here, factual content was covered rapidly, then reinforced by assignments, laboratory sessions and tutorials, aimed at building higher cognitive skills.

The resulting course was successful in relatively rapidly bringing a class doing a ‘‘bridging’’ diploma up to the level required for dealing with a second-year course.

Page 4: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

4

Introduction 2/5

In earlier work (Machanick, 1998a), an abstraction-first approach to learning object-oriented skills has been proposed, based on the idea that one should start from learning to use class libraries before coding classes from scratch.

Contrary to this approach, even texts which provide an ‘‘objects-first’’ approach (Decker & Hirshfield, 1995; Nin˜o & Hosch,

2002) tend to assume that the easier skill is designing your own classes, rather than using class libraries.

Page 5: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

5

Introduction 3/5

The approach reported on here went a step further. Not only was an abstraction-first approach used, but the course focused initially on factual content. The focus shifted to coding later in the course. This ordering may appear to be ‘‘backwards’’ – hence the title of the paper.

The abstraction-first idea has previously been explored at the same School at second-year level. A course called ‘‘Advanced Programming’’ (AP) was redesigned as an object-oriented course called ‘‘Data Abstraction and Algorithms’’ (DAA).

Page 6: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

6

Introduction 4/5

This paper describes a newer course, data and data structures (DDS), which was put together as an introductory course for a graduate conversion Higher Diploma program.

The approach taken was similar to that of the DAA course, except that libraries available in Java made it possible to place more emphasis on standard application programming interfaces (APIs), a central facet of encouraging reuse.

The Java 2 Platform introduced a reasonably simple container class library, Collections, which made for a convincing approach to introducing the students to reuse through abstract data types.

Page 7: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

7

Introduction 5/5

The DDS course design explored how to use Bloom’s Taxonomy for a specific course – as opposed to an earlier proposal to use Bloom’s Taxonomy in the overall design of a degree program (Machanick, 1998b).

Page 8: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

8

Background to the higher diploma DDS course 1/3 The Higher Diploma in Computer Science (HDipCS)

is a 1-year conversion program for graduates with no background in Computer Science, or significantly less than the Wits degree.

HDipCS presented significant logistical problems for the School, which did not have resources to run it as a separate program. It was therefore put together out of most of the undergraduate curriculum, done in one year

Page 9: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

9

Background to the higher diploma DDS course 2/3 Since the curriculum covered a large fraction of the

undergraduate Computer Science courses, taken over one year, a logical sequence of courses was hard to piece together.

Consequently, it had previously been necessary to offer repackaged versions of a few of the regular courses specifically for the HDipCS class.

Page 10: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

10

Background to the higher diploma DDS course 3/3 A particular problem was that the second-year data abstraction

and algorithms (DAA) course (object-oriented concepts in C++ with algorithm analysis) was relatively heavyweight, yet it could not be late in the year, because it was a prerequisite for other second-year courses.

In 1998, running a special version of DAA for the HDipCS class had solved the problem. In 1999, the plan was to do away with separate versions of courses wherever possible.

The solution was to move a first-year course, data and data structures (DDS), to earlier in the year, and to change its content (borrowing the name from an existing course allowed us to avoid a rule change). It became the one course that was put on specifically for the HDipCS class. The course started 3 weeks before the normal start of term, to allow time for concepts to be absorbed, before more advanced courses started.

Page 11: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

11

Design philosophy of the higher diploma DDS course 1/4 The approach used in the course was novel in

several respects. First, the abstraction-first approach used in the DAA

course (Machanick, 1998a) was followed. Second, in terms of the order of cognitive skills, the

approach was based on starting with factual skills, then moving on to application, an approach advocated in earlier work for overall design of the Computer Science curriculum (Machanick, 1998b).

Page 12: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

12

Design philosophy of the higher diploma DDS course 2/4 While the abstraction-first approach was developed

independently of the idea of using Bloom’s Taxonomy, the two ideas mesh together well.

Bloom’s taxonomy has been most commonly used in pre-university curriculum design, but there is a growing movement to include it in higher education curriculum design; the idea has for example been discussed during meetings (in which the author is involved) leading up to the ACM-IEEE Curriculum 2001 standard (ACM & IEEE Computer Society, 2001).

Page 13: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

13

Design philosophy of the higher diploma DDS course 3/4The taxonomy orders skills as follows, from lowest

cognitive skills to highest : Knowledge – facts. Comprehension. Application. Analysis. Synthesis. Evaluation.

Page 14: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

14

Design philosophy of the higher diploma DDS course 4/4 The knowledge-before-application approach was applied by

finishing all the lectures in the first three weeks, while continuing with laboratory and tutorial sessions in the last 4 weeks. During the last 4 weeks (after lectures ended, but other courses had started), the focus shifted from relatively small additions to programs, to timing programs to see if timing matched predictions of algorithm analysis.

Finally, the course concluded with a simple programming exercise, in which the solution totaled about 120 lines of code, in which the class had to develop all the code (excluding libraries). In this final phase, two additional tutors were added to the initial three, to emphasize that higher-level skills were being developed in the final 4 weeks.

Page 15: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

15

Practical experiences 1/4

A subjective report on experiences with the course, including the method of assessment, the use of Java and timing of the course.

Assessment has a number of roles. Formative assessment is aimed at providing feedback, whereas summative assessment is aimed at evaluating students achievements (Brown, Bull, &

Pendlebury,1997).

Page 16: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

16

Practical experiences 2/4

Students were also provided with a self-assessment sheet for each laboratory session, so that they could determine for themselves whether they had learnt what was required from the session.

The small tests, though for credit towards the final grade, as well as the self-assessment tests, were meant to provide formative assessment. With two laboratory sessions and a tutorial per week, as well as 2 short multiple-choice tests every week (except weeks with bigger tests), the students had rapid feedback on their difficulties.

Furthermore, the rapid feedback made it possible to adjust expectations of the class for each laboratory session and test.

Page 17: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

17

Practical experiences 3/4

The testing strategy was designed to reinforce the Bloom’s Taxonomy-based approach: students were encouraged to develop lower-level skills before they had to apply higher-level skills.

The use of Java also worked well: the Collections API is cleanly designed, and provides a much stronger vehicle for illustrating principles of data structures using abstract data types than the C++ standard template library (STL), which is more complete, but harder for beginners.

Page 18: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

18

Practical experiences 4/4

Particular features in Java’s favour included: No explicit pointers: including garbage collection for dynamic

data. Strong object-orientation: although primitive types are available

as well, it is possible to program in Java only using classes and objects.

Good standard libraries: although some of the Java APIs are a bit complex for an introduction, it is possible to use selected APIs, especially the simpler graphics-oriented class libraries and Collections, to provide a simple introduction to abstract data types.

Easy to create fun examples: related to the good standard libraries: it is not hard to demonstrate a simple graphical application or applet in a web page.

Page 19: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

19

Evaluation of the higher diploma DDS course 1/2

Page 20: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

20

Evaluation of the higher diploma DDS course 2/2A number of factors should have made the DAA course more

difficult for the class: Compromises made to reduce the number of courses put on

specially for the HDipCS group made for a weaker background for DAA for this group than for the 1998 class.

Previous HDipCS classes were taught as a separate group for DAA; in 1999, they took DAA as part of the larger BSc year 2 class, with no special allowance for their different background.

In 1999, DAA started when the HDipCS group had much less programming background than previous HDipCS classes; the latter had a programming introduction (Pascal) before official courses started, as well as two first year courses, fundamental algorithmic concepts (FAC) and data and data structures (DDS) before DAA.

Page 21: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

21

Conclusions 1/2

It is reasonable to conclude based on the evidence presented here that the ‘‘backwards’’ approach is a viable alternative, particularly when supported by a suitable language. In particular, an objects-first or abstraction-first approach is suited to quick presentation of factual content, before switching to higher cognitive skills.

The use of Bloom’s Taxonomy as a basis for course design is supported by the findings reported here. Students were able to move on to more advanced material in the next course, despite having a compressed introduction, compared with previous similar classes.

Page 22: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

22

Conclusions 2/2

The timing advocated here could work particularly well for distance education: intensive lectures could be presented by video or via the Internet. Laboratory work and tutorials could be run separately over a longer period: students could take time off work to attend a resource centre.

Teaching programming backwards means working towards teaching programming from presenting a factual view of abstraction and what programs do, rather than starting with coding.

From the experience reported here, this appears to be a viable strategy, and is worth exploring further. Furthermore, use of approaches from education theory, such as Bloom’s Taxonomy, is worth incorporating in higher education strategies.

Page 23: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

23

Higher diploma 1998 versus 1999

Page 24: 1 Teaching Java backwards Presenter: Ku-Chou Tai Advisor: Ming-Puu Chen Philip, M. (2007). Teaching Java backwards. Computers & Education, 48(3), 396–408

24

Computer science timing in BSc.