You will each give a class presentation on a programming language of historical or current interest. Each presentation should include PowerPoint or HTML visual aids and should last approximately 15 - 20 minutes if in person, or closer to 10 minutes if in video format. We will discuss in class whether it would be better to have in-class presentations or video presentations.
The guidelines below are meant to be suggestions. They are good suggestions, although not every bullet point applies to every language. In particular, I think every group will have to apply some editorial judgement about what will work best for this quarter. I would say to everyone: pick what topics strike you as the most important or interesting things to focus on, try to do a good job, but don’t kill yourselves. [ This final note from 2020 may still be useful: In an ideal world (and we are NOT living in an ideal world!), you would say at the end of the quarter that Spring 2020 was weird, chaotic, isolating, and whatever else, but Programming Languages was an interesting, educational, and maybe even fun bright spot. Don't let this presentation overwhelm you; keep it interesting, educational, and maybe even fun! ]
A good source of information, for all but the most recent languages, is the set of papers in the proceedings from the various ACM HOPL (History of Programming Languages) conferences. They invited the major language developers to present papers describing the languages and some of their design decisions. Also, the Wikipedia page on programming language history has a good timeline and at least some information on how various languages influenced each other. (The textbook covers a little of that also.)
Guidelines:
In your programming language presentation, you should:
- Provide some historical context, e.g.,
- When was the language developed?
- By whom?
- Why?
- What languages preceded or influenced this language?
- What languages were influenced by this language?
- Show at least one short, illustrative sample of the language, explaining
the key features of the sample program or program fragment.
(For some languages, several code samples seem to be appropriate -- use
your judgement.)
One possible program specification:
Fill an array of N random integers between 0 and 99.
Count how many integers in the array are less than 50. - List the key features, innovations, or influential features of the
language. The specific features you cover will depend on the language,
but some examples of features you might address are:
- Rules for making declarations
- Scoping
- Binding
- Expression evaluation
- Control structures (conditionals, iteration, recursion, etc)
- Types (primitive types, user-defined types, type equivalence)
- Support for data abstraction
- Parameter passing
- Generic methods or types
- List weaknesses of the language.
- Include a bibliography or list of your sources.
Some other tips to keep in mind as you prepare your presentations:
- Start preparing enough in advance so that you have time to:
- Find books, articles, or online materials on the programming language.
- Read and understand the material you are presenting well.
- Plan out what you want to say and organize your presentation.
- Develop your visual aids (HTML or PowerPoint).
- Practice your presentation with a friend or roommate.
- In the time you have, you won't be able to present everything about the language. Choose carefully the points that you want to get across and give yourself time to explain and support those points. If your language went through several versions, focus on the early version and give a brief summary of the changes made in later versions. (An exception to this is if there was a later version that was particularly influential, e.g., Fortran IV, Algol 60, Simula 67, Smalltalk 80. In those cases, you may want to focus on those versions, and only briefly cover the earliest version.)
- Remember that you can come ask me for help if you have difficulties at any stage.
The grade for your presentations will be based on:
- content
- structure
- clarity
- supporting materials (e.g., visual aids, code sample)
- bibliography