CS 331 Spring 2020  >  Project Description


CS 331 Spring 2020
Project Description

The Project is due at 9 pm Sunday, April 26. It is worth 100 points.

Procedures

The project may be done individually or in a group of two students.

As soon as possible, e-mail me indicating whether your will be working alone or whom you will be working with, and proposing a programming language for your project. I will reply, telling you whether your programming language is approved.

By the due date, turn in your report in PDF form on the UA Blackboard Learn site, under Semester Project for this class. Only one student in a group needs to turn in the project; under normal circumstances, all group members will receive the same grade.

What To Do

Write a report introducing your PL to someone who is unfamiliar with it—roughly along the lines of the introduction I have given in class for Lua, Haskell, etc, but in the form of a written report.

You may assume your reader is a knowledgable programmer who is familiar with all of the terminology we use in class.

After reading your report, the reader should have a good idea of:

Topics To Cover

You must cover:

Here are examples of things you might discuss. You do not need to cover them all. I have subdivided them into three categories.

  1. Overview
  2. Build and Execution
  3. Special Features

1. Overview

Here are examples of things you might discuss. (You do not need to cover them all.)

You must describe your programming language’s type system.

2. Build and Execution

Describe the entire process of writing source code, turning it into something executable, and executing it.

3. Special Features

What is special about this programming language? Here are some possible features to mention.

Other Issues

Length—Generally, 2 pages is too short, and 20 pages is probably too long. However, I am more interested in getting a good overview of a PL than I am in you reaching some arbitrary minimum length. Saying something in ten words, when you could have said it just as well in three, is not going to gain you any favor. Consider the amount and depth of information about a PL that I convey in class (in both slides and discussion), and then do something like that in written form.

Quality Writing—Be sure to use good grammar and complete sentences with proper punctuation.

Terminology—Use terminology and notation correctly. Definitions of many terms are given in the slides; make use of these. And if a term exists, then use it; for example, rather than writing, “Types are determined, and type compatibility is checked, when the code involving these types is executed,” it is better to write, “This PL uses dynamic typing.”

Readability—Avoid writing a “wall of text”. Break up your report with headings and subheadings. Break up sections into natural paragraphs. Do not write over-long sentences. Make use of bulleted or numbered lists.

Possible Programming Languages

Your programming language must meet the following requirements.

Try to choose a programming language that is a little off the beaten path, or one that used to be popular, but has fallen by the wayside. This still leaves a huge number of choices. The Fledgling Languages List is a good place to look for ideas.

Some programming languages to consider are listed below. I do not have a working knowledge of all of these. Some of them might turn out to be poor choices for a project. If some programming language interests you, then check it out!

Crossed-out items are programming languages that have been assigned to a group.

  •  ActionScript 
  •  Ada 
  • Algol
  • Alice
  • APL
  • AutoHotKey
  • AWK
  • B
  • Some variety of BASIC (not Visual Basic)
  •  Bash* 
  •  Boo 
  •  Ceylon 
  • Chuck
  •  COBOL 
  • Coconut
  •  CoffeeScript 
  • Coq
  •  Crystal 
  • Csound
  •  D 
  •  Dart 
  • Delphi or Pascal
  •  Duck 
  • Dylan
  •  Eiffel 
  • Elixir
  • Elm
  •  Erlang 
  • Euphoria
  • Factor
  • Falcon
  •  FAUST 
  •  Fortran 
  • Fortress
  •  Groovy 
  • HaXe
  • IDL
  • J
  •  JavaScript Object Language (JSOL) 
  • Jinx
  • Joy
  • Julia
  • Kite
  • Koka
  •  Kotlin 
  •  A Lisp-family programming language** (not Scheme): Arc, Clojure, Common Lisp, EMACS Lisp, Logo, Qi, VLISP 
  • Lobster
  • Loell
  •  Luna 
  •  MATLAB or Octave* 
  • Miranda
  • Mond
  •  MoonScript 
  •  Nemerle 
  •  An ML-family programming language: ML, OCaml, F# 
  • Nice
  •  Nim (formerly Nimrod) 
  • Objective-C
  • Occam
  •  Open Shading Language (OSL) 
  • Oz
  •  Perl 
  • Pike
  • PL/I
  •  PL/SQL 
  • PowerShell*
  • Processing
  •  Prolog 
  • PureScript
  • Pyret
  • Rexx
  •  Ruby 
  •  Rust 
  •  Scala 
  • Scratch
  • Shen
  • Simula
  • Smalltalk or Squeak
  • SNOBOL
  •  Squirrel 
  • Stata
  •  Swift 
  • Tcl
  • Terra
  • TeX/LaTeX*
  •  TypeScript 
  • UNITY
  • Wiring
  • The Wolfram Language/Mathematica*
  • Zig
*Emphasize programming.
**Emphasize differences from Scheme.