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.
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.
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 *** |