Programming Language Concepts (CS 360)

 Announcments  Lectures  Programs  Course Resources   Assignments and Solutions  Grading Policy
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.
Audience
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
  1. Tools to evaluate design of languages
  2. Tools for describing and analyzing languages, including syntax, semantics, and pragmatics
  3. Tools to design new languages
  4. Programming Paradigms
  5. Implementation of programming languages
Course Objectives
  1. Understand how to compare and evaluate different programming languages.
  2. Be comfortable with the major programming paradigms and be able to use at least one language from each paradigm.
  3. Be familiar with elementary concepts of formal language theory such as context-free grammars and regular expressions.
  4. Be able to formally specify the syntax of programming languages.
  5. Be familiar with the essentials of lexical analysis and elementary parsing procedures.
  6. Understand some of the issues involved in implementation of programming languages.
  7. Understand dynamic and static scope, dynamic and static binding and the issues they give rise to.
  8. Understand the advantages and disadvantages of strong/weak type checking, and how to type checking is performed.
  9. Understand the different methods of parameter passing and how they might be implemented and understand some of the issues involved in calling subroutines.
  10. Understand generic programming.
Course Benefits
  1. Easier to express ideas
  2. Improved background for selecting appropriate languages
  3. Easier to learn new languages
  4. Understand the significance and impact of language choices and constructs
  5. Able to design new languages (little languages, interface specifications, protocols)
  6. Overall advancement of computing
Prerequisites
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.
Instructor
Sam Moelius
Office: 206 Korman Center
phone:
e-mail: smoelius@cs.drexel.edu
office hours: TBD.
Course Coordinator
Jeremy Johnson
Office: Korman 206
e-mail: jjohnson@cs.drexel.edu
office hours: M 3:00-6:00.
Meeting Time
R 7:00-10:00 in Commonwealth 310
Course Mailing List
cs360@imap.cs.drexel.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.
Textbook


Topics

  1. Week 1: Overview and introductions to grammars (ch. 1 & 3)
  2. Week 2: Functional Languages (ch. 15)
  3. Week 3: Logic Programming Languages (ch. 16)
  4. Week 4: Syntax, Types, Scanning, and Parsing (ch. 3-5)
  5. Week 5: Midterm (more on types and type checking)
  6. Week 6: Data types and Memory allocation (ch. 6)
  7. Week 7: Program semantics and interpreters (ch. 3)
  8. Week 8: Control Structures. Iteration versus Recursion and their implementation. Templates in C++ and generic programming and its advantages and pitfalls (ch. 7-9).
  9. Week 9: Subroutines and Parameter Passing Methods, Implementing subroutines (ch. 9-10).
  10. Week 10: Abstract data types and object-oriented programming (ch. 11-12).


Grading

  1. Homework assignments (50%) - 5 at 10% each
  2. Midterm (25%)
  3. Final Exam (25%)
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.

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.


Resources

Reference Books
  1. 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).
  2. list reference books here.
Web Pages
  1. list reference pages here.


Look Here for Important Announcements

Announcements (Last posted June 28 @ 12:30pm)


Lectures

This list is tentative and may be modified at the instructor's discretion.
  1. June 1, 2003 (Course Overview and Introduction to Grammars)


Programs and Worksheets


Assignments

Solutions

 
Created: 6/28/03 by jjohnson@cs.drexel.edu