CS415 - Individual Project
This is a chance for you to explore a programming language of interest to you other than the ones we will explicitly be programming in as a class (i.e. Fortran, Ocaml, Prolog, Smalltalk/Squeak, and AspectJ; C, C++ and Java are excluded as well). Note that if you choose a language that is already being discussed in lecture (they are listed on the website), it will be a bit more difficult, as you will have to add something that has not already been gone over.
Part I - Introduction (1-2 pages)
- history of language, who designed it and why? where is it in use today (actual projects if possible)?
- what programming paradigm(s) does it readily support?
- what application areas is it most suited for?
- what are touted as its "features"?
- what are the claims made of its security, portability, efficiency, extensibility/maintainability?
- describe the compilation/interpretation/execution model it uses.
Part II - Description of Language (5-8 pages including code examples)
Describe the language using the vocabulary we have used in class to compare various languages. I will expect you to have a small code snippet for each bullet/sub-bullet giving an example.
- Control Flow Mechanisms - describe and give an example of the mechanisms available for:
- sequencing,
- selection,
- iteration
- is recursion allowed/encouraged?
- Types
- what types are available? Give an example of each. Be sure to include scalar types as well as composite types such as records, variant records, arrays, sets, pointers, lists, and file. Are user-defined types an option? Give an example if so.
- is name or structural type equivalence used?
- is static or dynamic (or a combination) type checking used?
- how do the rules for coercion compare to the ones used in C++?
- Subroutines
- is dynamic scoping or static(lexical) scoping used?
- what parameter-passing modes are available? (give an example)
- is there support for polymorphic subroutines? if so, give an example.
- Memory Management - how is this handled? where (in what part of memory) are values (locals, globals) allocated? Does the user explicitly allocate/deallocate values? What are the advantages/disadvantages to handling memory management in this way?
Part III - Final Evaluation. (1-2 pages)
Based on your experience with the language, give a short evaluation.
- do you have any basis to agree or disagree with any claims made of its security, portability, efficiency, extensibility/maintainability?
- what aspect of this language did you find most difficult to learn/understand?
- how would you rate the programming environment? compiler/interpreter messages?
- would you use this language again and if so what for? if not, what would you choose to use instead and why?
- design mistakes (in your opinion or the opinion of others)? Have they been corrected in other languages that were a follow-on. What if anything is missing in your opinion?
Your report should be more than just a laundry list of the items listed above - I can find a manual or a web page that lists this information easily enough. Take every opportunity to give code examples or otherwise show that you have put "some of yourself" into the report. Opinions and direct comparisons with other languages are welcomed but be sure to support your opinions. If you have questions about whether your report is appropriate or not, feel free to run it by the instructor before the due date.
c) Give a brief presentation of your project during the last week of the course (the week of classes after we get back from Thanksgiving). The presentation will describe/demo both the language you selected and your application. Details about the presentation coming later.
This project is meant to be an individual effort. You are encouraged to discuss your project with other class members (particularly if several of you end up choosing the same language, it may be useful to share good web resources, installation tips, etc.), but your sample application and written evaluation report should be your own work.
You must cite all sources used. Turning in application code used for another class or for a job will be considered a violation of the honor code (i.e. this should be new work).
The following pages provide some good starting points for your exploration:
- Open Directory links on programming languages
- Mark Leone's programming language research page
- Dave Evan's programming language resources
- Wikipedia's page on programming languages
- Note that you need to check first if you plan on using an 'esoteric' language (such as any of the ones listed here).
You are responsible for locating what you need to get this project done. Before you submit your proposal you might want to be sure that a free (or at least cheap) compiler for the language you select is available. Try installing it and running a few simple applications. You will need to deal with downloading and installing any necessary software. Sharing information about installing software or helping another person install software is NOT considered a violation of the honor code (i.e. it is o.k. to do). I expect that you will find ample resources freely available on the web (tutorials, on-line manuals, etc.) such that purchasing a manual on a language you select will be unnecessary, but you may want to take this into consideration as well when selecting a language. Note: if you do not have a computer available to you to install software then please see the instructor immediately so we can make arrangements within the department.
- You must submit a proposal for both the language and the application on Friday, 16 September 2005. You are welcome to submit your proposal earlier. The sooner it is approved, the sooner you can get started! Submission information (including the due time) will be provided in a future class. Your proposal should include: the language you have selected and the proposed application you will write in that language. This need only be a page or so.
- The actual project (paper and application code) will be due at TBA. Submission is electronically via the toolkit.
- Your project presentation will take place (around) during the last week of the course.
Last Updated: 09/05/2005