Comp232 - Concepts of Programming Languages

Survey

Name:

Please answer the following questions

  1. What is the programming language that you know best? (Enter only one language.)
  1. What other programming languages do you know? (List only those that you know well and have written at least one non-trivial program in.)
  1. What additional programming languages do you have some knowledge of? (I.e., you could probably write a program in if you had to.)
  1. What platforms (Hardware and Operating Systems) have you used? (Identify the specific hardware, i.e., an HP workstation using HP-UX).
  1. For each of the learning outcomes related to the study of the concepts of programming languages listed below, indicate the extent to which you feel that you have already met the objective. Use a scale of 0 to 5 to indicate your assessment of your competence with respect to each objective where a 0 means you have absolutely no competence and a 5 means that you are an expert with respect to the objective. Place the number to the left of the statement.

a)Understand the benefits of learning and making abstraction of constructs and structures of programming languages

b)Understand the benefits of intermediate languages in the compilation process

c)Know how to evaluate the tradeoffs in performance vs. portability

d)Know the phases of program translation from source code to executable code and the files produced by these phases

e)Understand how this history has led to the paradigms available today

f)Understandthe syntax and semantics of language with respect to translation

g)Be able to compare and contrast compiled and interpreted execution models, outlining the relative merits of each

h)Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size

i)Explain the value of declaration models, especially with respect to programming-in-the-large

j)Explain type incompatibility

k)Explain different forms of binding, visibility, scoping, and lifetime management

l)Explain the importance of types and type-checking in providing abstraction and safety

m)Be able to evaluate tradeoffs in lifetime management (reference counting vs. garbage collection)

n)Explain how abstraction mechanisms support the creation of reusable software components

o)Be able to demonstrate the difference between call-by-value, by name, and call-by-reference parameter passing

p)Describe how the computer system uses activation records to manage program modules and their data

q)Justify the philosophy of object-oriented design and the concepts of encapsulation, abstraction, inheritance, and polymorphism

r)Describe how the class mechanism supports encapsulation and information hiding

s)Explain the relationship between the static structure of the class and the dynamic structure of the instances of the class

t)Describe how iterators access the elements of a container

u)Outline the strengths and weaknesses of the functional programming paradigm

v)Evaluate the tradeoffs between the different paradigms (languages), considering such issues as space efficiency, time efficiency (of both the computer and the programmer), safety, abstraction and power of expression

w)Compare and contrast the notions of overloading and overriding methods in an object-oriented language

x)Explain how executable programs can breach computer system security by accessing disk files and memory

y)Describe the importance and power of abstraction in the context of virtual machines