The Supreme Court Case on Java Versus C++
CISC 470/670 - Programming Languages
Fall 2000
Court Date: Tuesday, December 5, 2000
Overview and Purpose:
The learning objectives for this project are:
- to identify the various criteria that can be used to evaluate and compare
programming languages
- to practice the evaluation of programming languages based on various
criteria
- to make clear distinctions between the two most prominent
object-oriented programming languages today, Java and C++
- to learn how to research specific characteristics of a language and
develop simple examples to demonstrate the characteristics clearly
- to learn how to present arguments and counterarguments in a discussion
concerning technical aspects of computer science
- to work collaboratively as a team to present an organized, convincing
case for your side of a technical discussion
The ultimate deliverable for this project is the court trial
that will be held the last day of class, and continued if necessary.
The subject of the trial is a standards case between two programming languages, Java
and C++.
Each legal team (one for Java and one for C++) has
the objective of presenting a solid case for the team's
language to become the standard
language for object-oriented programming, to be adopted by companies throughout
the world who want to abide by the standard and remain competitive.
Each class member will be assigned to a legal team mostly based on language
preferences, but also in a way to maintain balance among graduate
and undergraduate students on each team.
Based on a questionaire, the instructor will assign the roles for each
member of each legal team. Each member of the team should be working
closely with other members directly involved in their part, but the whole
team does not need to meet physically. Email can be used heavily to
keep the communication going among team members so duplicate work is avoided
and the lawyers making the opening and closing statements are coordinated
with the rest of the team's goals and strategies.
There will be a set of Supreme Court justices overseeing the case. They
will be instructed to base their verdict on the presented evidence and
arguments. All of these justices will have programming experience. You can
assume when you are preparing your cases that they are technically proficient
in programming in a structured language, but they may not know much
about object-oriented programming, Java, or C++. There may be some
justices who do know both C++ and Java. A best effort will be made
to ensure that there
is no justice who knows only one of the two languages on trial.
Courtroom Procedure:
- Opening Statements: Each team has 5 minutes of opening statements
in which they can present an overview of their case, and what they intend
to prove.
- Witness Interrogation: Each team will call 4 expert witnesses
to the stand. Each team will have
5 minutes to question each of the total of 8 witnesses. The caller of
a witness questions for 5 minutes, followed by 5 minutes of questioning of that
witness by the opposing team.
The witnesses will be called in alternating fashion between the two teams.
A witness can only come to the stand once.
The total time for witness interrogation is limited to 80 minutes.
- Closing Statements: Each legal team has 5 minutes of closing arguments
in which they can summarize their case and and counterargue any statements
made during the witness questioning by the opposing legal team.
There will be two legal teams, one in favor of Java, and one in favor of C++.
Each legal team will be made up of the following personnel:
- Lawyer in charge of opening statement
- Lawyer in charge of closing statement
- 4 Witness interrogators for own team's witnesses
- 3 Witness interrogators for opposing team's witnesses
- Witness expert on readability and writability
- Witness expert on reliability
- Witness expert on performance
- Witness expert on other usability
A witness is only responsible to be an expert in the area they are
assigned, as indicated below by the characteristics for evaluation criteria
for a programming language. Similarly, each witness interrogators is
in charge of a particular topic area (i.e., evaluation criteria).
This limits the amount of material each person is responsible for.
The witness interrogators
for a given topic area
should work closely with the witness for that topic area.
Characteristics to consider for Evaluation Criteria:
Readability/Writability: clarity, simplicity, unity
- control structures
- data types and structures
- syntax design
- support for abstraction
- support for code reuse
- expressivity
- others?
Reliability
- type checking
- restricted aliasing
- exception handling
- others?
Performance
- Execution time
- Runtime space requirements
- Compile time and space
- others?
Usability
- Portability
- Programming environment: libraries, debuggers, software tools,...
- Generality/Relevant application domains
What to Hand in:
On the day of the courtroom case, hand in a copy of whatever materials
you have prepared for your case. Each person's name should be on the
material that they have prepared for the case. Also, each person should
submit an evaluation sheet for each participant by the final exam date.
The evaluation sheets will be made available on the day of the court case. These will
be simple evaluation forms to give each student feedback from the other
members of the class.
Grading:
Each student will be graded on their participation as a presenter the
day of the courtroom trial, and the materials that they hand in for their
part in the case. The roles have been divided in a way to attempt
to give each person balanced amounts of work.
The grade will not be based on the outcome of the trial, but rather
the preparation, clarity, organization, and completeness of each student's
part in the trial individually. However, the winning team will be
rewarded in some other way, outside the grade, so there is motivation
to work well as a team.
Last Change: November 7, 2000 /
pollock@cis.udel.edu