CSC 308 -- PROGRAMMING LANGUAGES -- COURSE PROJECT
One of the requirements of this course is that you prepare a research paper
on a topic from the general area of programming languages. The paper will
determine 20% of your final grade for the course. It is due in my hands by
May 6th, 1999. There is no such thing as a late date; papers
received after 5:00PM on May 6th will not be accepted.
Here are some thoughts concerning the preparation of your paper:
-
Your paper will deal with a subject germane to this course. Several suggestions
have been included below. You should talk to me sometime during the first two
weeks of the semester (the date will be announced) so that we can agree on your
topic.
-
You will hand in to me, on January 14th, 1999,
a one-page abstract indicating what your paper will be about. This should
include a brief
discussion of the topic you have chosen, something about how you are approaching
the subject.
-
Your paper will be presented in a professional manner. In particular, it will be
typed or printed on a computer printer. (Dot matrix is acceptable.) Please be
sure to root out all typographical, spelling, and grammatical
errors!!!!!
-
You should endeavor to find a sufficient number of relevant sources of sound
academic quality for your research. You absolutely must give credit where credit
is due. It is not considered cricket to take credit for material you have
borrowed from others. This will lead to severe academic penalties. I don't care
whether you use footnotes or endnotes, but give the citations. In either case,
you will want to include a bibliography of all sources consulted in your
research for the paper.
-
The layout of the paper is more or less up to you. It is usually considered good
form to divide a longer paper into sections, to number pages, to double space,
and to provide a table of contents. The length of the paper is determined by
many factors, but I suspect you will not be able to do an honest treatment of a
topic with some substance in less than nine or ten pages of text. Please feel
free to write as much as may be necessary to make your case, but don't pad.
Thirty-five pages of drivel is just that, drivel. I do not grade by the pound.
It is possible to write a 35 page paper and have it assigned the grade of F.
-
While I value your opinions, I am concerned that you also discover and analyze
the thoughts of other experts in the field. Please do not present me with a long
essay that simply describes your feelings about the topic. Do some digging, find
out what the experts have to say, and then digest and analyze their thoughts.
Let me know what the current thought is on a subject -- often there will be more
than one view, as is the case of the development of Java (there's a topic for
you). Your own analysis of these ideas and the conclusions you base on them is
the heart of the work.
Listed below are some possible areas of investigation for your research
paper. This list is not intended to be exhaustive, only suggestive. If you have
other ideas about what you might like to do, please feel free to pursue them,
subject to your discussion with me.
A) The historical development of a specific programming language
-how did it become into being?
-who wrote it?
-why? what was the need for the new language?
-what did it contribute?
-what implementations are possible?
-what standards have been established?
-what is its current status? (is it still in use?)
-are there any new standards under development?
B) Case study type description of a particular programming language
-compiled? interpreted?
-typing?
-primitive data types
-primitive operations
-subprograms -- parameter passing, recursion, flow of control
-information hiding
-dynamic/static data structures
-control structures -- loops, WHILE, UNTIL, CASE
-multiprocessing, multitasking, intertask communication
C) ANSI standards
-what do labels like FORTRAN90 and COBOL74 mean?
-what is the significance of such tags?
-how standard are languages? why?
-how are standards set up?
-for which languages are there standards?
-who follows the standards? how do we know?
D) The extent to which languages are machine dependent
-how are languages modified for use on certain machines?
-PCs
-minis and mainframes
-supercomputers
-what will be the impact of various non-von Neumann architectures?
-vector processors
-multiple processors
-massively parallel processors
E) Various topics in natural language processing
-non-procedural languages
-what is the future of using English, or French, or whatever, as a computer
language?
-what are the difficulties in natural language processing?
-written or typed input/output
-spoken input/output
-translation
-syntax, semantics
-what impact has work in the area of natural language processing in computer
science had on areas like linguistics, learning theory, speech analysis?
F) A comparative study of two or more languages
-how are they the same?
-how are they different?
(be sure to discuss the major topics considered in the design of
a language)
-performance comparisons for a class of algorithms
G) For the venturesome, a look into the future of programming languages
-what considerations will force changes in the design of languages?
-what will the changes likely be?
-in fifty years, what will have become of today's languages?
-evolution of programming languages from the beginning till today
-High Performance FORTRAN?
-Object Oriented COBOL?
-JAVA?
-what will be the place of natural languages?