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:
- 100-page mini manuals on a small number of languages
- Self-grading review exercises composed of multiple-choice and fill-in-the-blank questions are available using the Addison-Wesley software.
-
- 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-
- To teach the skills needed for comparing and evaluating the structure and design of programming language
- To explain and trace the major milestones in the evolution of programming languages
- To increase the students vocabulary of useful programming constructs
- To allow a better choice of a programming language to solve a particular problems
- To understand the core concepts of different programming paradigms
- To understand the different approaches to defining programming language syntax and semantics
- To understand how basic data types and data structures are implemented
- To provide a methodology for studying and learning new languages
- To improve student's understanding of the language they are currently most proficient in using
- To use the understanding gained to contemplate future trends in language design and to help advance the field of computing
- To allow a better choice of programming language
- 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
- To make it easier to see the differences and similarities among languages and to learn new ones
- To illustrate how different languages have implemented different constructs and concepts
- To increase your capacity to express ideas
- 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:
- preliminary exam 1 (1 hr. 15 min.) - 15%
- preliminary exam 2 (1 hr. 15 min.) - 15%
- final exam (2 hrs.) - 20%
- homework, class preparedness and participation - 14% (1% each week)
- language project
- (6 comparison papers @6% each) - 36%
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 students 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