Department and Course Number

CS 480

Course Coordinator Krishnaprasad Thirunarayan
Course Title

Comparative Languages

Total Credits 4

Catalog Description

Basic concepts and special-purpose facilities in programming languages examined through several
representative languages. 4 credit hours. Prerequisite: CS 400. 

Text Books

  1. K. Arnold, J. Gosling, and D. Holmes: The Java Programming Language. Addison-Wesley Publishing Co., 3rd Edition, 2000. ISBN 0-201-70433-1
  2. On-line lecture material available from course home page.

References

  1. Michael L. Scott, Programming Language Pragmatics. Morgan Kaufmann Publishers, 2000. ISBN 1-55860-442-1 
  2. The Java Tutorial 
  3. Ravi Sethi, Programming Languages: Concepts and Constructs. Addison-Wesley Publishing Co., 2nd Edition, 1996. ISBN 0-201-59065-4
  4. R. Kent Dybvig, The Scheme Programming Language, 2nd Edition. Prentice Hall, 1996. ISBN 0-13-454646-6
  5. Scheme: Language Reference Manual

Home Page
http://www.cs.wright.edu/~tkprasad/courses/cs480/~cs480.html

Course Goals

The student should have learned the following:

  1. Object-Oriented Programming Fundamentals (illustrated through Java)
  2. Functional Programming Fundamentals (illustrated through Scheme)
  3. Simple Language Processing (through programming assignments) 

The student should be able to apply the above concepts to the following:

  1. Develop programs in core Java and Scheme
  2. Analyze and evaluate a modern programming language
  3. Solve problems using recursion
  4. Appreciate the role of languages in the construction of reusable and reliable software  

Prerequisites by Topic

  1. Fluency in imperative language, e.g., C, Pascal
  2. Familiarity with an object-oriented language, e.g., C++, Ada 95
  3. Software quality issues : correctness, efficiency, portability, etc
  4. Program development tools: editors, interpreters, and compilers
  5. Data structures and algorithms: stacks, queues, lists,  trees, tables, sorting and searching
  6. Discrete mathematics: sets, functions, relations, propositions, and predicates

Major Topics Covered in the Course

Week Lectures
1 Evolution of Programming Languages; Syntax Specification
2 Object-Oriented Programming; Java Design Goals
3 Types, Values, Variables; Arrays; Strings
4 Classes, Interfaces :  Inheritance, Polymorphism
5 Midterm,  Packages
6 Exceptions, Threads
7 Symbolic Data; List Processing
8 Imperative vs Functional Programming; Recursion
9 Higher-Order Functions; Scoping Rules; Closures
A Meta-Circular Interpreter in Scheme

Laboratory Projects

There are two programming projects for the course, one coded in Java and another coded in Scheme.  The first project illustrates programming language processing in Java, the second project emphasizes recursive definitions in Scheme. The projects are evaluated based on code clarity and correctness. These projects must be work done solely by the student, except for the parts provided by the instructor.  

Estimate CSAB Category Content

Core Advanced Core Advanced
Data Structures Concepts of PL 4.0
Algorithms Comp Organization + Architecture
Software Design Other

Oral and Written Communications

There are no oral presentations.  Students submit documented source code of their projects.  We do not claim that these constitute written communications.

Social and Ethical Issues

None.

Theoretical Content

The subject matter includes specification of language syntax using context-free grammars and of functions using recursive definitions. About 15% of the class time is devoted to theoretical issues.

Problem Analysis

The lectures cover analysis of modern languages such as Java, Scheme, etc.  

Solution Design

The lectures cover issues relevant to the design of modern programming languages.