CSCI 431 Project Description
Overview
Everybody is required to participate in a class presentation,
either individually or as part of a group. Each presentation will
describe a high-level programming language of your choice.
Language Assignments
I need to receive your language selections no later than Nov 22.
If two or more groups request the same language, the first group to
make the request will prevail. Here are the language selections that
have been made so far:
- Alan Frazier and Brian Sparks will present
Smalltalk
- Alex Proctor and Brian Lee will present
ML
- Luke Withrow and Nathan Kempner will present
JavaScript
- John Shands and Bryan Powell will present
C#
- Jason Hawkins will present
Csound
- Kenneth Bogert will present
Eiffel
- Tom Albright will present
ABEL
- Ryan Hodges, David Larkin and Brian Scheewe will present
Python
Requirements
Your assignment is to give a brief (10 to 15 minute) presentation
of a high-level programming language to the class on Dec 2; all
presentations will be on that day. Your presentation
materials must be suitable for inclusion on the course page (i.e.,
there must be an electronic version of your presentation that can be
displayed with an existing application program). Your grade will be
based on the quality of your presentation, and the number of people in
the group will be taken into consideration.
You are free to chose any high-level language. You can look at
the Dmoz
Programming Languages Page for a partial list of languages, if you
are having difficulty making a choice.
Your presentation should include the following kinds of information:
- A program that you have written in the language that you are
presenting. This program should exhibit a number of the more
interesting features of the language.
- Discussion of technical factors such as:
- The language design issues that we have studied in class including:
- binding times
- scoping rules
- parameter passing mechanisms
- interesting data types
- flow control structures
- The language translation process.
- The language paradigm.
- The simplicity of the language constructs, which relates to ease of
programming
- The readability of the language, which relates to
maintainability, an important factor
as many programs greatly outlive their expected lifetimes (witness the
Y2K software crisis)
- How tuned a language's features are for a particular application
(e.g., Perl relates well to text processing)
- Compilation speed (if relevant)
- Runtime efficiency, in terms of speed and machine resources
- Library support
- Debugging help
- Longevity of language and compiler tools
- Portability across platforms and machine architectures:
Execution platforms for programs tend to change over
time (e.g., from DOS to Windows to Windows XP, just to trace the
``Wintel'' lineage). Is the language closely tied to a particular
machine, or is the language clearly portable (e.g., Java's clear
independence of any particular machine's quirks or implementation)?
- Discussion of political factors such as:
- Popularity of the language: Popularity, in terms of the size of the
marketplace and number of programmers using a language affects
the choice of a language.
- Economic: Which language tends to be cheapest or most cost effective
for a given application?
- References and resources, particularly those that are on-line.
Is the language well-supported by commercial organizations or
freeware development
communities (i.e., will the language's compilers and development
environment be available for the foreseeable future)?