Java Python C# Haskell Ada ML FORTRAN Icon Pascal Ruby Algol Lua C Red Lua COBOL Perl Go Clojure awk Eiffel Assembly Rexx LISP JavaScript Tcl Elixir BASIC Factor Swift APL Scala Rust Shadow

Course Information

  • Time: MWF 1:50 - 2:45
  • Location: The Point 113
  • Instructor: Prof. Stucki
  • A study of two classes of languages: formal languages (regular, context-free, and computable) and their associated machines (finite automata, pushdown automata, and Turing machines); and programming languages, including the essential features of imperative, functional, object-oriented, and logic programming languages, together with their design and implementation on modern computers and virtual machines.

    Additionally, exposure to formal definitions of programming languages including syntax and semantics; recursive descent parsing, data structures, control constructs, recursion, binding times, expression evaluation, compiler implementation; symbol tables, stacks, dynamic allocation, compiler compilers.

Most programming languages do not come with Integrated Development Environments (IDEs), and in fact many programmers prefer to learn a powerful general-purpose text editor and use it for all their editing, including writing programs. Recommended editors are listed below. VS Code is the new kid on the block, but has very powerful, very compelling features. Vim and Emacs are a bit different than most editors, but they're both very powerful and run on practically every computer on the planet (they've also been around a long time). jEdit is written in Java, so it will run on anything that can run Java. Notepad++ is Windows-only, and is NOT the same as Notepad.

Readings

Note on readings: unlike text book readings, the assigned readings in this course will follow a variety of formats. Some may be scholarly journal articles written by pioneers in the field and will require a different level of attention and focus than you may be accustomed to. Others may be from wikis (WikiPedia, WikiWikiWeb, Wolfram's Mathworld, etc.) that allow for non-linear exploration of topics through a variety of pages. The more time you put into reading these assignments, the more you will be prepared for the programming assignments. A new reading assignment will be posted every Wednesday, including holidays.

Project Languages

If you find additional resources, send me links and I'll add them here
Lab Instructions

The three languages you select must be from different categories.

A: “traditional” statically-typed compiled imperative/OO languages

  1. Ada (GNAT Community Edition IDE)
  2. Eiffel (EiffelStudio IDE)
  3. Fortran 90 (use gfortran, which is part of gcc)
  4. Go (official site, and see An Introduction to Programming in Go)
  5. Nim (official site)
  6. Pascal (Free Pascal 3.0 and Lazarus IDE)
  7. Shadow ( Shadow Tutorial; Standard Library Reference)

B: “traditional” dynamically-typed scripting languages

  1. awk (awk is a standard Unix utility)
  2. Julia (official site)
  3. Lua (official site)
  4. Perl (perl is a standard Unix utility)
  5. Rexx  (Rexx Official SiteRegina Rexx 3.9 Interpreter)
  6. Ruby  (Ruby 2.4.1 Official Site)
  7. Tcl  (Tcl 8.6)

C: “nontraditional” languages

  1. Clojure (official site)
  2. Scala (official site)
  3. Haskell (official site, and see Learn You a Haskell)
  4. Icon (official site)
  5. OCaml (official site)
  6. Red (official site)
  7. Rust (official site)

Languages Selected

Name

  •   Abiral
  •   Adam
  •   Ahmed
  •   Aidan
  •   Anu
  •   Ashley
  •   Austin
  •   Cameron
  •   Colm
  •   Hussein
  •   Jennifer
  •   Kristin
  •   Kyle H
  •   Kyle M
  •   Nfaly
  •   Olivia
  •   Paul
  •   Sam

Project #1

  •   Perl
  •   Tcl
  •   Go
  •   Shadow
  •   awk
  •   Red
  •   FORTRAN
  •   Lua
  •   Scala
  •   Nim
  •   Julia
  •   Icon
  •   Clojure
  •   Ada
  •   Haskell
  •   Rust
  •   Ruby
  •   Pascal

Project #2

  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   

Project #3

  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •   
  •