CSE 307 Back to CSE Courses

Course CSE307
Title Principles of Programming Languages
Credits 3
Course Coordinator C.R. Ramakrishnan
Current Catalog Description

Presents examples of important programming languages and paradigms such as LISP, ALGOL, ADA , ML, Prolog, and C++. Students write sample programs in some of the languages studied. The languages are used to illustrate programming language constructs such as binding, binding times, data types and implementation, operations (assignment data-type creation, pattern matching), data control, storage management, parameter passing, and operating environment. The suitability of these various languages for particular programming tasks is also covered.

Prerequisite

CSE 219 or CSE 260 and CSE 220

Course Goals
  • Have a firm grasp of different language features included in common languages such as C, C++, Java and Standard ML; understand the benefits and drawbacks of these features.
  • Have a clear understanding of the different language paradigms, their benefits and drawbacks. Understand and appreciate the distinctions between imperative versus declarative languages; functional versus logic versus object-oriented languages.
  • Understand how various language features are implemented, with a view to better understand design choices and trade-offs in a language, and most importantly, become more effective programmers whatever language you choose to program in.
  • Acquire a good working knowledge of different programming styles and develop discipline in programming. Understand and use modern language features such as abstract data types, type-safe programming, inheritance, higher-order functions, etc.
Textbook
  • Programming Languages Principles & Practice, Kenneth Louden 2nd edition, Thompson ISBN: 0-534-95341
Major Topics Covered in Course

Provide an introduction to programming languages as an intellectual discipline; through topics such as at the end of this course, a student should have a deep, working knowledge of the key concepts, features and ideas used in modern programming languages. More specifically: Read and understand the new languages quickly from their descriptions, and also be able to describe and document languages. This is a necessary skill to survive in computer science.

  • Principles of Language Design
  • Specification of Language Syntax
  • Survey of Procedural and OO Languages
  • Intro. to Functional Programming
  • Intro. to Logic Programming
  • Programming Language Semantics
  • Values
  • Bindings
  • Types
  • Programming Language Constructs
  • Expressions
  • Statements
  • Procedures and Environments
  • Parameter Passing
Laboratory Projects
  • Syntax and grammars, 1 week
  • Functional Programming, 2 weeks
  • Logic Programming, 2 weeks
  • Programming Language Semantics, 2 weeks
  • Run-time Structures: Interpreters, 2 weeks
Course Webpage /~cse307
Department of Computer Science • Stony Brook University, Stony Brook, NY 11794-4400 • 631-632-8470 or 631-632-8471