due by Friday, July 23 by 12 noon by emailLate submissions will receive a 0!

peanutunderwearΛογισμικό & κατασκευή λογ/κού

7 Νοε 2013 (πριν από 3 χρόνια και 11 μήνες)

68 εμφανίσεις

CSC 407/507 Final Exam




Word process all answers. “
Explain


means to provide your explanation in detail
(2 or more
paragraphs in length
)
.

Briefly explain


means to offer a 1
-
2 sentence

explanation
.
Answers should be no more than 1 typed page per questi
on, and in
some cases, 1
-
2 paragraphs

will suffice
.



Undergraduates answer question
s

1

and 2
,

and any
two
remaining questions
.
Question #
1

is worth 40 points. The rest of the questions are worth 20 points
each.



Graduate students answer all
five
questi
ons. Question #
1

is worth
28

points, the
other questions are each worth 1
8

points.



This is a
n open
-
book
,
open
-
note exam.
REMEMBER TO PUT YOUR NAME
ON YOUR ANSWERS!!!!!

The exam is
due by
Fri
day, July
23

by

12 noon

by
email
.
Late submissions will receiv
e a 0!


1)

We want to design a new programming language that we hope can
compete against
the more recent popular languages
of
C#, Ruby, Python and Java. The language will
be intended for software engineering. You will help design the features. For each of
the following features, state whether it should be available and if so,
in
what format

(for instance,
for d.
you might refer back to previous languages such as a C
-
style for
loop or a Python style iterator for loop)
. Each response should be about 1
-
2 sent
ences
in length.

a.

Pure OO (like Smalltalk), a variation of
p
ure (like Java or Ruby),
a h
ybrid
OO (like C++, Ada or Python),
a n
on
-
OO
?

b.

Strongly typed with all variables declared?
Nearly strongly typed
with all
variables declared
but with mechanisms that per
mit type checking to be
avoided?
Strongly typed with type inferenc
e

instead of declarations
?
Untyped
?


c.

Interpreted
(
with a compiler
available),

strictly compiled
, compiled into
byte code, compiled using just
-
in
-
time compilation?

d.

For loop

format
?

e.

Nested s
ubprograms (like Pascal/Ada) or stand alone
subprograms
(like
C/Java)?

f.

Optional parameters?

g.

Exception handling with built
-
in exceptions (like Java) or
exception
handling with only user defined exceptions

(C++)
, and
exceptions being
classes (like Java) or n
ot (C++)
?

h.

Reference variables or real pointers or a combination?

i.

Blocks denoted using { }, begin
-
end, specific ends (endif, enddo, etc), or
indentation?


2)

What is the value of this course
for

a.

c
omputer science majors/graduate students
?

b.

s
oftware engineers
?

Fo
r instance, what topics were new to you? What topics do you think help you better
understand programming? What topics do you think will help you better understand
efficient code or correct code? What topics do you think will help you from a
theoretical
background? Etc. Be specific and provide examples of how each topic
will help.


3)

Consider the following statement: Common Lisp is a readable language because it is
extremely orthogonal in that all constructs are lists and all instructions follow the
sa
me format (function calls in prefix notation)
.


Common Lisp is a writable language
because it has
a large variety of control structure and data types including objects
.

Common Lisp is reliable because of the numerous forms of exception handling
available

and the use of references instead of pointers
. We can

therefore
conclude
that
Common Lisp should be considered for any large scale software engineering
project. Argue for or against this statement given what you know about Common
Lisp and about readabili
ty, writability and reliability.


4)

Consider that C++/C#/Java are probably the most popular set of languages used
throughout both software engineering and computer science. Since they are similar in
syntax, once you have learned one, learning the others is
relatively easy and you can
easily switch off between them. Is there then value in learning non
-
C
-
like languages
if you are never going to use them? For instance, is there any value in learning
Fortran, Pascal or Python? Explain with specific reference
to features that you can
learn of non
-
C
-
like languages and why those features are important to know or
understand.


5)

Read the short article at
the URL provided below,
which argues that Java is not an
appropriate first programming language and argues for th
e inclusion of more theory,
more math and more formal verification methods in a CSC curriculum. What are
your thoughts about the article, specifically from the point of view of whether the
authors’ argument makes sense for a student who will go on to be a

software
engineer. Explain your views on each of these arguments as to what should be
included and what should not in a typical CSC curriculum

(more more theory, more
math, more formal verification)
.

http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html