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