Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dissertation on programming languages

1 view
Skip to first unread message

car...@my-deja.com

unread,
Jun 25, 1999, 3:00:00 AM6/25/99
to
I am currently completing a Masters Degree in Computing & Information
Systems. As part of the program I am obliged to submit a
dissertation/thesis. The topic I have chosen is: "Which Programming
Language should be taught to Students first?" (I am mainly concentrating
on C++ and Java, as these are the languages I know.) If anyone has any
information on this topic, or knows any useful web sites/books etc,
which will help me, please let me know. Thank You.


Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't.

Hamilton Richards Jr.

unread,
Jun 25, 1999, 3:00:00 AM6/25/99
to
In article <7kvo1f$19o$1...@nnrp1.deja.com>, car...@my-deja.com wrote:

> I am currently completing a Masters Degree in Computing & Information
> Systems. As part of the program I am obliged to submit a
> dissertation/thesis. The topic I have chosen is: "Which Programming
> Language should be taught to Students first?" (I am mainly concentrating
> on C++ and Java, as these are the languages I know.) If anyone has any
> information on this topic, or knows any useful web sites/books etc,
> which will help me, please let me know. Thank You.

I'm a strong proponent of teaching beginners in a functional language such
as Haskell (and for three years I've been practicing as I preach). There's
a good web site on the topic "Functional Programming Languages in
Education" at http://www.cs.kun.nl//fple/.

Regards,

--Ham

--
Hamilton Richards Jr. Department of Computer Sciences
Senior Lecturer Mail Code C0500
512-471-9525 The University of Texas at Austin
SHC 434 Austin, Texas 78712-1188

Brian Harvey

unread,
Jun 25, 1999, 3:00:00 AM6/25/99
to
car...@my-deja.com writes:
>I am currently completing a Masters Degree in Computing & Information
>Systems. As part of the program I am obliged to submit a
>dissertation/thesis. The topic I have chosen is: "Which Programming
>Language should be taught to Students first?" (I am mainly concentrating
>on C++ and Java, as these are the languages I know.)

Sigh.

You should get your money back from your university. They are telling you
they've given you a masters-level preparation in computing, having taught
you two almost-identical programming languages as preparation for a
concentration on programming languages!

Implicitly, what they've taught you is "all programming languages are
exactly the same as each other, except for trivial differences in notation."
Luckily, nothing could be further from the truth. There are GOOD programming
languages! You should learn one. I recommend Scheme, for starters.


Why do you think there are so many different programming languages in the
world? It's because there are different programming PARADIGMS: ways of
thinking about organizing the structure of a program. The question "which
programming language should we teach first" is really a disguised version
of the question "which programming PARADIGM should we teach first?" To
answer that question, you must have at least some acquaintance with the
functional programming paradigm, the object-oriented paradigm, and the
declarative paradigm.

Instead, what you've learned is a *very* cloudy view of the object-oriented
approach, cloudy because instead of learning a language designed for that
paradigm you've learned a language from the old-fashioned sequential
paradigm, C, with some OOP features awkwardly spliced in. (That's how
C++ was designed, and Java was designed by starting with C++ and trying to
clean off some of the more disgusting mistakes.) If you want to understand
OOP, I recommend Smalltalk.


What you really should do first is read a good book that will explain
all this. What I recommend is

Structure and Interpretation of Computer Programs
Harold Abelson and Gerald Jay Sussman with Julie Sussman

Shawn O'Donnell

unread,
Jun 25, 1999, 3:00:00 AM6/25/99
to
In article <7l08o6$pdv$1...@agate.berkeley.edu>, b...@anarres.CS.Berkeley.EDU
(Brian Harvey) wrote:

> car...@my-deja.com writes:
> >I am currently completing a Masters Degree in Computing & Information
> >Systems. As part of the program I am obliged to submit a
> >dissertation/thesis. The topic I have chosen is: "Which Programming
> >Language should be taught to Students first?" (I am mainly concentrating
> >on C++ and Java, as these are the languages I know.)
>
> Sigh.
>
> You should get your money back from your university.

...for letting you choose that topic for a thesis. If you're really stuck
with it, go read the constant flame wars on the C++ and Java newsgroups.
Then make a concerted effort to avoid 99.94% of what you read there.

There are a few good reasons for preferring one of your chosen languages
over the other, but it would be hard, in the abstract, to write anything
terribly useful about why.

If I were your adviser, I would be happier if you had some central,
substantive questions about computer science education as your topic and
demoted the language comparison to an illustrative case study.

> What you really should do first is read a good book that will explain
> all this. What I recommend is
>
> Structure and Interpretation of Computer Programs
> Harold Abelson and Gerald Jay Sussman with Julie Sussman

I'll second that recommendation. While you're reading, try to think about
what good and/or difficult questions their approach raises about computer
science education. Maybe you can find an interesting hook for your work
so that it doesn't turn into a [f]lame piece of computer language
advocacy.

--Shawn

Nikolai Bezroukov

unread,
Jul 5, 1999, 3:00:00 AM7/5/99
to
Caroline,

I believe that C++ is a disaster as a first language -- it is just too
complex.
Java is slightly better, and has (somewhat) simpler string handling, but
usually it is also a torture for students, unless you find a suitable
subset.

Implementations of both languages are extremely bad in diagnostic quality.
And the quality of implementation is as important as the language itself.
Often one can be better off with a decent implementation of even old
language (Basic, Pascal) that with bad implementation of a new one (Karel++
http://csis.pace.edu/~bergin/karel.html is a well known example of a decent
first language -- Java-like Logo with a horrible implementation).

OO-related complexity is an additional drawback, also it can (and IMHO
should) be avoided during at least first semester. Here C++ is preferable as
one can completely ignore OO at the beginning, and introduce it later, but
subsetting Java will also work.

Anyway I would try to outline a subset of Java and compare implementations
to find more or less suitable for introductory course if any.

I really hate to see how students serve as guinea pigs for some new and
untested language just to satisfy ambitions of the teacher. And misuse of
OO in teaching introductory courses is a bad thing. It's just the same self
righteous religious fundamentalism that we see in other spheres of life so
often.

Dr. Nikolai Bezroukov
www.softpanorama.org
Standard disclaimer applies


car...@my-deja.com wrote:

> I am currently completing a Masters Degree in Computing & Information
> Systems. As part of the program I am obliged to submit a
> dissertation/thesis. The topic I have chosen is: "Which Programming
> Language should be taught to Students first?" (I am mainly concentrating

> on C++ and Java, as these are the languages I know.) If anyone has any
> information on this topic, or knows any useful web sites/books etc,
> which will help me, please let me know. Thank You.
>

Peter Hermann

unread,
Jul 13, 1999, 3:00:00 AM7/13/99
to
Nikolai Bezroukov <n...@bellatlantic.net> wrote:
> I believe that C++ is a disaster as a first language -- it is just too

C++ is a disaster in itself.

> Java is slightly better, and has (somewhat) simpler string handling, but

Java is just a bad copy of Ada, a spastic sibling.
BTW, every serious Ada compiler is capable of producing Java byte code.

> Implementations of both languages are extremely bad in diagnostic quality.

in contrast, this is one of the strengths of Ada.

> OO-related complexity is an additional drawback, also it can (and IMHO

OO does not add too much complexity in a well designed language.

>> I am currently completing a Masters Degree in Computing & Information
>> Systems. As part of the program I am obliged to submit a
>> dissertation/thesis. The topic I have chosen is: "Which Programming
>> Language should be taught to Students first?" (I am mainly concentrating
>> on C++ and Java, as these are the languages I know.) If anyone has any

If you leave out Ada, then you really should stop your endeavour.

>> information on this topic, or knows any useful web sites/books etc,
>> which will help me, please let me know. Thank You.

Look into
http://www.csv.ica.uni-stuttgart.de/homes/ph/resources_on_ada.html

--
Peter Hermann Tel+49-711-685-3611 Fax3758 ica...@csv.ica.uni-stuttgart.de
Pfaffenwaldring 27 Raum 114, D-70569 Stuttgart Uni Computeranwendungen
http://www.csv.ica.uni-stuttgart.de/homes/ph/
Team Ada: "C'mon people let the world begin" (Paul McCartney)

Paul Wexelblat

unread,
Jul 13, 1999, 3:00:00 AM7/13/99
to
Logo

Peter Hermann wrote:

--
...wex

Randy Crawford

unread,
Jul 16, 1999, 3:00:00 AM7/16/99
to
car...@my-deja.com wrote:
>
> I am currently completing a Masters Degree in Computing & Information
> Systems. As part of the program I am obliged to submit a
> dissertation/thesis. The topic I have chosen is: "Which Programming
> Language should be taught to Students first?" (I am mainly concentrating
> on C++ and Java, as these are the languages I know.) If anyone has any
> information on this topic, or knows any useful web sites/books etc,
> which will help me, please let me know. Thank You.

As others have suggested, you're biting off more than you probably realize.

To ask "Which Programming Language should be taught to Students first?"
begs "Which programming model (paradigm) should be taught first?" which begs
"Which CS principles should be taught, in what sequence, and how?"

If after that last question you're still interested in pursuing the topic,
you'll have the following foundations to cover:

1) Computer science principles
What do coputing practitioners need to know, and what topics build on
other topics?

2) Programming principles
What languages embody which CS principles? Which aid you in learning
those principles?

You can learn a lot by reviewing the historical record of the ACM(?)'s
recommended hierarchy of college CS courses (CS1, CS2, ...). No doubt
these course descriptions are dated by now and perhaps even less ideal
than they once were, but at least they'll give you some perspective on
what the goals are/were in introducing students to a formal sequence of
instruction in CS principles.

Who knows. A good thesis on the interpretation and reassessment of CS1
(Intro to CS) might be of some use. If you can get past the religion...

--
Randy Crawford
crw...@umich.edu
http://www.engin.umich.edu/labs/cpc

0 new messages