

CSE307
| 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 and 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 |
http://www.cs.sunysb.edu/~cse307 |
|
|