Department of Computer Science 
CS 250 - Programming Languages

COURSE OBJECTIVES:   This course is a study of the formal specification, design, and applications of programming languages and paradigms, paying special attention to object-oriented programming (using C++ and Java), functional programming (using Common Lisp), and logic programming (using Prolog). The design principles include syntax, semantics, interpreters, data types and data structures, binding, scope, modularity, abstraction, control, memory management, and implementation.

A "programming paradigm" is a distinguished style of problem solving and algorithm development. We are already familiar with the imperative (or procedural) paradigm, which is the most common and widely used. However, different paradigms are used in various other application domains. For instance, object-oriented programming is widely used in software engineering, interactive programming is used in Web-based programming, and functional and logic programming are widely used in artificial intelligence applications.

Linux implementations of Java, Lisp, and Prolog will be used to support the laboratory work for this course. The course includes lectures, discussions, and occasional student presentations.  Two tests, biweekly laboratory and written assignments, and one larger laboratory project will comprise the major work for the course.

 
PRIMARY TEXTS (required):  Tucker and Noonan, Programming Languages: Principles and Paradigms
Supplementary handout (to be provided in class).
INSTRUCTOR:  Eric Chown, 219 Searles Hall
Email address: echown@bowdoin.edu
Web address: http://www.bowdoin.edu/~echown (select the CS250 link for this syllabus and all assignments)
Office Hours: M 2:30-4:00, W 2:30-4:00, or by arrangement
MEETING TIMES:  MWF 10:30am, Searles 223

COURSE WORK:  Each assignment will be due on the Monday following the 1- or 2-week period where it appears in the outline.  Assignments will typically include a programming part along with a set of questions. The programming parts of assignments can be done individually or in teams of two; the written questions must be answered individually.

You are encouraged to discuss ideas and techniques broadly with other class members, but not specifics of assigned problems except as part of group projects. Discussions should be limited to questions that can be asked and answered without using any written medium (e.g. pencil and paper or email). This means that at no time should a student read any code written by another student unless they are part of the same group. Sharing of code or intermediate designs is expressly prohibited. Violation of this policy is grounds for me to initiate an action that would be filed with the Dean's office and would come before the J Board. If you have any questions about this policy, PLEASE do not hesitate to contact me. This will be a zero-tolerance policy.

It is permissible to use software and materials available from other sources (understanding that you get no credit for using the work of others on those parts of your projects) as long as: 1) You acknowledge explicitly which aspects of your assignment were taken from other sources and what those sources are. 2) The materials are freely and legally available. 3) The material was not created by a student at Bowdoin as part of this course this year or in prior years.

All write-ups, reviews, documentation, and other written material must be original and may not be derived from other sources.

Late Policy

To be considered on time, assignments must be turned in at the specified time on the due date. Each student has a total of four late days that can be used throughout the semester. Thus, during the semester a student can turn in assignments so that the total number of days late does not exceed four without any penalty. For example, a student could turn in four different assignments, each one day late, or all assignments on time except one that is four days late. Saturday and Sunday count as a single day, so that if an assignment is due on Friday, but turned in on Monday, it is late by two days.

Once the number of late days exceeds a total of four, late assignments will be assessed a penalty of 10% of the assignment's available points per day. Since I provide the late days, I will not grant extensions.

COURSE OUTLINE:
 
Week of  Topics  Primary Readings  Work Due
Jan 22 Introduction: programming language design, paradigms, implementation, syntax, formal methods, BNF chapter 1, 2.1-2.2 Assignment 1
Jan 29 Concete and abstract syntax; syntax of statements, expressions, and programs chapter 2.2-2.5
Feb 5 Semantics chapter 3
Feb 12, 19 Imperative Programming chapter 4
Feb 26, Mar 5 Memory Management chapter 5
Mar 12 Object Oriented Programming Chapter 7
Mar 19, 26 *** Spring Break ***
April 2 Object Oriented Programming chapter 7
April 9, 16 Functional programming chapter 8
Apr 23, 30 Logic programming: Horn clauses, relations, facts, and Prolog; resolution, unification, applications in natural language processing. chapter 9
May 7
(2/3 week)
Final project selection and discussion
May 13 *** Project presentations ***