About CS 3360
This page is organized as follows:
Course Description
The following description is excerpted from the Undergraduate Course Catalog:
Design features of modern programming languages including flow control mechanism and data structures; techniques for implementation of these features.
Prerequisites
The prerequisite of this course is CS 3331 with a grade of C or better.
Course Texts
The course textbook is:
Robert W. Sebesta, Concepts of Programming Languages, 9th edition, Addison-Wesley, 2009.
Supplemental readings will be taken from the Web or hard copies will be handed out in class. The textbook is available at the UTEP bookstore, and you are expected to acquire a copy for your use in this course, as reading assignments will be taken from the textbook.
Course Objectives
In this course we will study concepts and examples of programming languages with the goal of acquiring the tools necessary for critical evaluation and rapid mastery of programming languages and constructs.
The course attempts to balance theory and hands-on experience. We will survey the constructs and capabilities typically found in modern programming languages with attention to design trade-offs and implementation considerations. By gaining an understanding the range of possibilities likely to be encountered in a language, students will be prepared to learn new languages quickly throughout their careers. By understanding the implications of design alternatives, students will be better able to anticipate the problems likely to arise in using a new language. Also, the presentation of design alternatives and trade-offs lays the groundwork for future advanced study of compilers and programming language semantics. To instantiate the discussion of general programming language characteristics, several languages will be presented in more detail: e.g., AspectJ (an aspect and object-oriented language), Haskell (a functional language), Prolog (a logic-programming language), and PHP (a Web scripting language). Students will gain practical experience with each programming paradigm by completing a programming project in each of the chosen languages.
Learning Outcomes
Level 3: Synthesis and Evaluation
Level 3 outcomes are those in which the students can apply the material in new situations. This is the highest level of mastery.
Upon successful completion of this course, students will be able to
- Evaluate modern, representative programming languages critically
- Choose a suitable programming paradigm and language for a given problem or domain
- Design a small, domain-specific programming language, e.g., a test script language, by defining its formal syntax and semantics
Level 2: Application and Analysis
Level 2 outcomes are those in which the student can apply the material in familiar situations, e.g., can work a problem of familiar structure with minor changes in the details.
Upon successful completion of this course, students will be able to
- Define syntax of a small context-free grammar in BNF and EBNF
- Use attribute grammars to describe the static semantics of small programming languages
- Define dynamic semantics of small subsets of programming languages, e.g., expressions and control structures
- Evaluate different approaches to naming, storage bindings, typing, scope, and data types
- Select and apply appropriate expressions and control structures for a given programming task
- Analyze design dimensions of subprograms, including parameter passing methods, subprograms as parameters, and overload subprograms
- Analyze and evaluate data and control abstractions of programming languages
Level 1: Knowledge and Comprehension
Level 1 outcomes are those in which the student has been exposed to the terms and concepts at a basic level and can supply basic definitions. The material has been presented only at a superficial level.
Upon successful completion of this course, students will be able to
- Explain the broad outlines and major names in the history of development of programming languages
- Recognize major programming languages
- Explain the stages of programming language interpretation and compilation
- Understand context-free grammars and (E)BNF notations
- Explain operational semantics, axiomatic semantics, and denotational semantics as methods of expressing programming language semantics
- Explain design concepts, design alternatives and trade-offs, and implementation considerations for scope, binding, data types, expressions, control structures, subprograms, abstract data types, objects, concurrency structures, and exception handling in modern programming languages
Last modified by Yoonsik Cheon: $Id: description.html,v 1.7 2009/08/06 17:29:08 cheon Exp $