CMPT 376 (Spring 2008): Assignment 3 Argument (Draft and Final)

Home    Schedule    Learning Outcomes    Assignments    Email-list    Policies    Resources   

Revision history

Monday, Feb 25: Added link to rubric.
Thursday, Feb 28: Specified due times of midnight, reminded people to submit PDF format files.
Monday, Mar 3 (morning): Added instructions for final assignment.
Monday, Mar 3 (afternoon): Shifted emphasis from persuading to informing.
Wednesday, Mar 5 (morning): Clarified how to describe the audience; noted that audience can differ from your draft version.
Wednesday, Mar 5 (evening): Added link to rubric for final project.
Friday, Mar 7: Changed "italic font" to "italic style" because I couldn't stand the thought of Kerry IMing the class about the error and everyone laughing at me behind my back.

Due

Draft: Friday, Feb. 29, midnight.
Final: Friday, Mar. 7, midnight.

Turn in

Draft: However few or many double-spaced pages you need to make your argument. PDF format, please.

Final: Up to five single-spaced pages. PDF format, please.

Rubrics

Rubric for draft assignment.
Rubric for final assignment.

Description

In this assignment, you will argue for the usefulness of a language, partly basing your case on numeric data. The project has three parts: Determining the conditions under which each of your chosen languages ranks first, drafting an argument based on the MAGIC criteria, refining your argument based on MAGIC, and finally writing your full analysis. This description only covers the first two steps.

Gathering your data

The Computer language benchmarks game compares 33 languages across 19 benchmarks. Not every benchmark is implemented for every language. In fact, no language has every benchmark.

You can ask that languages be ranked on CPU time, memory use, or source code size. You can also specify a weighted average of these metrics. Having specified a metric, pressing the "Calculate" button will rank the languages in descending order of goodness by that metric:

Pick one of the languages on the list. It might be one you like, one you dislike, or one with an odd name. But you should be able to read a short program written in that language, because for the final draft you may wish to comment on the benchmarks written in that language.

Now play around with the weightings of the benchmarks and try to find a set that presents your chosen language in the best possible light. If it's slow in execution but terse to write, set how it ranks for code size. Conversely, if it's tedious to write but very fast to execute, look at the rankings based upon CPU time. If you still can't get it near the top rankings, try selecting benchmarks that show it in the best light. At this stage, you can be devious. For example, if C++ keeps you out of top place, set the weights to require one or both of the benchmarks missing for C++. Presto! C++ is banished from the rankings.

Draft your first argument

Every argument addresses an audience. For this assignment, invent your audience. Briefly describe the kind of programmers you are addressing and what problem your advice is meant to solve. For example, if you've found that Smalltalk is slower than its object-oriented cousin Java but has shorter programs, who might benefit from that information, and for what purpose? (Defining your audience isn't as unrealistic as it might sound. Researchers often produce results first, then decide which audience might benefit most from hearing about them)

Once you have your audience, go through your values and printouts and rankings, looking for the strongest case you can make. It doesn't have to be ironclad, or even positive. You might conclude that a given language is inappropriate for some application. (Of course, the negative argument is only interesting if your audience is already using that language or considering its use.)

Materials in hand, work up your first draft. This draft will focus on your argument using the numbers. Your final submission will integrate these quantitative, numeric arguments with deductive arguments (for example, "A defining characteristic of a scripting language is its lack of variable declarations") and qualitative arguments (for example, "Perl's strong pattern matching features make it a convenient language for text processing"). Those other arguments will be essential for providing a good context. For the draft, however, you will be working through only your numeric arguments.

Begin your draft with a brief description of your audience. Follow it with a framing sentence, stating your general conclusion. It should have a structure like, "[Language X] is an excellent choice for [audience, application, or both] because:". Then itemize your arguments for each of the five MAGIC criteria, showing how they support the conclusion. Finally, list any deductive or qualitative points that you might want to make as well.

For example:

This argument is addressed to the audience of real-time programmers, particularly those building telecommunications systems.

Based on the two interprocess communication benchmarks ("chameneos-redux" and "thread-ring"), Erlang is an excellent choice for real-time systems because:

Other points I might make:

  1. Erlang has concurrency constructs built in to the language. Indeed, the language is designed around them.
  2. Some features listed in Erlang FAQ (http://www.erlang.org/faq/faq.html), Question 1.4: Error containment, transparent distribution, byte code virtual machine, large library available.
  3. Erlang can't (easily) block on a device.
  4. No static type checking, but all accesses checked at runtime.
  5. Should I trust a programming language developed in the country that gave us ABBA?

Writing your final argument

The MAGIC criteria are just ways of assessing the strengths and weaknesses of a quantitative argument. You will need a different perspective for writing the final argument. For the final argument, you will integrate the quantitative performance results with the broader qualitative issues you listed at the end of your draft. To accomplish this integration, you will need to consider the audience and the context of your argument.

Audience

Begin this assignment by specifying your audience. Describe them in a paragraph. What are their concerns? What are their assumptions? Assume that you work for an organization, either for-profit, non-profit, or government. Your organization may have software as its fundamental product (either by selling the software or by selling a service through software, as in an e-commerce site), or it may use software to manage its operations (as, say ICBC sells insurance but uses large software systems to achieve its goals). You work for the software development team in that organization, and your audience is your coworkers in that group.

The audience you specify does not have to be the same as the one you specified for the draft.

Granted, you are unlikely to describe your audience in a normal document. They know who they are, and you may not want them to see how you characterize them in any case ("Overly worried about execution time costs of garbage collection...Paranoid fear of large commercial vendors..."). This is just a necessity of class exercises. Accepting that, just put the description of the audience at the start of your document, and set it slightly apart from the body of the document. Write it in italic style. For example:

Audience: This article describing the importance of C++ for dog training is written for owners of large dogs. These owners consider CPU speed the most valuable feature of a language, and aren't concerned about memory space (consider their choice of pets)....

C++ is the perfect language for owners of Saint Bernards, Great Danes, and other large breeds because...

Context

Your goal for this argument is to inform. Assume that you want to inform your coworkers of what you've learned from benchmarking your language.

Setting the sequence of argument

Set aside your draft. It's done its work by helping you work through your ideas. Let the structure of the material guide the structure of your argument, but bear in mind your secondary purpose of persuading the reader that this information is worth their time. To that end, let the audience and context influence how you arrange your points in sequence. What will best establish common ground with your audience? Do you want to start with their biggest concern and get it out of the way or build up to it after a series of small points? Consider the relative strengths of the points as well. Are your numbers unequivocal or might readers of equal technical skill and good will take different interpretations? Did you get a strong result by limiting the generality of your conclusions, say by only considering one or two benchmarks? Some of your points will inevitably be weaker. Where can you put them so that they do the least damage to your case?

Writing to inform gives you freedom to present all aspects of your results. If they are mixed, say so. You can be enthusiastic for your language without being partisan. Your numeric data may or may not be the centerpiece of your argument, but they should be present.