Get Tech'Ed HomePage

Course Homepage


CSM CSCI-400

Principles of Programming Languages

Course Information

(Last Mod: 17 December 2013 13:16:53 )



Course Catalog Description

Study of the principles relating to design, evaluation and implementation of programming languages, including basic compiler techniques and context-free grammars. Students will be exposed to different categories of programming languages, such as functional, imperative, object-oriented and scripting. Best practices for programming will be explored, including effective use of exceptions and threads. The primary languages discussed are: Java, C++, Scheme, and Perl

Prerequisite: CSCI306.


Textbook

Concepts of Programming Languages, 10th Ed.

Robert W. Sebesta

ISBN: 979-0-13-139531-2

Pearson, 2012

 


Software

For this class you will need access to Racket, Flex, Bison, and a C compiler. Details will be provided as the need for each package comes up.

C Compiler

You may use any C compiler you wish. Your code, however, is expected to be ANSI-C compliant (C99 should be fine, although C89 is probably safer). As long as you stick to the standard header files and don't try to do anything with a GUI, you will probably be fine).

The Bloodshed website has a list of free compilers with links to where you can get them:

http://www.bloodshed.net/compilers/index.html

The Dev-Cpp (a.k.a., Dev-C++) compiler is a pretty simple compiler to use and has variants for most platforms. Many people prefer to stick with the tried and true GCC compiler. We will not be doing anything out of the normal, so find a compiler you like and go for it.

Racket

Racket, previously known as Scheme, is a particular implementation of Lisp. The software can be downloaded from the official Racket website . While there is a lot of good information on this site, it can be a bit difficult to find things. So here are some links to pages within the site you might find particularly useful:

The Getting Started tutorial is not the best tutorial in the world, but it should get you moving. Similarly, the documentation can be difficult to follow because they seem to assume that everyone reading it already knows a great deal about the underlying workings of Racket. But this is not uncommon -- it seems that people that write documentation assume that the only people reading it will be people that already know all about it and who just need a reference for some fine details. The rest of us just have to struggle and glean whatever jewels of wisdom we can with the hope, usually justified, that the more we struggle the easier it will be for us to find the jewels we seek.


More information will be forthcoming as we get closer to needing Flex/Bison. There's no pressing need to download or install these tools until then.


Flex

More information will be forthcoming as we get closer to needing Flex/Bison. There's no pressing need to download or install these tools until then.

http://flex.sourceforge.net/

Bison

http://gnuwin32.sourceforge.net/packages/bison.htm

Useful introduction can be found here: http://dinosaur.compilertools.net/bison/index.html


Grading

All assignments are due, via submission to Blackboard, by 8:00AM on the assigned due date. Homework will only be accepted late by prior arrangement due to extenuating circumstances or for extreme unforeseen circumstances.