Spring 2013 — UC IrvineInformation & Computer ScienceICS 139WDavid G. Kay

Graphics Activity

One picture is worth more than ten thousand words.

—Chinese Proverb

This activity is optional; it does not have to be turned in.

We know that graphics can help get our point across. This activity will give you an opportunity to experiment with different ways of presenting information using computer-based charting tools.

Here's the data: It's adapted from a regular Internet survey (conducted by Richard Reid of Michigan State University and Frances Van Scoy of West Virginia University) of the programming language used by four-year colleges and universities in the first course taken by computer science majors.
Language Paradigm 95Q2 95Q4 96Q2 96Q4 97Q2 97Q4 98Q2 98Q4 99Q2 01Q1 01Q4 02Q1
Pascal Imperative 153 157 152 151 148 147 144 144 140 97 86 0
C++ OOP 27 34 82 87 89 91 100 99 101 88 94 40
Ada Imp./OOP 73 73 75 74 85 85 84 84 84 51 49 2
C Imperative 36 39 51 51 50 52 56 56 58 42 43 13
Scheme Func./OOP 51 50 49 51 51 49 50 50 50 30 31 11
Modula Imperative 49 50 49 49 49 49 49 49 48 17 17 0
Java OOP 0 0 0 0 0 3 7 8 15 11 23 51
Fortran Imperative 9 8 8 9 9 9 9 9 9 6 6 0
SML Functional 5 6 6 6 7 7 7 7 8 0 0 0
Oberon Imperative 1 2 3 3 3 3 4 4 4 0 0 0
Turing Imperative 6 6 5 5 5 5 4 4 4 0 0 0
Miranda Functional 4 4 4 4 4 4 4 4 4 0 0 0
Smalltalk OOP 1 1 4 4 4 4 4 4 4 0 0 0
Eiffel OOP 2 3 3 3 3 3 3 3 3 1 1 0
ML Functional 1 1 1 2 2 2 2 2 2 1 1 1
ISETL Functional 2 2 2 2 2 2 2 2 2 0 1 0
Haskell Functional 0 1 1 1 1 2 2 2 2 1 0 0
ObjPascal OOP 1 1 2 2 3 2 2 2 2 2 2 0
Beta OOP 1 1 1 1 1 1 1 1 1 0 0 0
Blue OOP 0 0 0 0 0 0 1 1 1 0 0 0
Orwell OOP 1 1 1 1 1 1 1 1 1 0 0 0
Prolog Logic 1 1 1 1 1 1 1 1 1 0 0 0
Simula OOP 1 1 1 1 1 1 1 1 1 0 0 0
HyperTalk Imperative 0 0 0 0 0 0 0 0 1 1 1 0
ISETL/C Imperative 0 0 0 0 0 0 0 0 0 1 0 0
C++/Pascal OOP/Imp. 0 0 0 0 0 0 0 0 0 1 0 0
VisualBasic Imp./OOP 0 0 0 0 0 0 0 0 0 1 1 2

(a) Enter this data into a spreadsheet; you can retrieve it from ftp://ftp.ics.uci.edu/pub/kay/firstlang, or by following the "Graphics Exercise" link from the syllabus on the course home page.

Spend some time becoming familiar with the data. Note, for example, that the total number of schools reporting information varies from year to year, so that relative figures will mean more than the raw numbers provided.

The following parts ask you to produce charts of various kinds. If you use color in a meaningful way in your charts (i.e., to convey information rather than just for decoration), that's good; however, if you plan to use a monochrome printer, you should design your charts so the information conveyed by color isn't lost on paper.

(b) Produce a chart that gives the clearest possible picture of the frequency of use of these languages, based on the most current figures (from early 2002). Try one version with every language represented, and one version with an "other" category into which you aggregate the languages that aren't widely used. Think carefully about what form of chart--bar, pie, scatter, whatever--would show this best.

(c) Produce a chart that shows that functional programming languages are more widely used than object-oriented programming (OOP) languages, or vice versa if that's the case.

(d) Using all the data, produce a chart that shows clearly the trends--the increase or decrease in usage--of the popular languages. [Should this be the same kind of chart you used in part (b)?]

(e) Pick your favorite language from the list above, and produce a chart that makes that language look as popular as possible. Don't alter the actual data, but do be "creative" in how you group languages together, which languages you include or exclude, and how you design your chart. Be sure to state along with your chart which language you're trying to emphasize.

(f) Combine all these charts into a single Word document and submit it in the usual two ways.