Programming Languages
Computer Science
Bryn Mawr College

CS245 - Syllabus - Fall 2002

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:
Week
Notes
Topic
1
(1/15 Last Add/Audit Day)
Introduction; Using the Tools | Coding; TSPL
2 Scheme, the Language Ch 1 EOPL | TSPL, cont.
3 Scheme, the Language cont. Ch 2 EOPL
4
Exam # 1
EOL Chapter 5: Interpreters
5
EOL Chapter 5: cont.
6 EOL Chapter 5: cont.
7 EOL Chapter 5: cont.
8
Paper Topics Due
Syntaxes: C++, Perl, Java, C.
9 Exam #2 EOL Chapter 6: Parameters
10 No classes (Spring Break)
11
(3/26 Last day to drop)
EOL Chapter 7: Objects
12
EOL Chapter 8: CPS
13 Recursion
14 Meta Language
15 Meta Language
16
(5/1 Dead Day)
Review; Final Papers Due

FINAL EXAM: