Computer Science 331

Principles of Programming Languages
Spring 2014

MWF 11:30-12:20 
Walsh 204

Instructor: David Levine

Office: Walsh 112

Phone: 375-2598

Email: dlevine@sbu.edu

Office Hours: M 10:30-11:30, Tu 10-11, W 3:30-4:30, Th 1-2, F 10:30-11:30 and by appointment

Course Web Page

In general, announcements, readings, assignments, and laboratory exercises for CS 331 will be given in class AND published on the course web page.  Students are expected to check that page regularly for news, and are nonetheless responsible for any assignment announced in either manner.  The course web page can be found at http://www.cs.sbu.edu/dlevine/CS331/.   

Text

    Robert Sebesta, Concepts of Programming Languages, 10th ed., Addison-Wesley, ISBN 978-0131395312

Catalog Description

A study of the fundamental principles around which programming languages are designed.  Topics include language specifications, data types, control statements, support for abstraction, and program organization.  Students will be exposed to issues involving compilation, interpretation, lexical analysis, and parsinng as well as to languages in each of the major paradigms.  The course includes three lecture hours per week.  Prerequisite: CS 232.

Course Overview

Computer Science 331 examines questions about programming language design.  It explores various language paradigms and studies the support for various features within those paradigms.  Standard formalisms for describing the syntax and semantics of languages are studied and a variety of languages are used throughout the course as examples.  It would be a mistake, however, to think of this as a "language of the week" course.  Students will become more familiar with the languages they already know and will study Scheme in more depth as an example of a language in a contrasting paradigm.  Students will also (individually) be exposed to at least one other language.

Course Goals

This course has the specific goal of ensuring that students understand the unifying and differentiating properties of various programming languages and to ensure that each computer science major has engaged in a major writing assignment as part of the major curriculum.  The two language projects (Scheme and "free choice") are designed to support these goals.

Within the context of the Department's formal goals and objectives, the course content and format directly address Objectives 1  and 2 of Goal #1.  The Scheme project directly addresses Objective 4 of Goal #2 .  The two papers reflect work towards the first part of Objective 4 of Goal #3.  These goals and objectives are reproduced below:

Goal 1:  Discipline Specific Learning

Objectives:

1.   Students will learn core concepts of the discipline as determined by a nationally recognized professional computer science education organization.

2.   Students will understand and analyze algorithms written in pseudo-code.

Goal 2:  Reasoning and Inquiry Skills

Objectives:

4.   Students will complete at least one project using a significant technology in the discipline without direct instruction.

Goal 3:  Communication Skills

Objectives:

4.   Students will be given the opportunity to present results of their work in oral and written forms; this will include the presentation of posters and/or papers intramurally and extramurally.

Attendance

As mature college students, it is expected that all class members can make reasonable decisions about attending class and what constitutes a legitimate excuse for missing class.  Roll will not be taken in class (after the roster has stabilized), but students are cautioned that there will be some material covered in class that is not in the textbook and that missing a class may result in their being inadequately prepared for the homework.

In ALL cases, if a student misses class, it is the student's responsibility (and not the instructor's) to learn about pending work and to make arrangements for the timely submission of any assignments. br> 

Grading

The final grade will be determined by a combination of  items as determined by performance on examinations and on written assignments.  The final grade will be determined approximately as follows: 
 

Best five (of eight) quizzes

30% 

Final examination

30%

Homework (including all work turned in for a grade and all presentations of problems during class)

40%

 

Final Examination

The final exam is Friday May 2, at 10:35 a.m. and will be comprehensive.  

Disabilities

Students with disabilities who believe that they may need accommodations in this class are encouraged to contact the Disability Support Services Office, Doyle Room 26, at 375-2065 as soon as possible to better ensure that such accommodations are implemented in a timely fashion.

Collaboration

Assignments for this course fall into two main categories: problem sets (generally) from the text, and programming assignments. In both cases, the collaboration policy is the same. As specified in the department's Academic Practices and Policies document, these are to be treated as Individual Projects With Limited Collaboration. In particular, you may discuss the assignment and concepts related to the assignment with the following persons, in addition to an instructor in the course: any St. Bonaventure University student enrolled in CS 331, and any other person specifically approved by your instructor. You may use the following materials produced by other students: NONE.

  In addition, if you do collaborate with anyone other than the instructor, there must be a note to that effect at the top of the solution you turn in.

Academic dishonesty in any form will not be tolerated.  Typically the first offense will, at a minimum, result in a zero on the assignment in question.  Repeated offenses will likely result in a failing grade for the course.  Any offense deemed punishable will also be referred to the Dean of Arts and Sciences. 

Lateness

Late work will be accepted without penalty only under very unusual circumstances.  In general, if work is received the day that it was due, but after the deadline, the penalty will be 10%.  Work received on subsequent days will be penalized at a rate of 25% per day, subject to a maximum penalty of 75%.  Work over two weeks late will not be graded at all, however.

Tentative Schedule

Basically, we will be covering the entire text, although we will be covering some portions fairly lightly.  The pace of the course will be determined somewhat by the abilities of the students, but an approximate notion of where we will be is given below.  Specifics will be given on the course web page as the semester progresses.

Chapters 1-2 - The groundwork

1 week

Chapters 3-4 - Formal descriptions of languages

2 weeks

Chapter 5 - Names and Scopes

1 week

Chapters 6-8 - Standard Programming Constructs

2 weeks

Chapters 9-10 – Subprograms

2 weeks

Chapters 11-12 – Object-orientation

2 weeks

Chapters 13-14 – "Advanced" features

2 weeks

Chapter 15 - Functional Programming (Scheme)2 weeks
Chapter 16 - Logic Programming1 week

The material on Scheme will be split during the semester with part coming before the Scheme project is due and part coming later.