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.

Contributions from readers
   Courtesy of Jenna from a yet-unknown Girl Scout Troop

     Computer History: A Timeline of Computer Programming Languages
A brief summary of the history of programming languages. It is a great introduction to the more detailed links at the bottom of the page.
One of them, Programming Languages Through the Years has a very interesting chart that shows the slowing pace of language development.
For the most widely-used languages, the last major developments were in 2001 (C# and VB.NET)


   The two below are courtesy of Christina from the CCS Valley Computer Club
   A Beginner’s Guide to Programming Languages
      A brief overview of the most common languages in current use; great place to start for a newbie, especially if you feel like you've been thrown into the deep end of a bowl of alphabet soup!
   Website Design for Online Business
While this site has less programming language content per se than other references here, it is a great introduction to HTML, and more importantly the
context and environment in which HTML is used. It takes much more than just HTML to create a website — HTML is the glue that holds the pieces together.
if this site piques your interest the next steps are CSS and then Javascript.