CS245 Programming Languages. This course will introduce many of
the principles of programming language design and implementation. We
will discuss various language features and the algorithms and data
structures that are needed to provide these features. Labs will
emphasize the use of various features, and written homework will focus
on high-level understanding the algorithms and data structures
involved. CMSC 350, Compiler Design, provides more in-depth
information about some of these algorithms and data structures.
Prerequisite: CS 206
Meeting: TR 10:00-11:30a Park 232
Textbooks: Essentials of Programming Languages, second
edition, by D. Friedman, M. Wand, and C. Haynes (ISBN 0-262-06217-8);
The Scheme Programming
Language, by K. Dybvig. Readings will be placed on reserve
throughout the semester.
Objectives: This course is meant to be an introduction to
issues in programming languages. You will get a hands-on experience
with some deep, and important, aspects of language design. However,
rather than simply writing programs in many languages, you will
actually implement a language. This can be accomplished (in
a single semester) by creating an interpreter that models a
base language. We will also be looking at syntax of some languages,
including Scheme/Lisp, Perl, Java, C++, Python, etc.
Instructor: Douglas S. Blank, PhD.
Office: Park 246B
Office hours: 10am-12pm Monday and Wednesday. If you want or need an appointment outside of regular office hours, please feel free to email me.
Phone: 610.526.6501
WWW: http://dangermouse.brynmawr.edu/
Email: dblank@cs.brynmawr.edu. Also, you may check current class status, grades, assignments from my homepage.
Grading: Late homework assignments will not be accepted, except in extenuating circumstances. There will likely be three (3) exams and a project. Homework assignments must be done independently.
Grading break down:
Homework 40% Project 20% Exams 30% Attendance and Participation 10%EXTENSIONS: Tests may not be taken late without advance permission. Extensions are usually granted ONLY for family emergencies, infirmary or hospital stays, or similar major crises.
MISC: Students who think they may need accommodations in this course because of the impact of a disability are encouraged to meet with me privately early in the semester. Students should also contact Stephanie Bell, Coordinator of Accessibility Services, at 610-526-7351 in Canwyll House, as soon as possible, to verify their eligibility for reasonable accommodations. Early contact will help to avoid unnecessary inconvenience and delays.
Systems: We will be using petite, a Scheme interpreter.
It is installed on all of the Unix/Linux machines. You will need to
know how to use: a Web browser, petite, emacs, and
email. Each of these programs will be explained in class.
Schedule:
| 1 | Introduction; Using the Tools | Coding; TSPL | |
| 2 | Scheme, the Language Ch 1 EOPL | TSPL, cont. | |
| 3 | Scheme, the Language cont. Ch 2 EOPL | |
| 4 | EOL Chapter 5: Interpreters | |
| 5 | EOL Chapter 5: cont. | |
| 6 | EOL Chapter 5: cont. | |
| 7 | EOL Chapter 5: cont. | |
| 8 | Syntaxes: C++, Perl, Java, C. | |
| 9 | Exam #2 | EOL Chapter 6: Parameters |
| 10 | No classes (Spring Break) | |
| 11 | EOL Chapter 7: Objects | |
| 12 | EOL Chapter 8: CPS | |
| 13 | Recursion | |
| 14 | Meta Language | |
| 15 | Meta Language | |
| 16 | Review; Final Papers Due |
FINAL EXAM: