Home
Page Syllabus Marcin Paprzycki


      CSC 408 PROGRAMMING LANGUAGES

      Material covered:

      Why a course about Programming Languages should be a part of the CS curriculum?

        understanding of languages
        better utilization of languages
        better selection of a "language for a job"
        to learn additional languages easier
        to understand significance of implementation
        to design a language(?)

      What factors influence language design?

        available computer hardware
        programming domains
          scientific computing
          business applications
          artificial intelligence
          system software
          application software
          special purpose
          Internet/multimedia
        theoretical studies
        standardization

      Programming language evaluation criteria

        1. Clarity simplicity and unity
          created once, or a victim of evolution?
          clarity of syntax
            length of names of variables
            status of special words
            relation between syntax and meaning
          formalization of concepts (precision of definition)
          readability (how many comments necessary to understand?)
          availability of structured programming
        2. Match between the language and the application that it is to be used for
        3. How good is the definition of implementation
          how were the imprecisions inthe language definition "fixed"?
          are there any special features that a vendor added to the language?
          what will the optimizing compiler do to your code?
        4. Portability
        5. Cost
          learning curve
          compilation and loading (rather old criterion, but...)
          creation, verification and testing (editors, debuggers, visual tools)
          execution (how good is the compiler/interpreter)
          maintenance
        6. Availability of "canned" library procedures/modules.

      HOMEWORK 1

      Use the above programming language evaluation criteria to evaluate your favorite programming language. Be fair, but critical. Should the list of criteria be extended?
      Due by: Wednesday, June 16th

      Material covered (continued):

      Programming Early Computers:

        limited memory
        slow machines
        --> extremely tight coding

        floating point opertions emulated
        lack of indexing operations
        invention of early interpreters and proto-compilers


      Design of Pseudo-Code
        necessary operations
        instruction format
        orthogonal design
        program structure

      Implementation
        the read-execute cycle
        decoding instructions

      Evolution of pseudo-code
        labels
        variables
        symbolic pseudo-code

      HOMEWOK 2
      Textbook, page 32, problem 8
      Due by: Friday, June 25th

      Material covered (continued):

      Fortran

      origins of Fortran
      modularity of design -- subprograms
      compilation and its phases
      control structures

        match between control structures and IBM 704 machine language
        GOTO and its forms
        IF statements
        DO loops and their optimization
      subroutines as abstractions
        address based parameter passing
        activation records
      data structures
        numeric data types and operations
        pseudo-strings
        arrays
        array optimizations
      name structures
        bindings
        declarations
        scope
        information sharing
          parameters
          COMMON blocks
          EQUIVALENCE
      syntactic structures
        format
        reserved words
        algebraic notation and precedence

      HOMEWOK 3
      Textbook, page 97, problem 10
      Due by: Friday, July 2nd

      Reading assignment - pages ivv-79