COSC355 - Programming Language Concepts

Spring 2006

www.central.edu/homepages/fyfes/courses/pl/



TEXTBOOK:
Concepts of Programming Languages seventh edition, by Robert Sebesta. Addison Wesley Publishing.

Additional articles as provided.


INSTRUCTOR: Stephen Fyfe OFFICE: 231 Vermeer Science Center
PHONE: 628-5305
HOME 628-9955
EMAIL: fyfes@central.edu
OFFICE HOURS: MWF 11:00 - 12:00
T/TH 1:00 - 3:00
Other times by appointment, or just stop in

COURSE DESCRIPTION: A study of the organization of programming languages including syntax, semantics, data typing, data structuring facilities, exception handling and sequence control. Different language paradigms will be examined including object-oriented, functional and logic.


COURSE OBJECTIVES: The objectives for this course include:


COURSE PROCEDURES: This course will use lecture, discussion, and laboratory work in the presentation of the course material. A typical class session might include an introductory lecture, followed by lab time where students either work on exercises or write a short program to investigate some question related to the topic of the day. The class would end with a discussion of the investigation, and an assignment for students to investigate other questions related to the topic. This format will vary as needed through the semester. Three tests and a final exam will be given through the semester. Assignments are likely to be one of two types: they will be either be short written assignments or short programming assignments. The written homework will also test the students ability to communicate about computer science in addition to testing the students understanding of the topic (i.e. answers will likely need to be more than one sentence!).


SOFTWARE/HARDWARE: Most or all of the work will be done with 3 different languages: Java, Scheme, and Prolog. Free compilers/Interpreters will be used, and will be available for students to download and use on their computers at home. In some instances we will study a language, but may not write any programs in that language.


GRADING PROCEDURES: Students will be evaluated on their understanding of the concepts being covered in class, and their ability to apply those concepts in homework problems and programming projects.

The final grade will be determined by the following distribution:

Programming Problems and Written Homework40%
3 Tests45%
Final15%

and the following TENTATIVE scale will be used to determine the final grade

94 - 100A70 - 74C
90 - 93A-67 - 69C-
87 - 89B+62 - 66D+
83 - 86B58 - 61D
80 - 82B-55 - 57D-
75 - 79C+00 - 54F
Homework and exercises will be due by class time on the day they are due so that they may be discussed in class that day. Late work will be accepted, but will lose points at the discretion of the instructor. After an assignment or project has been discussed in class, the late penalty will be severe (at least 1/2 the points).

Notification of participation in college sanctioned events. Mock Trail participants, choir tour participants, athletes, and others who must miss a class for participating in a college sanctioned event are expected to notify me in advance and complete work including tests in advance of the absence. It is the student's responsibility to communicate with me in advance regarding their absences and determine a schedule for make up work.

Academic Honesty. Collaboration in Computer Science, as in almost any field, is very important. It is important that individual students learn the material. When working on homework assignments, you are encouraged to discuss your answers with other students. However, you should understand the answers you are turning in! When developing a program it is often beneficial to talk with others to get their input, however you should not be turning in the work of another individual or group. It is acceptable to look at another individuals code if you are assisting them. You should not, however, let someone look at your code in order to show them how you did it, or to give them specific instructions on how they should change their code (other than to find syntactical errors). If you are getting help, you should not be looking at someone else's code!

Plagiarism and cheating of any form are serious offenses and may result in an F for the assignment, the course, or expulsion from the college. The details of Central's Academic Integrity policy are found in the Student Handbook, on the web. A copy will be sent to you via e-mail during the first week of the semester. It is your responsibility to read and understand the contents of that policy before you submit work to be graded. Questions regarding the policies and enforcement of the policies may be addressed to me during class or during office hours.


ADA Policy
Central College abides by interpretations of the Americans with Disabilities Act and Section 504 of the Rehabilitation Act of 1973 that stipulates no student shall be denied the benefits of an education “solely by reason of a handicap.” Disabilities covered by law include, but are not limited to, learning disabilities, hearing, sight or mobility impairments, and other health related impairments. If you have a documented disability that may have some impact on your work in this class and for which you may require accommodations, please see me and Nancy Kroese, Director of Student Support Services and Disability Services Coordinator, (x5247) so that such accommodations may be arranged.


COURSE SCHEDULE: The following is a TENTATIVE order in which the topics of the class will be covered. Changes may be made during the semester as needed. Check the webpage for links to pages which will list the homework problems and possibly give more information about some of the problems.

Week TopicChapter
1Introduction
Language Evaluation Criteria
History of programming languages
Chapter 1
Chapter 2
Dobbs Articles
2Describing Syntax
BNF grammars
XML documents
Chapter 3
3Lexical Analysis and Parsing
Parsing an XML document
Chapter4
4 Names, Binding, Type Checking, and Scope Chapter 5
5Data Types
Expressions and Assignment
Chapters 6, 7
6 TEST I Chapter 8
7Subprograms Chapter 9 and 10
8 Abstraction and Encapsulation
Concurrency overview
Threads
Chapter 11
Chapter 13 - threads
9SPRING BREAK
10Concurrency
message passing and mpi
Chapter 13 - mpi
11 More Concurrency Chapter13 - Producer/Consumer
12 Fundamentals of Functional Languages Chapter 15
13 TEST II
Functional languages
Chapter 15
14Functional languages
15Final Project Final Project
16Final Project Chapter 16
17 Final Exam