This page contains a collection of known publications and resources
that are relevant to those who are interested in the subject
of adopting Java as the first language in the Computer Science
curriculum.
I am merely a collector of these resources, and cannot guarantee their
continued availability or accessibility. If you encounter any
stale link specified herein, or if you have new resources that may
be of interest, please email me:
mliu@csc.calpoly.edu
"The lack of consensus concerning the introductory language has caused a
variety of
problems. One set of problems affects computer science departments.
Failing
to agree on which language to switch to can cause paralysis and stagnation.
A switch that's not widely supported can result in friction between
colleagues,
in extreme cases even causing highly qualified faculty to depart rather than
teach a language that they personally abhor. A profusion of languages also
makes it harder for departments to find qualified instructors and teaching
assistant.
A plethora of introductory languages can also hurt students by making it
difficult for them to transfer courses from one college to another or to get
advanced placement credit."
K. N. King, Georgia State University
Publications
(Note: comments in italic are mine.)
The Case for
Java as a First Language": A paper by K. N. King of Georgia State
University. Abstract: Java could well be the answer to the problem of
choosing an appropriate language for the first programming course. This
paper looks at the pros and cons of teaching Java, concluding that
Java appears to have outstanding prospects for computer science education
in general and the first programming course in particular. In particular,
the paper argues that the properties that make Java a suitable Internet
language also make it excellent for classroom use.
( The main theme of this paper is that Java, while not perfect, serves
well as a unifying force for CSc departments. This is definitely a pro-Java
article.)
Learning Java: Promises and Pitfalls, by Robert Biddle and Ewan Tempero
of the Victoria University of Wellington.
Abrstract: In this paper we will examine the Java language, and consider how
easy it is for beginning programmers to learn. We address primarily the
issues that arise directly from the language itself, and discuss whether
the promises are compromised by the pitfalls. This analysis is the
result of our teaching Java to people in industry, our consideration of
whether Java is suitable as a first programming language for university
students, and our earlier work involving similar issues with regard to
C++.
The Use
of Java as an Introductory Programming Language by Jason Hong, as
appeared in ACM's Crossroad.
( This article contains detailed description of problems encountered
based on actual use of the language in teaching introductory courses.)
"What We
Swept Under the Rug: Radically Rethinking CS1" by Lynn Andrea Stein,
MIT.
(This paper apparently is the foundation for an experimental course
at MIT, which uses Java to teach CS1. MIT's current core language is
Scheme.)
"Java as First Programming Language: A Critical Evaluation," by
Said Hadjerrouit, Agder College, Norway, published in SIGCSE Bulletin,
June 1998. I have a hardcopy of this paper, which is not readily
available on the web. This is a from-experience evaluation of
using Java as the first language. Of particular interest is a
section on Evaluating Java, which I summarize as follows:
Programming concepts: Less appropriate than Simula;
Novice usability: Not simpler than Simula; it is, however,
"easier to write programs in an object-oriented style with Java than with
C++".
Marketability and Support for Larger Programs: While stating that "we
believe that marketability should not be the main driving force behind
language selection," the author concedes that the marketability of Java
is a major motivation for the students.
Use in Subsequent Courses: Java does provide the prerequisite concepts
for advanced courses which include "network programming, multimedia design,
and multithreading."
Number of Programming Languages: The writer's department has attempted
to teach two languages in introductory courses (Simula and C++) without
satisfactory results. He contends that because of the similarities between
Java and C++, "C++ becomes a language that many of our students can learn
on their own.
Programming paradigm support: Java allows the object-oriented paradigm
to be covered in greater depth.
In the conclusion, the author wrote: "Learning (I believe he means
teaching) Java as a first language to
support introductory programming turned out to be more difficult than
originally anticipated. Java is a relatively difficult language for
students with no programming background. It is more suitable for
teaching students with some programming knowledge, particularly in C/C++.
However, because of new possibilities it opens up, it is impossible to
ignore the Java paradigm in computer science education."
FIRST-COURSE LANGUAGE FOR COMPUTER
SCIENCE MAJORS list: A list of programming languages adopted
by various universities, maintained by Professor Dick Reid of MSU.
(This is not an exhausive list, but does give some idea of the
diversity in introductory languages adopted by CSC departments.)