State University of New York at Oswego


  1. COURSE NUMBER AND CREDIT

    CSC 344 - 3 Semester Hours

  2. COURSE TITLE

    Programming Languages

  3. COURSE DESCRIPTION

    Introduction to programming language concepts including design, syntax, semantics, pragmatics, implementation, and evaluation. Presentation of one or more languages from each of several categories including procedural, functional, object-oriented, logic, and concurrent programming paradigms.

  4. PREREQUISITES

    CSC 241

  5. COURSE JUSTIFICATION

    This course exposes Computer Science majors to different programming paradigms and languages; demonstrates the concepts underlying all programming languages; and develops familiarity with programming languages enabling students to more easily learn, understand, and use new languages.

    This course is part of the Computer Science core requirement for both the B.A. and the B.S. degrees.

  6. COURSE OBJECTIVES

    Upon successful completion of this course, students will be able to:

    1. Use different programming paradigms and language concepts.
    2. Demonstrate knowledge of different programming languages and their respective structures.
    3. Understand various language design and evaluation principles, such as syntax and semantics.
    4. Define various data and control abstractions.
    5. Describe different implementation strategies.

  7. COURSE OUTLINE

    1. Specification of Programming Languages
      1. Models of Computation, Syntax, Semantics, Pragmatics
      2. Design Goals and Evaluation Criteria
    2. Machines, Programs, and Translation
      1. Operational, Axiomatic, Denotational Semantics
      2. Specification and Verification
      3. Machine Architectures, Operating Systems, Assembly Languages
      4. Translation, Compilation, Interpretation
      5. Historical Overview: Fortran, COBOL, Lisp, BASIC, Algol, etc.
    3. Imperative Languages
      1. Data Representation: Types, Constructors, Abstraction
      2. Storage Semantics: Scopes, Lifetimes, Aliasing, Binding
      3. Storage Implementation: Run-time Stacks, Dynamic Allocation
      4. Control Structures, Blocks, Procedures, Functions, Modules, Packages, Exceptions
      5. Concurrency: Shared-memory and Remote Procedure Call Models, Coroutines, Monitors, Processes
    4. Object-oriented Programming
      1. Objects, Classes, Inheritance
      2. Binding, Overloading, Polymorphism
      3. Concurrency
    5. Functional Programming
      1. Function Semantics
      2. Binding
      3. Evaluation, Concurrent Evaluation
      4. Polymorphism, Higher-order Functions
    6. Logic Programming
      1. Propositional Logic
      2. Predicate Logic
      3. Substitution
      4. Resolution
      5. Backtracking

  8. METHODS OF INSTRUCTION

    1. Lectures and demonstrations
    2. Readings
    3. Student participation

  9. COURSE REQUIREMENTS

    1. Readings from a main and supplemental texts; language reference manuals
    2. Written papers
    3. Programming assignments
    4. Examinations

  10. MEANS OF EVALUATION

    1. Programming assignments
    2. Written papers
    3. Examinations

  11. RESOURCES

    Only readily available computer and software systems will be needed.

  12. BIBLIOGRAPHY

    R. Clark. Comparative Programming Languages , Third Edition. Addison-Wesley, Reading, Massachusetts, 2001.

    M. Covington, D. Nute, A. Vellino. Prolog Programming In Depth . Prentice Hall, Upper Saddle River, New Jersey, 1997.

    C. Drake. Object-Oriented Programming with C++ and Smalltalk . Prentice Hall, Upper Saddle River, New Jersey, 1998.

    M. Felleisen and D. Friedman. The Little MLer . MIT Press, Cambridge, Massachusetts, 1997.

    M. Felleisen and D. Friedman. The Little Schemer , Fourth Edition. MIT Press, Cambridge, Massachusetts, 1995.

    S. Lippman and J. Lajoie. C++ Primer , Third Edition. Addison Wesley, Reading, Massachusetts, 1998.

    T. Pratt and M. Zelkowitz. Programming Languages: Design and Implementation , Fourth Edition. Prentice Hall, Upper Saddle River, New Jersey, 2001.

    R. Sebesta. Concepts of Programming Languages , Fifth Edition. Addison-Wesley, Reading, Massachusetts, 2002.

    R. Sethi. Programming Languages: Concepts and Constructs , Second Edition. Addison Wesley, Reading, Massachusetts, 1995.

    S. Stelting and O. Maassen. Applied Java Patterns . Prentice Hall, Upper Saddle River, New Jersey, 2001.

  13. SIGNATURES


  14. Elaine Wenderholm, Computer Science Curriculum Committee Chair Date

    Rameen Mohammadi, Computer Science Department Chair Date

    Undergraduate Curriculum Committee Chair Date


Document:
URL:
Last Update: