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
- Evaluation and implementation of of programming languages
- Tools for describing and analyzing languages, including syntax,
semantics, and pragmatics
- Tools to design new languages
- Programming Paradigms (imperative, functional, logic, object-oriented
- Implementation of programming languages
- Course Objectives
- Be able to compare and evaluate different programming languages and
implement different programming constructs and features
(e.g. variables, loops, procedures, dynamic memory).
- Be able to formally specify the syntax of programming languages.
- Be able to write a parser and a scanner.
- Be able to write a translator to convert from one language to
- Be able to describe the semantics of and implement an interpreter for
a programming language.
- Be comfortable with the major programming paradigms and be able to use
at least one language from each paradigm.
- Course Benefits
- Easier to express algorithmic ideas
- Better able to formally express concepts
- Improved ability to select appropriate languages
- Easier to learn new languages
- Understand the significance and impact of language choices and
- Able to design new languages (little languages, interface
Undergraduate data structures course (CS 260)
Courses in logic (e.g. CS 270 or ECE 200) 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
- Jeremy Johnson
Office: University Crossings 100C
e-mail: jjohnson AT cs DOT drexel DOT edu
office hours: T 1-2, R 5-6, additoinal hours by appointment.
- Xu Xu
Office: University Crossings 147
e-mail: xx27 AT drexel DOT edu
office hours: M 4-6, additoinal hours by appointment.
- Meeting Time
- sec. 1 TR 11-12:20 in UC 153 and sec. 2 TR 3:30-4:50 in Lebow 134
- Course Mailing List
- cs360 AT cs DOT drexel DOT edu
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.
Kennet C. Louden, Programming Languages: Principles and Practice, 2nd Ed., Thomson Brooks/Cole, 2003.
- 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: Computation and Languages (ch. 1)
- Week 2: Syntax: Grammars and Parsing (ch. 3)
- Week 3: Operational Semantics (ch. 5, 13)
- Week 4: Interpreters: Assignment and Control Structures
(ch. 5, 6, 13)
- Week 5: Procedures (ch. 8)
- Week 6: Functional Programming (ch. 11)
- Week 7: Functional Programming and Lambda Calculus (ch. 11)
- Week 8: Semantics: Scheme interpreter and Denotational Semantics
(ch. 13 and SICP)
- Week 9: Logic Programming and Query Languages (ch. 12 and SICP)
- Week 10: Axiomatic Semantics (ch. 13)
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
- Homework assignments (60%) - 4 at 15% each
- Midterm (20%)
- Final Exam (20%)
Assignments and exams will be returned on a regular basis to provide feedback
to students. All students must do their own work (no sharing of code unless
specifically indicated). Any violation of this will result in a zero grade
for the assignment with more severe penalties, including an F for the course,
for repeat offenders . A second violation will be reported to the University
Judicial process F for the course. See Universities Academic Honesty Policy
- 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
- Alfred V. Aho and Jeffrey D. Ullman,
Foundations of Computer Science - C Edition,
W. H. Freeman and Company, 1995.
- list reference books here.
- Ken Louden's Web resources for the text Programming Languages.
- [SICP] Abelson and Sussman, Structure and Interepretation of Computer Programs.
- Graphviz - Graph Visualization Software.
- CUP Reference Manula - Parser generator for Java.
- PLY - Python Lex-Yacc.
- MIT/GNU Scheme
(Last updated Feb. 5 at 1:50pm)
Look Here for Important Announcements
This list is tentative and may be modified at the instructor's discretion.
Week 4: Interpreters - Assignment and Control Structures
(ch. 5, 6, 13.1-2)
Week 5: Procedures (ch. 7, 13)
Week 6: Midterm (ch. 11)
Week 7: Functional Programming and Lambda Calculus (ch. 11)
Week 8: Dynamic Memory Allocation
(ch. 8, 11 and SICP)
Week 9: Semantics of Functional Programs (ch. 11, 13 and SICP)
Week 10: Query Languages and Logic Programming (ch. 12)
Week 11: Final Exam
- Week 1 (Overview and Computation and Languages - ch. 3)
- Week 2 (Overview and Computation and Languages - ch. 4)
- Week 3: Operational Semantics and Interpreters (ch. 5, 13)
Programs and Worksheets
- Assignment 1
(Part I due Mon. Jan. 22 by 11:59pm, Part II due Thur. Feb. 1 by 11:59pm) - Finite State Machine Simulator and Visualizer.
- Assignment 2 (due Mon. Feb. 12 by 11:59pm) - Regular Expression Compiler.
- Midterm (in class on Tue. Feb. 13).
- Assignment 3 (Part I due Fri.
Mar. 2 by 11:59pm and Part II [extended] due Mon. Mar. 12 by 11:59pm) - scheme,
list processing language, and garbage collection.
- Assignment 4 (extra credit -
due Tue. Mar. 19 by 11:59pm) - Logic Programming.
- Mar. 22, 2007 (final exam)
Created: 1/8/06 by jjohnson AT cs DOT drexel DOT edu
- To be posted when appropriate.