CSC9Y4 Programming Language Paradigms Spring 2013 Assignment: Programming Languages Report 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_<Your ID number>.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 1 of 5
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 2 of 5
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. 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 3 of 5
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? 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? 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 4 of 5
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. computer.howstuffworks.com/dna-computer.htm http://www.synbiont.org/ http://lifesciences.ieee.org/publications/newsletter/may-2012/107-synthetic-biologybuilding-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 crossplatform, 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? http://en.wikipedia.org/wiki/html5 http://www.w3.org/tr/2012/wd-html5-diff-20121025/ and references therein. University of Stirling page 5 of 5