Programming Languages (CS 04.315 1)
Fall 2009
Rowan University


Instructor: Dr. Nancy Tinkham
Office: Computer Science Department, Robinson
Phone: 256-4806
E-Mail: nlt@elvis.rowan.edu
Web: http://elvis.rowan.edu/~nlt
Office Hours: Monday, Wednesday, & Thursday 10:30-1:30; and by appointment.

Class meeting times:

Wednesday, 6:30-9:00 p.m., Education 2100
Texts:
Sebesta, Concepts of Programming Languages, Addison-Wesley (required). You may choose either the 8th or the 9th edition:
EITHER: Sebesta, Concepts of Programming Languages, 8th ed., Addison-Wesley, ISBN 0-321-49362-1
OR: Sebesta, Concepts of Programming Languages, 9th ed., Addison-Wesley, ISBN 0-13-607347-6

Tinkham, An Introduction to Functional Programming with Scheme, Linus Publications, ISBN 1-934188-99-9 (required)

Clocksin & Mellish, Programming in Prolog, 5th ed., Springer-Verlag, ISBN 3-540-00678-8 (required)

Grading:
Homework: 15%
On-Line Quizzes: 5%
Language-Learning Project: 10%
In-Class Scheme Test: 15%
In-Class Prolog Test: 15%
Mid-term Exam 20%
Final Exam 20%
Homework and exam policy:
You may work together on programming assignments, in teams of up to 3 people. If you work in a team, e-mail only one copy of the program and submit only one printout with all the team members' names on them.

Exams will focus on the concepts covered in Sebesta and the lectures.  The final exam will be cumulative but will emphasize material from the second half of the course.  In addition, there will be 2 language tests, one on each of the 2 programming languages we study in the course.

You may bring to the language tests one 8 1/2 x 11" sheet of paper containing any course information that you find useful.  (I suggest including notes on points of language syntax that you find hard to remember.)  The tests will be closed book otherwise.

The mid-term and final exams will be closed book.

I have attempted to schedule exams so that they do not occur on any major religious holy days. If you have religious obligations that I have failed to take into account, please talk to me before the exam and I will schedule a make-up exam time for you.

If you miss an exam due to illness, schedule conflicts, or some other difficulty, talk to me as soon as you can -- before the exam, if possible, but no later than one week after the exam -- and I will schedule a make-up exam time for you.

Grade points will be deducted for late homework at the rate of 5 points per weekday.  (For example, a homework assignment that is due on Wednesday and received the following Monday will receive a maximum grade of 85.)

Programs will be graded not only on correctness but also on style. See http://elvis.rowan.edu/~nlt/program_grade.html   for details.

Free compilers/interpreters are available for Scheme, Ada, and Prolog, and you are welcome to develop your homework programs using the compiler and development environment of your choice, either on Rowan's computers or on your own computer. However: I will grade your programs using Scheme48, the GNAT Ada compiler, and SWI-Prolog on elvis. If your program does not compile under elvis's compilers/interpreters, I will grade the program as "not compiling" (about 50 points off). It is your responsibility to copy your programs to elvis, test them, and fix any platform-related inconsistencies before handing the programs in.

Prerequisites:
  1. Data Structures (CS 04.222) or Data Structures for Engineers (CS 04.225): You should be comfortable with the material taught in Data Structures, including stacks, linked lists, and recursion.

  2. Programming: You should have experience writing programs in some high-level language (such as Java, C++, C, Pascal, Ada, or FORTRAN).

  3. Computer Organization (CS 06.205) or Digital I (ECE 09.241)

    For Computer Science majors: Computer Organization (CS 06.205) gives Computer Science majors familiarity with assembly language programming and with the basic concepts of how data are represented inside the computer.

    For ECE majors: Digital I (ECE 09.241) gives ECE students a background in boolean algebra and finite state machines that helps to prepare for the formal language elements of Programming Languages.

    Note: If you have not taken either Computer Organization or Digital I, speak with me to see whether you have other coursework in your background that can provide a comparable level of preparation for Programmming Languages.

  4. You will need some familiarity with the UNIX operating system for the programming portions of the course -- how to use one of the editors, how to print files, and how to do basic file management (copying files, creating directories, and so on).  If you have never used UNIX before, see me and I will recommend some references.

    If you have used either vi or emacs before, I highly recommend that you use one of these editors instead of pico for the Scheme portion of the class. Scheme uses lots and lots of nested parentheses, and both vi and emacs provide automatic parenthesis-checking; pico does not. Using vi or emacs to create Scheme program files can save you many headaches.

Course Topics:
A Programming Languages course has two related but different goals:  to study the concepts underlying the design and use of programming languages, and to gain exposure to a variety of languages.  This pair of goals is reflected in the schedule of readings.  About half of the time in class will be devoted to concepts and the other half to a particular programming language.

Important programming language concepts include programming language paradigms; the history of programming languages; methods for specifying the syntax of languages; and approaches that different languages take regarding features such as data types, parameters, and control constructs.

The two languages we will look at in detail are Scheme (a functional programming language) and Prolog (a logic programming language).  These languages illustrate two approaches to programming that are different from the imperative style of languages like C, C++, and Java.

We will also look at Ada 95, a strongly typed imperative programming language. Ada will be used as the basis for many of the examples in class, since it is a good language for clearly illustrating many programming language concepts, including data types, scope of identifiers, parameter-passing, exception-handling, and concurrency. No prior knowledge of Ada is assumed; I will introduce Ada 95 early in the semester, and we will return to it from time to time throughout the course.

University Policies:

You should be familiar with these university policies:
Rowan University Attendance Policy
Rowan University Academic Integrity Policy

Nancy Tinkham
Computer Science Department, Rowan University

Valid HTML 4.0!