COS 301: Programming Languages Fall 2012

Instructor: Curtis Meadow

University of Maine School of Computing and Information Science

Syllabus
Course description, grading policy, broad outline, general class policies
ABET syallabus - includes specific goals and contributions to outcomes
 
Project
Language Selection Document. Please download this form, and fill it out using a word processor.This will be graded as HW1.
Download: Word   Open Office
Policies and Format
Scoring Rubric for Writing
 
Specific Project Assignments
Presentation Option An in-class presentation in lieu of one paper.
Paper Format Checklist Use this before submitting your paper.
Project Paper #1: Overview and History
Project Paper #2: Syntax, Operators, Scope and Primitive Data Types
Project Paper #3: Data Types, Expression Evaluation and Assignment Statements
Project Paper #4: Control Flow and Functions
     Sample data
Project Paper #5: Evaluation and Conclusions
Homework Assignments
Assignment 1. See Language selection form above. Due Sept 6.
Assignment 2. Due Thursday Oct 4.
Take-home essay question. Due Tues Oct 23.
Assignment 3. Due Thurs Oct 25.
Assignment 4. Due Thurs Nov 8.
Assignment 5. Due Thurs Dec 6.
 
Obfuscated Code Contest
 
Lecture Notes
These notes are from Fall 2011 and may be revised over the course of the semester. Do not print until just before class coverage.
Preliminaries
Technical Writing
History and Evolution of Programming Languages
Syntax and Semantics
Lexical and Syntactic AnalysisRev. Oct 2012
Names and Binding
Data Types
More Data Types and Garbage Collection
Expressions and Assignment
Statement Level Control Structures
Subprograms
Exceptions
Stack Frames
Smalltalk (Part of Ch 12)

Technical Writing Resources
   Mayfield Handbook-TOC
   UMaine Writing Center
   IEEE Citation Examples - Monash University Library
   Accessible Computer Science Research Guide - Dalhousie University Libraries

Recommended Reading
   A Brief, Incomplete, and Mostly Wrong History of Programming Languages
   Mother Tongues Computer Language Chart
   Google Chrome Development (in cartoons!)
   Revised Report on the Algorithmic Language Algol 60
   Unicode.org Unicode Tutorial
   The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
   UTF-8 and Unicode FAQ for Unix/Linux
   Catch as Catch can: A light-hearted look at exception handling
    An Expert System for Raising Pigs (Prolog)
   Java theory and practice: A brief history of garbage collection
   Java theory and practice: Garbage collection in the HotSpot JVM
   .NET Garbage collection - MSDN documentation
   Garbage collection in .NET

Other Points of Interest
If happen across any items that you think might be particularly interesting and/or entertaining for the class, please email me
   99 Bottles of Beer -- in 1,500 Programming Languages
   Hello, World in 200 Programming Languages
   The Classic Hello World Career Ladder
   TIOBE Programming Community Index
   Ranking the popularity of programming languages
   Periodic Table of Perl Operators
   PHP contrasted to Perl (PHP - it's "training wheels without the bike" - Randal L. Schwartz)
      Showing that language rants are still very much alive
   JavaScript: The World's Most Misunderstood Programming Language
   The World's Most Misunderstood Programming Language Has Become the World's Most Popular Programming Language
      If you do anything on the Web, then sooner or later you will use Javascript. Read these first.