Computer Science 331
MWF 11:30-12:20
Walsh 204
Office
: Walsh 112Phone
: 375-2598Office 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
Goal
1: Discipline Specific Learning
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 Programming | 1 week |
The material on Scheme will be split during the semester with part coming before the Scheme project is due and part coming later.