Programming Language Concepts (CS 360)
Assignments and Solutions
- Course Description
Introduces the design and implementation of modern programming languages:
formal theory underlying language implementation; concerns in naming,
binding, storage allocation and typing; semantics of expressions and operators,
control flow, and subprograms; procedural and data abstraction; functional,
logic, and object-oriented languages. Students will construct an interpreter
for a non-trivial language.
This is a required by all Computer Science students. Normally it is taken in the
pre-junior year. The course is available to other students with sufficient programming
experience (see prerequisites) who have an interest in programming languages
(e.g. Information Systems, Computer Engineering, Software Engineering, etc.).
- Course Themes
- Tools to evaluate design of languages
- Tools for describing and analyzing languages, including syntax, semantics, and
- Tools to design new languages
- Programming Paradigms
- Implementation of programming languages
- Course Objectives
- Understand how to compare and evaluate different programming languages.
- Be comfortable with the major programming paradigms and be able to use at least
one language from each paradigm.
- Be familiar with elementary concepts of formal language theory such as
context-free grammars and regular expressions.
- Be able to formally specify the syntax of programming languages.
- Be familiar with the essentials of lexical analysis and elementary parsing
- Understand some of the issues involved in implementation of programming languages.
- Understand dynamic and static scope, dynamic and static binding and the issues
they give rise to.
- Understand the advantages and disadvantages of strong/weak type checking, and
how to type checking is performed.
- Understand the different methods of parameter passing and how they might be
implemented and understand some of the issues involved in calling subroutines.
- Understand generic programming.
- Course Benefits
- Easier to express ideas
- Improved background for selecting appropriate languages
- Easier to learn new languages
- Understand the significance and impact of language choices and constructs
- Able to design new languages (little languages, interface specifications,
- Overall advancement of computing
Undergraduate data structures course (CS 260)
Courses in logic (e.g. CS 270) and (e.g. CS 281) Computer Architecture would be
helpful but are not required. All students should be comfortable with at least
one object-oriented programming language (e.g. java, C++), and it would be helpful
to have seen at least two different languages.
Office: 206 Korman Center
office hours: TBD.
- Jeremy Johnson
Office: Korman 206
office hours: M 3:00-6:00.
- Meeting Time
- R 7:00-10:00 in Commonwealth 310
- Course Mailing List
Please use this list for questions and discussions related to the course.
If you know the answer to someone's question, please feel free to jump in,
as long as well it is not an answer to a homework problem. I will moderate
the list so that frivolous mail and spam is not forwarded.
Robert Sebesta, Concepts of Programming Languages, 5th Ed., Addison-Wesley,
- In addition to the official text book listed below, a variety of resources
for different programming languages will be made available and should be
consulted. Also all students must have access to the necessary compilers
and interpreters for the different languages discussed. All required
compilers/interpreters will be made available on the department of Computer
Science computers. Many, if not all, are publically available.
- Week 1: Overview and introductions to grammars (ch. 1 & 3)
- Week 2: Functional Languages (ch. 15)
- Week 3: Logic Programming Languages (ch. 16)
- Week 4: Syntax, Types, Scanning, and Parsing (ch. 3-5)
- Week 5: Midterm (more on types and type checking)
- Week 6: Data types and Memory allocation (ch. 6)
- Week 7: Program semantics and interpreters (ch. 3)
- Week 8: Control Structures. Iteration versus Recursion and their implementation. Templates in C++ and generic programming and its advantages and pitfalls
- Week 9: Subroutines and Parameter Passing Methods, Implementing subroutines
- Week 10: Abstract data types and object-oriented programming (ch. 11-12).
Grades will be determined from a weighted average using the above distribution.
A curve with the average set to a B will be used, provided the class does sufficiently
well that the average score exhibits a solid understanding of the material.
- Homework assignments (50%) - 5 at 10% each
- Midterm (25%)
- Final Exam (25%)
Assignments and exams will be returned on a regular basis to provide feedback
to students. All students must do their own work. Any violation of this will
result in a zero grade for the assignment. A second violation may lead to an
F for the course.
- John R. Levine, Tony Mason, Doug Brown,
Lex & Yacc,
2nd/updated edition (October 1992), O'Reilly & Associates. An online copy
of this book is available through Drexel's library (safari).
- list reference books here.
- list reference pages here.
Announcements (Last posted June
28 @ 12:30pm)
Look Here for Important Announcements
This list is tentative and may be modified at the instructor's discretion.
- June 1, 2003 (Course Overview and Introduction to Grammars)
Programs and Worksheets
Created: 6/28/03 by firstname.lastname@example.org
- To be posted when appropriate.