About CS 3360

This page is organized as follows:

  1. Course description
  2. Prerequisites
  3. Course texts
  4. Course objectives
  5. Course outcomes

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

  1. Evaluate modern, representative programming languages critically
  2. Choose a suitable programming paradigm and language for a given problem or domain
  3. 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

  1. Define syntax of a small context-free grammar in BNF and EBNF
  2. Use attribute grammars to describe the static semantics of small programming languages
  3. Define dynamic semantics of small subsets of programming languages, e.g., expressions and control structures
  4. Evaluate different approaches to naming, storage bindings, typing, scope, and data types
  5. Select and apply appropriate expressions and control structures for a given programming task
  6. Analyze design dimensions of subprograms, including parameter passing methods, subprograms as parameters, and overload subprograms
  7. 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

  1. Explain the broad outlines and major names in the history of development of programming languages
  2. Recognize major programming languages
  3. Explain the stages of programming language interpretation and compilation
  4. Understand context-free grammars and (E)BNF notations
  5. Explain operational semantics, axiomatic semantics, and denotational semantics as methods of expressing programming language semantics
  6. 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 $