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
          clarity of syntax
            length of names of variables
            status of special words
            relation between syntax and meaning
          readability (how many comments necessary to understand?)
          formalization of concepts (precision of definition)
          availability of structured programming, OO programming structures
          created once, or a "victim" of evolution?
        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, software reuse support.

      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, January 24th

      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

      Evaluation and summary of the earliest developments in programming languages

      HOMEWORK 2
      Textbook, page 37, problem 8
      Due by: Wednesday, February 7th

      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

      Evaluation and summary of the importance and reasons for vitality of Fortran

      HOMEWOK 3
      Textbook, page 93, problem 11 or 12 or 13 (select on of them)
      Due by: Wednesday, February 28th


      Material covered (continued):

      Algol

      origins of Algol
      structural organization
        hierarchical structure
        control structures
      name structures
        blocks and their features
        scoping
      data structures
        primitives
        zero-one-infinity principle and its implications
        dynamic arrays
        strong typing
      control structures
        hierarchy and generalization
        information sharing
          passing by value
          passing by reference
          passing by name
        overgeneralizations
        switch

      HOMEWOK 4
      Textbook, page 140, problem 4
      Due by: Wednesday, March 21st

      Material covered (continued):

      syntactic issues
        free format
        three levels of representation

      Evaluation and summary of the importance and reason of disappearance of Algol

      Pascal
      Historical perspective
      Simplicity as the guiding principle
      S

      Reading assignment - pages vii-165