You are on page 1of 4

CS 4337: Programming Languages

Shyam Karrah Office: ES 2.502


Phone: 972-883-4197 E-mail: skarrah@utdallas.edu

Office Hours: Monday/Wednesday 1:00 – 5:00 pm

Prerequisites: CS 2336 or CS 3333 and CS 2305.

Text: Programming Languages – Concepts of Programming Languages, seventh edition,


Robert Sebesta, (Addison Wesley Publication, 2005).

Objectives:

After successful completion of this course, the student should have an;

Ability to identify the characteristics of programming paradigms and phases of


translation
Ability to understand the importance of formal syntax and semantics
Ability to understand the different forms of binding, visibility, scoping, and lifetime
Ability to understand the semantics of expressions and data types
Ability to understand the concepts of data abstraction, control abstraction and various
parameter passing mechanisms
Understanding of the concepts of encapsulation, information hiding, inheritance, and
polymorphism
Ability to understand the concepts of first class values, lists and recursion
Ability to understand the concepts of the functional programming paradigm and logic
programming paradigm
Ability to design programs using the functional programming paradigm
Ability to design programs using the logic programming paradigm

The course will also familiarize students with various languages (Ada, C++, C #, Java,
Smalltalk, Scheme, SML, and Prolog) which reflect the above concepts and discuss
design issues of the various language constructs.

Exams:

Examinations will cover the material discussed in the class; they may or may not be in
the text. It is important for a student to attend the class regularly and take notes as and
when necessary. Some of the class notes material will be posted on the WebCT.

Make up examinations will be administered only for well-documented emergencies. A


student must make every attempt possible, via telephone and email, to notify the
instructor that he/she will miss the exam prior to the examination date and time.

Spring 2006
Grading policy:

Grades for the course will be based on the following: (subject to change)
Exam 1 20%
Exam 2 20%
Final Exam 25%
Programs/Assignments 35%

Academic honesty is governed by the policies of UTD (see undergraduate catalog) and
Department of Computer Science. Any student who commits an act of scholastic
dishonesty is subject to discipline. Scholastic dishonesty includes but is not limited to
cheating, plagiarism, collusion, the submission for credit of any work or materials that are
attributable in whole or in part to another person, taking an examination for another, any
act designed to give unfair advantage to a student or the attempt to commit such acts.
Homework and programming assignments are to be individual efforts. Students caught
cheating in exams/quizzes will be subjected to penalty. The penalties for cheating are
severe; ranging from zero credit for the exam/quiz to an F in the course or expulsion from
the University.

Written assignments turned in must be neat and readable, and written on one side of the
paper only. If the assignments turned in are not legible, they may not be graded and the
student will get F for that particular assignment. Students are expected to present the
materials in a professional manner.

Programs and Assignments:

There will be 6 to 8 assignments/programs assigned during the semester.


Assignments/Programs are to be turned in at the beginning of the class on the due date.
Assignments or Programs turned in after the due date will be subjected to penalty. Take
home assignments will not be accepted, if it is more than one week late.

Spring 2006
Programming Languages CS 4337 -501
Class Schedule for Spring 2006
(subject to change)

1. Introduction (chapter 1)
Language Categories, Language Evaluation Criteria
Language Trade off, Language Implementation

2. Syntax and Semantics (chapter 3 & 4)


Formal Methods of Describing Syntax and Semantics
Grammars, BNF & EBNF
Recursive-Descent Parsing, Bottom-Up Parsing

3. Bindings, Scope, and Data Types ( chapter 5 & 6)


Binding concepts, Types System, Type Checking
Lifetime of Variables and Bindings, Strong typing
Dangling references, Garbage
Primitive types and User Defined Types

4. Expressions and Subprograms (chapter 7 & 9)


Expression evaluation, Type Conversion
Referencing environments and scope rules
Design Issues of Subprograms

5. Modular programming and OOP (chapter 11 & 12)


Data Abstraction, packages, classes
Design issues of OOP, Encapsulation and Inheritance
Dynamic Method Binding

6. Functional programming (chapter 15)


Functional programming in perspective, Expressions, Lists, Recursion,
Lambda Expressions, Delayed evaluation, Strings, Vectors, , Binary Search
Trees , and Programming in Scheme and SML

7. Logic programming (chapter 16)


Predicate Calculus and Proving Theorems, An Overview of Logic
Programming, Unification, Resolution, Backtracking, Lists and Trees and
Programming in Prolog

Important dates (subject to change)


Exam 1 Monday, February 13, 2005
Exam: 2 Monday, March 20, 2005
Final Exam: 5:00pm - Wednesday, April 26, 2005

Spring 2006
Functional and Logic programming Resources

SCHEME:

Scheme Software:

http://www.drscheme.org/

http://download.plt-scheme.org/drscheme/

Scheme Programming Language by R. Kent Dybvig:


http://www.scheme.com/tspl2d/

Revised5 Report on the Algorithmic Language Scheme


20 February 1998:
http://www.schemers.org/Documents/Standards/R5RS/

SML of New Jersey:


SML Software:
http://www.smlnj.org/

SML Tutorials:
http://www.smlnj.org/doc/literature.html#tutorials

Elements of ML Programming, ML97 Edition, 2/E


Jeffrey D. Ullman, Stanford University
© 1998 / 0-13-790387-1 / Prentice Hall

PROLOG:

Prolog Software;
http://www.swi-prolog.org/

A free book on logic programming on the internet: Logic, Programming and Prolog (2ed)
by Ulf Nilsson and Jan Maluszynski

Spring 2006

You might also like