COS 301 - Programming Languages

Larry Latour
Fall, 2007
Course Description:
Formal description of programming languages including specification of syntax and semantics. Discussion of infix, prefix, and postfix notation with translation techniques. Topics include branching, grouping of statements, storage allocation, list and string processing, relation of language design to efficiency
Satisfies the General Education Writing Intensive Requirement.
Prerequisites & Notes
COS 226 and COS 250.
Credits: 3 .
Place and Time:
Tuesday/Thursday, 11am-12:15pm, NV208, Neville Hall.
Instructor:
Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Dept. Tel: 581-3941
Office Tel: 581-3523
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
Office Hours: Tuesday/Wednesday/Thursday 1-2pm or by appointment
Required Textbook:
Concepts of Programming Languages (8th Ed.) by Robert W. Sebesta,
Addison-Wesley. Boston. MA. 2007.
Companion Web site ( www.aw.com/cssupport) for students containing the following:
NOTES: The lecture slides in PowerPoint will be distributed by the instructor on the COS301(Latour) Firstclass conference and the majority of the other handouts will be available FirstClass .

Course Goals:

The major goal for the course is nicely stated by Sebesta -“To study the important and general structural characteristics of high-level languages and associated implementation concepts and strategies.”

Other course objectives include-

  1. To teach the skills needed for comparing and evaluating the structure and design of programming language
  2. To explain and trace the major milestones in the evolution of programming languages
  3. To increase the students vocabulary of useful programming constructs
  4. To allow a better choice of a programming language to solve a particular problems
  5. To understand the core concepts of different programming paradigms
  6. To understand the different approaches to defining programming language syntax and semantics
  7. To understand how basic data types and data structures are implemented
  8. To provide a methodology for studying and learning new languages
  9. To improve student's understanding of the language they are currently most proficient in using
  10. To use the understanding gained to contemplate future trends in language design and to help advance the field of computing
  11. To allow a better choice of programming language
  12. To prepare the student with the core knowledge in design and implementation of programming languages to pursue advanced courses in programming design and implementation or a course in compilers
  13. To make it easier to see the differences and similarities among languages and to learn new ones
  14. To illustrate how different languages have implemented different constructs and concepts
  15. To increase your capacity to express ideas
  16. To see how existing languages have addressed the general structural characteristics of high-level languages and associated implementation concepts and strategies discussed in class.

ADA Notice:

If you wish to request an accommodation for a disability, please contact Ann Smith, Director of Services for Students with Disabilities (East Annex, 581- 2319) as early as possible in the term.


Course Outline:

The course outline is closely aligned with the required text.
I: Language Overview

1. Introduction
Reasons for studying programming, evaluation criteria, design influences and trade-offs, implementation methods, programming environments.
2. Language Evolution
An overview of major programming languages, historical perspective, design process, major features, and overall evaluation.

II: Language Syntax, Semantics, and Implementation

3. Syntax and Semantics
Definition, formal methods, attribute grammars, dynamic semantics.
4.Lexical and Syntax analysis
Compiler internals, lexical analysis, recursive-descent and bottom-up parsing.

III: Basic Elements of Programming Languages

5. Names Variables, Bindings, Type Checking, and Scope
6. Data Types
Primitive, character, user-defined ordinas, arrays, records/unions, pointers and references.
7. Expressions and Assignment Statements
Arithmetic, relational, and boolean expressions, overloading, type casting and conversion, short-circuit evaluation, assignment.
8. Statement Level Control Structures
Selection, iteration, branching, non-deterministic commands.

IV. Abstraction Mechanisms in Programming Languages

9. Subprograms
Fundamentals and design issues, referencing environments, parameters, overloading, generics, functions, co-routines, processes.
10. Subprogram Implementation
Stack-based compiler details, nesting, block structure, static and dynamic scoping.
11. Abstract Data Types snd Encapsulation
Data abstraction, design issues, parameterized types, naming.

V. Advanced Elements of Programming Languages

12. Concurrency
Subprogram-level concurrency, OS concepts from language perspective - semaphores, monitors, message passing, rendezvous, threads
13. Exception and Event Handling
General approaches and language examples.

VI. Programming Language Paradigms

14. Object-Oriented Programming
Design issues and object models, language examples, implementation issues.
15. Functional Programming Languages
Fundamentals, LISP and Scheme, ML, applications, comparison to imperative languages.
16. Logic Programming Languages
Predicate Calculus based, programming as theorem proving, Prolog, applications.

NOTE: THE INSTRUCTOR RESERVES THE RIGHT TO REVISE, MODIFY, AMEND OR CHANGE THE ABOVE FORMAT AND POLICIES AT HIS SOLE DISCRETION AS CLASS CIRCUMSTANCES CHANGE. CHANGES WILL NORMALLY BE ANNOUNCED IN CLASS WHEN APPLICABLE.


Grading:

Grades will be using the (+/-) grade scale based on the following work: Incomplete Grades: The "I" grade (incomplete) indicates that the decision on a final course grade has been postponed because work ordinarily expected to be completed by the end of the semester has not been finished as the result of circumstances beyond the control of the student. The "I" grade is not a postponement for an "F" grade! An incomplete grade is not a guaranteed option selected by the student but must have the approval of the Instructor. The “I" grade will be considered only in very rare cases and only when there is a reasonable expectation that the incomplete work can be completed in a reasonable amount of time. Normally the work must be completed and the grade filed by the tenth week of the next full semester.

Students need to complete all exams AND all 6 project writeups, to be eligible for a passing grade. No makeup exams are given unless the circumstances warrant. Work will only be accepted if reasonable care and effort on the part of the student is evident.

Class preparedness and participation: Students must come prepared to discuss the text readings, text examples, and homework solutions on the due date.

Class attendance is a very important ingredient for learning the material associated with this course. Much of the insight for understanding material included in the course occurs through questions and discussions within the classroom that may not be covered in the text or lecture notes. Therefore, it is expected that students will attend class regularly. Notify me as soon as an unavoidable absence is anticipated.

Class attendance will also directly affect a grade in the course through class participation, homework, and exams. Each week consists of class attendence, class participation, and possibily project and homework assignments for review. Therefore each week the student will recieve 1% of the final grade if and only if the requirements for that week are met.

The student is responsible for all material presented in lectures regardless of whether it is covered in the text or in class. It is the student's responsibility to determine the material covered in any class he/she is absent from and to make it up. NOTE: From previous classes it has been shown that there is a high correlation between a student’s final grade and class attendance!

Homework and Project completeness and timeliness: All homework submissions (1) must be complete, (2) typed (or NEATLY-written if necessary), (3) must have a cover page containing the student's name, class, project/homework number, list of problems, and (4) must be stapled in the upper left-hand corner. Project paper submissions must be submitted in electronic form in order for the grader to easilty review your work and test for plagerism. Although I won't take points off for homework (not project) lateness, not having homework completed on time will adversely affect the student's class preparedness and participation grade, and will usually adversely affect their performance on exams. Also, students should not expect late homework to be graded and returned in a timely manner.


Last updated: 9/3/07