CSC 308 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. Simplicity and unity (created once, or a victim of evolution?)
2. 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
3. Match between the language and the application that i9t is to be used
for
4. How difficult it is to add new elements to the language (availability
of abstraction and encapsulation)
5. How good is the definition of implementation
6. Portability
7. Cost
learning curve
compilation and loading (rather old criterion)
creation, verification and testing (editors, debuggers, visual tools)
execution (how good is the compiler/interpreter)
maintenance
8. Availability of "canned" library procedures/modules.
HOMEWORK 1
1. Use the programming language evaluation criteria discussed in class to
evaluate your favorite programming language. Be fair, but critical. Should
the list of criteria be extended?
Due by: Thursday, January 28th
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
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
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 151, problem 4
Material covered (continued):
syntactic issues
free format
three levels of representation
BNF
HOMEWOK 5
Textbook, page 174, problems 8 and 11
Material covered (continued):
Pascal
origins of Pascal
structural organization: simplification of Algol
new data structures
enumerations
subranges
sets
records
pointers
name structures
bindings
constants
constructors
control structures
loop structures
case statement
parameter passing
procedural parameters
HOMEWOK 6
Textbook, page 221, problems 5 and 7
Material covered (continued):
activation records
rationale
information contained in activation records
context -- static link chains
variable "localization"
variable access
procedure call and return
Reading assignment - pages ivv-246