State University of New York at Oswego


  1. COURSE NUMBER AND CREDIT
  2. CSC 344 - 3 Semester Hours

  3. COURSE TITLE
  4. Programming Languages

  5. COURSE DESCRIPTION
  6. 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.

  7. PREREQUISITES
  8. CSC 241

  9. COURSE JUSTIFICATION
  10. 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.

  11. COURSE OBJECTIVES
  12. 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.

  13. 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

  14. METHODS OF INSTRUCTION
    1. Lectures and demonstrations
    2. Readings
    3. Student participation

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

  16. MEANS OF EVALUATION
    1. Programming assignments
    2. Written papers
    3. Examinations

  17. RESOURCES
  18. Only readily available computer and software systems will be needed.

  19. BIBLIOGRAPHY
  20. 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.


Document: Computer Science Course CSC344
URL: http://www.cs.oswego.edu/emma/outlines/csc/csc344.html
Last Update: Fri, 25 Apr 2003 15:58:31 GMT

 Last Updated: 7/9/07