CSC9Y4 Programming Language Paradigms Spring 2013
Assignment: Programming Languages Report
University of Stirling
Computing Science and Mathematics
ABB - CES page 1 of 5
Date Due:
4pm Monday, April 15th 2013
Your report should be printed out, and placed in the box labelled
CSC9Y4 outside 4B89. This will account for your submission. Besides,
please also send a pdf copy of your report by e-mail to
abb@cs.stir.ac.uk in a file called Y4_.pdf .
Within three working days of collection the course organiser will post a
notice on the CSC9Y4 website with a list of assignments received. It is
your responsibility to check this list to ensure your assignment has
been successfully submitted.
Read carefully the paragraph below about plagiarism.
Write a report on one of the topics below. These are not necessarily topics covered
specifically in the course. This is an exercise in researching a programming language
topic, using the knowledge you have of programming languages in general.
Your report should be structured around the claim proposed for each topic, which
typically summarises a relevant aspect of the topic, and it should be based on your
independent investigation. You should understand the relevant aspects / problems /
features of the proposed topic and present them in a clear and self-contained report.
A person having a general understanding of programming languages, but not much
previous knowledge of the topic should be able, by reading your report, to gain a
clear understanding of the main aspects of the topic.
You are encouraged to make use of several references in the writing of your report,
and it is expected that you will use (and cite) references other than those listed
below, which should therefore be regarded as the starting point for an information
search. The best reports draw their information from a wide variety of sources.
A good report will be composed of sections with suitable headings through which you
present the results of your investigation. Your report will be structured around
• an Introduction, i.e. a brief highlight of the topic addressed and the result
presented,
• a Background/State of the art part, introducing the relevant context for the
topic, and possibly relevant results/proposals/alternative approaches of
interest,
• one or more sections about the Technical content of the report, i.e. your
account of the chosen topic, and
• a Summary / Evaluation / Conclusion section which might include
possible/expected future developments.
• A Reference section should conclude the report
The above schema can be modified, and/or other parts can be added or removed, as
appropriate for the chosen topic.
Importantly, the proposed topics generally refer to technical aspects which you
should try to cover in your report. Where appropriate, you should provide examples,
for instances diagrams and snapshots of a given programming language, in order to
University of Stirling page 2 of 5
Computing Science and Mathematics
ABB - CES
clearly illustrate relevant technical issues or to provide examples of the practical
implementation of general principles and ideas (perhaps those seen in the CSC9Y4
module).
Reports should be about 6-8 pages (in a reasonable font size, typically 11pt). This is
roughly equivalent to 3000-4000 words. Much longer reports will not be viewed
favourably, unless of exceptional quality. This assignment counts for 25% of the final
grade in CSC9Y4. It must be submitted in order for you to be given a grade for the
module.
IMPORTANTLY, you should take care to express what you have learned in your own
words. Plagiarism is not acceptable. Work submitted for assessment must be your
own work.
In particular, it is not permitted to take large portions of someone else’s work
and use these directly in your assignment. If you directly quote from an article, make
this clear by using inverted commas or putting the quote in an indented paragraph on
its own. Quotations should be used to “strengthen an idea” rather than presenting a
large part of published material. You must also give a reference to the source of the
quote in the form, e.g., (Wilson and Clark, 2000). For web pages use the title if no
author is credited. A list of all references must be given at the end of the report in the
bibliography. Further general information about reference formatting style can be
found at the following link www.aresearchguide.com/9parenth.html.
All students should note that the University has a formal policy on plagiarism
which can be found at
www.quality.stir.ac.uk/ac-policy/assessment.php
See also our new departmental guidance for students. It can be found at
www.cs.stir.ac.uk/guides/avoiding-plagiarism.pdf.
All submissions should be checked for originality using the TurnitinUK plagiarism
detection software, you can access through the SUCCEED web page. This software
checks the content of your report for similarities with billions of documents on the
Internet, journal articles, and previous student submissions and produces an
originality report. A poor originality report should warn you that it is possible that you
are not properly acknowledging your sources. Bad originality reports, or no report at
all, may lead to further investigation of plagiarism in your submission. You may be
asked to discuss your submission, anyway.
If you cannot meet the assignment hand in deadline and have good cause, please
see or contact Dr. Andrea Bracciali (4B86, x7446, abb@cs.stir.ac.uk) to explain your
situation and ask for an extension. University Regulations state that coursework will
be accepted up to five days after the hand in deadline (or expiry of any agreed
extension) but the grade will be lowered by one grade point per day or part thereof.
After five days the work will be deemed a non-submission and will receive an X (no
grade).
University of Stirling page 3 of 5
Computing Science and Mathematics
ABB - CES
1. Your Topic of Interest
Not surprisingly, this might be the most interesting topic from your own viewpoint.
Possibly, it will also be a quite challenging one.
If you are particularly interested in a topic, which is relevant for CSC9Y4, you may
decide to investigate such a topic and present a report about the work you will be
doing. In order to proceed you need to make an informal proposal and discuss it with
Dr. Bracciali as soon as possible (within a few days from when the assignment has
been published) and before you start your work.
2. Natural Language Processing
Position: Many computational devices and applications are more and more providing
support for the understanding of natural language and natural language based
interaction. Are we close to computers fully understanding and using natural
languages?
Typical science fiction includes computers which communicate with people in a
natural way, with spoken input and output, mimicking ordinary speech. In contrast,
actually “speaking” or communicating with computers in a natural language is still a
quite hard task, often leading to poor results. Natural language processing is the field
attempting to take us to that science fiction position, but will it ever get there?
How are we progressing in natural language processing? Are we near to the stated
position above, or is there much more work to do? What are the problems remaining
to be solved? Why are natural languages so much harder to process than computer
languages? What are the similarities? What sort of programming languages can we
use to process natural languages? Traditionally, languages such as Lisp and Prolog
have been used, but scripting languages are also popular.
You may also consider for your investigation of the topic recent developments, such
as the embedding of natural language features in the Apple iPhones and the plans
by Google to equip their search engines with NLP capabilities to better understand
users’ queries and page content.
References
research.microsoft.com/nlp/
en.wikipedia.org/wiki/Natural_language_processing
www.aaai.org/AITopics/html/natlang.html
www.alicebot.org/
Natural Language processing is in section SC 22.7 of the library, with speech
processing at SC 24.5.
3. Visual Programming
Position: Computer interfaces and human-computer interaction (HCI) are becoming
more and more visual and tactile experiences. Consider touch screen devices
becoming increasingly popular to users, but also visual and “spatial” devices
appearing in game devices, such us the Microsoft Kinect or the Wii game controls.
Will these new interaction modalities be eventually exploited in the programming
context, for instance to construct programs visually and tactilely?
Programs normally consist of text. For a long time, programmers have tried to
develop more visual approaches to programming, often focusing on languages
consisting of diagrams rather than text. At Carnegie Mellon University they have
University of Stirling page 4 of 5
Computing Science and Mathematics
ABB - CES
developed Alice: an educational software environment allowing students to program
a 3D world using drag and drop. Alice is just one among several current
developments in visual programming. Even the iPhone/Mac development system
(Xcode) has drag-and-drop elements.
Outline the main features of visual programming languages and discuss their
advantages and disadvantages for the programmer. What is gained by making a
language visual? Is it possible to write large and complex programs in this way? Or is
visual programming just for novices – or perhaps a replacement for scripting for
component engineering? Is visual programming just a fad? What about its extension
to a spatial/tactile world?
References
http://crpit.com/confpapers/CRPITV88Kohl.pdf
http://www.alice.org/
http://www.cs.utexas.edu/users/code/
http://en.wikipedia.org/wiki/Visual_programming_language
http://www.tersus.com/
4. Dynamic Typing in Python
Position: Dynamic typing may release programmers from the twin shackles of type
and variable declaration, allowing programs to be developed more quickly and easily
than in statically typed languages. At what extent has this to be considered an
advantage? How is this reflected in the Python language?
Python is dynamically typed; it’s not necessary to declare the types of variables. It is
also strongly typed, i.e. the interpreter works out the type of the identifier from the
context in which it is used. This contrasts with languages such as Java where all
types are declared by the programmer and the compiler only has to check the types
are correct. Compare and contrast the Python and Java approaches to typing,
particularly considering the question above. Does dynamic typing make programming
easier? Safer? Do Python programmers produce more reliable code more quickly?
How does this contrast with your own experience of the Java compiler?
References
www.python.org
www.pythonology.org
diveintopython.org
en.wikipedia.org/wiki/Dynamic_typing
www.mindview.net/WebLog/log-0025
5. Programming Life
Position: Programming genetic circuits is fundamentally the same as programming
electronic circuits, so we can just adapt an existing programming language to the
problem of programming live cells to carry out specialised tasks.
Computing techniques have been used to understand biology for a long time.
Technology has now advanced to the point where we may also use programming
techniques to build biological systems from scratch. This is the basic idea of the field
of synthetic biology. Generally, this means the design and construction of simple
genetic circuits encoded in DNA, akin to building logic gates in computer hardware.
University of Stirling page 5 of 5
Computing Science and Mathematics
ABB - CES
Building more complex devices requires construction of suitable programming
languages which can describe the complex interactions of many simple circuits in
order to carry out some complex task. This program can then be compiled into DNA
and executed in a cell. It is possible to envision many linguistic approaches to this
problem. For example, we already have programming languages for electronic chip
design: are these suitable for genetic circuits? It may be that the object-oriented
approach may be universal and we can just devise a biologically-oriented version of
Java for the task. Lastly, perhaps the component-based nature of biology makes a
scripting approach more appropriate.
References
computer.howstuffworks.com/dna-computer.htm
http://www.synbiont.org/
http://lifesciences.ieee.org/publications/newsletter/may-2012/107-synthetic-biology-
building-a-language-to-program-cells
en.wikipedia.org/wiki/Synthetic_Biology
www.qath.net
6. HTML 5
Position: HTML5 introduces new features in the presentation of WWW content. It
also seems to embed features of a proper core technology for programming the
Internet, e.g. it provides APIs for web applications. Is the HTML approach to WWW
emerging as a new execution environment, where HTML5-like programs are run
under different assumptions than those holding for more traditional computing, such
as applications that do not use the network?
HTML5 is a markup language, attempting to set a standard for web-based markup
languages. Beyond the usual focus on documents, it also provides a set of new
functionalities that make the web experience richer, and new APIs that extend the
programmability of web applications. Furthermore, being many mobile devices “web-“
or “browser-enabled”, HTML5 could be seen as a potential candidate for cross-
platform, interoperable, mobile application development. Indeed, aspects like the
ability to run on low-powered devices have been considered when designing HTML5.
All these features seem to suggest that HTML5 exceeds the traditional idea of HTML
as a language to instruct a browser about how to visualise a page. Rather, HTML5
appears as an extended programming language. For which execution environment?
It is possibly run by a browser, but may have access, interact with and control other
application and system software. How are the traditional concepts of a program and
its execution transformed, if indeed they are?
References
http://en.wikipedia.org/wiki/HTML5
http://www.w3.org/TR/2012/WD-html5-diff-20121025/
and references therein.