The Natural Language Toolkit, or more commonly NLTK, is a suite of libraries and programs for symbolic and statistical natural language processing (NLP) for English written in the Python programming language. It supports classification, tokenization, stemming, tagging, parsing, and semantic reasoning functionalities. It was developed by Steven Bird and Edward Loper in the Department of Computer and Information Science at the University of Pennsylvania. NLTK includes graphical demonstrations and sample data. It is accompanied by a book that explains the underlying concepts behind the language processing tasks supported by the toolkit, plus a cookbook. NLTK is intended to support research and teaching in NLP or closely related areas, including empirical linguistics, cognitive science, artificial intelligence, information retrieval, and machine learning. NLTK has been used successfully as a teaching tool, as an individual study tool, and as a platform for prototyping and building research systems. == Library highlights == Discourse representation Lexical analysis: Word and text tokenizer n-gram and collocations Part-of-speech tagger Tree model and Text chunker for capturing Named-entity recognition
Phase stretch transform
Phase stretch transform (PST) is a computational approach to signal and image processing. One of its utilities is for feature detection and classification. PST is related to time stretch dispersive Fourier transform. It transforms the image by emulating propagation through a diffractive medium with engineered 3D dispersive property (refractive index). The operation relies on symmetry of the dispersion profile and can be understood in terms of dispersive eigenfunctions or stretch modes. PST performs similar functionality as phase-contrast microscopy, but on digital images. PST can be applied to digital images and temporal (time series) data. It is a physics-based feature engineering algorithm. == Operation principle == Here the principle is described in the context of feature enhancement in digital images. The image is first filtered with a spatial kernel followed by application of a nonlinear frequency-dependent phase. The output of the transform is the phase in the spatial domain. The main step is the 2-D phase function which is typically applied in the frequency domain. The amount of phase applied to the image is frequency dependent, with higher amount of phase applied to higher frequency features of the image. Since sharp transitions, such as edges and corners, contain higher frequencies, PST emphasizes the edge information. Features can be further enhanced by applying thresholding and morphological operations. PST is a pure phase operation whereas conventional edge detection algorithms operate on amplitude. == Physical and mathematical foundations of phase stretch transform == Photonic time stretch technique can be understood by considering the propagation of an optical pulse through a dispersive fiber. By disregarding the loss and non-linearity in fiber, the non-linear Schrödinger equation governing the optical pulse propagation in fiber upon integration reduces to: E o ( z , t ) = 1 2 π ∫ − ∞ ∞ E ~ i ( 0 , ω ) ⋅ e − i β 2 z ω 2 2 ⋅ e i ω t d ω {\displaystyle E_{o}(z,t)={\frac {1}{2\pi }}\int _{-\infty }^{\infty }{\tilde {E}}_{i}(0,\omega )\cdot e^{\frac {-i\beta _{2}z\omega ^{2}}{2}}\cdot e^{i\omega {t}}\,d\omega } (1) where β 2 {\displaystyle \beta _{2}} = GVD parameter, z is propagation distance, E o ( z , t ) {\displaystyle E_{o}(z,t)} is the reshaped output pulse at distance z and time t. The response of this dispersive element in the time-stretch system can be approximated as a phase propagator as presented in H ( ω ) = e i φ ( ω ) = e i ∑ m = 0 ∞ φ m ( ω ) = ∏ m = 0 ∞ H m ( ω ) {\displaystyle H(\omega )=e^{i\varphi (\omega )}=e^{i\sum _{m=0}^{\infty }\varphi _{m}(\omega )}=\prod _{m=0}^{\infty }H_{m}(\omega )} (2) Therefore, Eq. 1 can be written as following for a pulse that propagates through the time-stretch system and is reshaped into a temporal signal with a complex envelope given by E o ( t ) = 1 2 π ∫ − ∞ ∞ E ~ i ( ω ) ⋅ H ( ω ) ⋅ e i ω t d ω {\displaystyle E_{o}(t)={\frac {1}{2\pi }}\int _{-\infty }^{\infty }{\tilde {E}}_{i}(\omega )\cdot H(\omega )\cdot e^{i\omega t}\,d\omega } (3) The time stretch operation is formulated as generalized phase and amplitude operations, S { E i ( t ) } = ∫ − ∞ + ∞ F { E i ( t ) } ⋅ e i φ ( ω ) ⋅ L ~ ( ω ) ⋅ e i ω t d ω {\displaystyle \mathbb {S} \{E_{i}(t)\}=\int _{-\infty }^{+\infty }{\mathcal {F}}\{E_{i}(t)\}\cdot e^{i\varphi (\omega )}\cdot {\tilde {L}}(\omega )\cdot e^{i\omega {t}}d\omega } (4) where e i φ ( ω ) {\displaystyle e^{i\varphi (\omega )}} is the phase filter and L ~ ( ω ) {\displaystyle {\tilde {L}}(\omega )} is the amplitude filter. Next the operator is converted to discrete domain, S { E i [ n ] } = 1 N ∑ u = 0 N − 1 F F T { E i ( n ) } ⋅ K ~ ( u ) ⋅ L ~ ( u ) ⋅ e i 2 π N u n {\displaystyle \mathbb {S} \{E_{i}[n]\}={\frac {1}{N}}\sum _{u=0}^{N-1}FFT\{E_{i}(n)\}\cdot {\tilde {K}}(u)\cdot {\tilde {L}}(u)\cdot e^{i{\frac {2\pi }{N}}un}} (5) where u {\displaystyle u} is the discrete frequency, K ~ ( u ) {\displaystyle {\tilde {K}}(u)} is the phase filter, L ~ ( u ) {\displaystyle {\tilde {L}}(u)} is the amplitude filter and FFT is fast Fourier transform. The stretch operator S { } {\displaystyle \mathbb {S} \{\}} for a digital image is then S { E i [ n , m ] } = 1 M N ∑ v = 0 N − 1 ∑ u = 0 M − 1 F F T 2 { E i ( n , m ) } ⋅ K ~ ( u , v ) ⋅ L ~ ( u , v ) ⋅ e i 2 π M u m ⋅ e i 2 π N v n {\displaystyle \mathbb {S} \{E_{i}[n,m]\}={\frac {1}{MN}}\sum _{v=0}^{N-1}\sum _{u=0}^{M-1}FFT^{2}\{E_{i}(n,m)\}\cdot {\tilde {K}}(u,v)\cdot {\tilde {L}}(u,v)\cdot e^{i{\frac {2\pi }{M}}um}\cdot e^{i{\frac {2\pi }{N}}vn}} (6) In the above equations, E i [ n , m ] {\displaystyle E_{i}[n,m]} is the input image, n {\displaystyle n} and m {\displaystyle m} are the spatial variables, F F T 2 {\displaystyle FFT^{2}} is the two-dimensional fast Fourier transform, and u {\displaystyle u} and v {\displaystyle v} are spatial frequency variables. The function K ~ ( u , v ) {\displaystyle {\tilde {K}}(u,v)} is the warped phase kernel and the function L ~ ( u , v ) {\displaystyle {\tilde {L}}(u,v)} is a localization kernel implemented in frequency domain. PST operator is defined as the phase of the Warped Stretch Transform output as follows P S T { E i [ n , m ] } ≜ ∡ { S { E i [ x , y ] } } {\displaystyle PST\{E_{i}[n,m]\}\triangleq \measuredangle \{\mathbb {S} \{E_{i}[x,y]\}\}} (7) where ∡ { } {\displaystyle \measuredangle \{\}} is the angle operator. == PST kernel implementation == The warped phase kernel K ~ ( u , v ) {\displaystyle {\tilde {K}}(u,v)} can be described by a nonlinear frequency dependent phase K ~ ( u , v ) = e i φ ( u , v ) {\displaystyle {\tilde {K}}(u,v)=e^{i\varphi (u,v)}} While arbitrary phase kernels can be considered for PST operation, here we study the phase kernels for which the kernel phase derivative is a linear or sublinear function with respect to frequency variables. A simple example for such phase derivative profiles is the inverse tangent function. Consider the phase profile in the polar coordinate system φ ( u , v ) = φ polar ( r , θ ) = φ polar ( r ) {\displaystyle \varphi (u,v)=\varphi _{\text{polar}}(r,\theta )=\varphi _{\text{polar}}(r)} From d φ ( r ) d r = tan − 1 ( r ) {\displaystyle {\frac {d\varphi (r)}{dr}}=\tan ^{-1}(r)} we have φ ( r ) = r tan − 1 ( r ) − 1 2 log ( r 2 + 1 ) {\displaystyle \varphi (r)=r\tan ^{-1}(r)-{\frac {1}{2}}\log(r^{2}+1)} Therefore, the PST kernel is implemented as φ ( r ) = S ⋅ ( W r ) ⋅ tan − 1 ( W r ) − 1 2 log ( 1 + ( W r ) 2 ) ( W r max ) ⋅ tan − 1 ( W r max ) − 1 2 log ( 1 + ( W r max ) 2 ) {\displaystyle \varphi (r)=S\cdot {\frac {(Wr)\cdot \tan ^{-1}(Wr)-{\frac {1}{2}}\log(1+(Wr)^{2})}{(Wr_{\max })\cdot \tan ^{-1}(Wr_{\max })-{\frac {1}{2}}\log(1+(Wr_{\max })^{2})}}} where S {\displaystyle S} and W {\displaystyle W} are real-valued numbers related to the strength and warp of the phase profile == Applications == PST has been used for edge detection in biological and biomedical images as well as synthetic-aperture radar (SAR) image processing, as well as detail and feature enhancement for digital images. PST has also been applied to improve the point spread function for single molecule imaging in order to achieve super-resolution. The transform exhibits intrinsic superior properties compared to conventional edge detectors for feature detection in low contrast visually impaired images. The PST function can also be performed on 1-D temporal waveforms in the analog domain to reveal transitions and anomalies in real time. == Open source code release == On February 9, 2016, a UCLA Engineering research group has made public the computer code for PST algorithm that helps computers process images at high speeds and "see" them in ways that human eyes cannot. The researchers say the code could eventually be used in face, fingerprint, and iris recognition systems for high-tech security, as well as in self-driving cars' navigation systems or for inspecting industrial products. The Matlab implementation for PST can also be downloaded from Matlab Files Exchange. However, it is provided for research purposes only, and a license must be obtained for any commercial applications. The software is protected under a US patent. The code was then significantly refactored and improved to support GPU acceleration. In May 2022, it became one algorithm in PhyCV: the first physics-inspired computer vision library.
Abjjad
Abjjad is an Arabic reading application that was launched in June 2012 by Eman Hylooz. Abjjad offers users the ability to download and read thousands of books offline through its iOS and Android applications. In December of 2020, Abjjad had more than 1.5 million registered accounts. == About Abjjad == Abjjad was founded in June 2012 by Eman Hylooz as a reader community dedicated to Arab readers, authors, and book lovers. Abjjad developed into a smart electronic platform to provide Arabic electronic books with ease to Arab readers everywhere after discovering a large gap in the world of Arab publishing, which is the legal electronic publishing, by forming strategic partnership with Arab publishers such as Dar Al-Shorouk, Dar Al Tanweer, Dar Al Adab, and Dar Al Saqi. == History == In May 2012, Oasis500 provided Abjjad with the seed funding to launch the website. In June 2012, Abjjad was launched with a budget of 15 thousand dollars. Within the first three months more than 10 thousand members were registered in Abjjad. Abjjad has participated in different local and international forums to meet several investors and entrepreneurs. In October 2012 Abjjad participated in Global thinkers forum in Amman, Jordan where Eman Hylooz, founder & CEO, presented the concept of Abjjad, its vision and future plans In mid-December 2012 Abjjad participated in Global Entrepreneurship in Dubai where it was presented to investors as a start-up and a new project in the Middle East. In February 2013 Abjjad was one of ten startups MENA apps has nominated from Jordan and Palestine to participate in startup Turkey. In May 2013 Abjjad participated in World Economic Forum in Amman, Jordan and later in June 2013 participated in Arab Net in Dubai. By the end of 2013, Abjjad won the Mohammed Bin Rashid Al Maktoum's Best Arab Start-Up Business Award for 2013. During 29 October 2013 till January 2014 Abjjad has launched their campaign for crowd funding through Eureeca Abjjad managed to raise US$161,000 in 88 days from 43 regional donors, over US$40,000 over its initial target. By the end of 2020. Abjjad had raised a $1 million investment round led by Jordan Entrepreneurship Fund, Ramal Capital Fund, and JordInvest Fund. Because the funds will be used to acquire users and e-books, Abjjad hopes to become the largest Arab electronic library as well as the largest income-generating platform for Arab authors and publishers, while also providing readers with a unique digital reading experience. == Features == The ability to read an unlimited number of books from an electronic library containing thousands of Arabic and translated books. Abjjad ebook library is constantly expanding and cooperating with new publishing houses to add more books. Reading offline without an internet connection. The application allows the user to download books in seconds and read them anywhere. Intuitive feature which include the ability to flip the pages of the book, highlight the reader's favorite quotes, and add notes, in addition to night reading mode and the option to modify the style and size of the front. The ability to interact with other readers and read their book reviews. More than 1.5 million Arabic readers make up the Abjjad reader community, and the user can read and connect with their reviews, book ratings, and favorite quotes. A virtual personal library that enables the user to rate and organize books by placing them on one of the three shelves: I will read it, currently readings, and/or read it. Abjjad's library includes various genres and literary fields, such as: reference books, novels, stories, literature, psychological books, philosophy, biography, politics, history, religion, self-improvement and human development books, as well as international books translated into Arabic. The library includes the most famous works of Arab authors such as: Naguib Mahfouz, Mahmoud Darwish, Radwa Ashour, Tayeb Salih. Aside from Arabic translation of works by well-known worldwide authors including: Elif Shafak, Fyodor Dostoevsky, Mark Manson, and others. == Statistics == In December of 2020, Abjjad had more than 1.5 million registered accounts. == Awards and honors == 2013: Won the Mohammad Bin Rashid Award for Best Arabic Startup 2014: Won the Golden Award for Jawa's "Best Online Community" 2015: Won the Business Women of the Year Award by Bank al Etihad 2016: Won the Said Khoury Award for Entrepreneurs and Innovators 2016: Won the Best Application in the Arabic Region Award by His Highness Sheikh Salem Al-Ali Al-Sabah in Kuwait. 2019: Won the Mohammad Bin Rashid Award for Arabic Language for the best artistic, cultural or intellectual world to serve the Arabic language. == Abjjad in the media == Abjjad has taken a huge interest in the Middle Eastern and western media; the author of Startup Rising: The Entrepreneurial Revolution Remaking the Middle East, Christopher M. Schroeder, has interviewed Eman Hylooz and wrote about her experience with Abjjad in his book. In addition, France24-Monte Carlo Doualiya has interviewed Ms. Hylooz on Retweet program to discuss Abjjad idea and provide the latest statistics of the website. Moreover, Sky News Arabia interviewed Hylooz to relate her experience with Oasis500 and Eureeca in Abjjad's crowdinvestment campaignPage text. furthermore, Al-Aan TV interviewed Ms.Hylooz in ArabNet in Dubai, 2013. Abjjad has been mentioned on Oasis500 website as one of the five startups which the company funded and gained different prizes. Wamda, Mediame and crowdfundinsider have discussed Abjjad's experience in the crowd investment on Eureeca. And the expert in the Arabic literature in English, M. Lynx Qualey, has interviewed Eman Hylooz in March 2013 to talk about Abjjad's story of success, how it differs from other social networks and what are its future plans. Abjjad was also featured in "Hashtag Arabi" website when it launched its premium subscription called "Abjjad Unlimited" in 2017 with the support of the Abdul Hameed Shoman Foundation. In her interview with the Jordan Times, Eman also discussed her background in computer science and software development, which helped her found Abjjad.
W3C Device Description Working Group
The W3C Device Description Working Group (DDWG), operating as part of the World Wide Web Consortium (W3C) Mobile Web Initiative (MWI), was chartered to "foster the provision and access to device descriptions that can be used in support of Web-enabled applications that provide an appropriate user experience on mobile devices." Mobile devices exhibit the greatest diversity of capabilities, and therefore present the greatest challenge to content adaptation technologies. The group published several documents, including a list of requirements for an interface to a Device Description Repository (DDR) and a standard interface meeting those requirements. The group was rechartered in 2006 to work in public towards the development of the Application Programming Interface (API) for a DDR. Early in 2007, the group launched a wiki and a blog to add to the public mailing list. The group subsequently published a formal vocabulary of core device properties, and an API called the DDR Simple API, which became a W3C Recommendation in December 2008. The group closed at the end of 2008, but with the intention of maintaining the Web pages, blog and wiki through W3C volunteer effort. == Publications == The DDWG published several W3C Working Group Notes and one W3C Recommendation. A W3C WG Note that articulates what the W3C and other organizations are doing or have already done with regard to device information. This document suggests an environment in which these technologies work together to meet the goals of content adaptation. The completed document was published on 31 October 2007. A W3C WG Note describing the ecosystem surrounding creation, maintenance and use of device descriptions. The completed document was published on 31 October 2007. A W3C WG Note describing a set of requirements for a reference repository of device descriptions. The completed document was published on 17 December 2007. A W3C WG Note describing a process to manage contributions to an initial core vocabulary, identification of key device properties, a formal initial core vocabulary and the identification of a maintainer for the core vocabulary. The details were contained in the Working Group Note describing the DDWG Core Vocabulary published on 14 April 2008. A W3C WG Note defining useful grouping and structure patterns in device descriptions. The Device Description Structures document was published as a Working Draft on 5 December 2008. The intention is that this document will be future input to other W3C groups. A W3C Recommendation defining a language-neutral programming interface to a Device Description Repository. The DDR Simple API was published on 5 December 2008. There is the possibility of future publications on the DDWG wiki describing implementations of the API in various languages, including Java, IDL, WSDL, C# etc. Much of the DDWG's material was developed in public via the DDWG Wiki and through their public mailing lists.
Communications system
A communications system is a collection of individual telecommunications networks systems, relay stations, tributary stations, and terminal equipment usually capable of interconnection and interoperation to form an integrated whole. Communication systems allow the transfer of information from one place to another or from one device to another through a specified channel or medium. The components of a communications system serve a common purpose, are technically compatible, use common procedures, respond to controls, and operate in union. In the structure of a communication system, the transmitter first converts the data received from the source into a light signal and transmits it through the medium to the destination of the receiver. The receiver connected at the receiving end converts it to digital data, maintaining certain protocols e.g. FTP, ISP assigned protocols etc. Telecommunications is a method of communication (e.g., for sports broadcasting, mass media, journalism, etc.). Communication is the act of conveying intended meanings from one entity or group to another through the use of mutually understood signs and semiotic rules. == Types == === By media === An optical communication system is any form of communications system that uses light as the transmission medium. Equipment consists of a transmitter, which encodes a message into an optical signal, a communication channel, which carries the signal to its destination, and a receiver, which reproduces the message from the received optical signal. Fiber-optic communication systems transmit information from one place to another by sending light through an optical fiber. The light forms a carrier signal that is modulated to carry information. A radio communication system is composed of several communications subsystems that give exterior communications capabilities. A radio communication system comprises a transmitting conductor in which electrical oscillations or currents are produced and which is arranged to cause such currents or oscillations to be propagated through the free space medium from one point to another remote therefrom and a receiving conductor at such distant point adapted to be excited by the oscillations or currents propagated from the transmitter. Power-line communication systems operate by impressing a modulated carrier signal on power wires. Different types of power-line communications use different frequency bands, depending on the signal transmission characteristics of the power wiring used. Since the power wiring system was originally intended for transmission of AC power, the power wire circuits have only a limited ability to carry higher frequencies. The propagation problem is a limiting factor for each type of power line communications. === By technology === A duplex communication system is a system composed of two connected parties or devices which can communicate with one another in both directions. The term duplex is used when describing communication between two parties or devices. Duplex systems are employed in nearly all communications networks, either to allow for a communication "two-way street" between two connected parties or to provide a "reverse path" for the monitoring and remote adjustment of equipment in the field. An antenna is basically a small length of a conductor that is used to radiate or receive electromagnetic waves. It acts as a conversion device. At the transmitting end it converts high frequency current into electromagnetic waves. At the receiving end it transforms electromagnetic waves into electrical signals that is fed into the input of the receiver. several types of antenna are used in communication. Examples of communications subsystems include the Defense Communications System (DCS). === Examples: by technology === Telephone Mobile phone Tablet computer Television Telegraph Edison Telegraph TV cable Computer === By application area === The term transmission system is used in the telecommunications industry to emphasize the intermediate media, protocols, and equipment in the circuit, rather than particular end-user applications. A tactical communications system is a communications system that (a) is used within, or in direct support of tactical forces (b) is designed to meet the requirements of changing tactical situations and varying environmental conditions, (c) provides securable communications, such as voice, data, and video, among mobile users to facilitate command and control within, and in support of, tactical forces, and (d) usually requires extremely short installation times, usually on the order of hours, in order to meet the requirements of frequent relocation. An Emergency communication system is any system (typically computer based) that is organized for the primary purpose of supporting the two way communication of emergency messages between both individuals and groups of individuals. These systems are commonly designed to integrate the cross-communication of messages between are variety of communication technologies. An Automatic call distributor (ACD) is a communication system that automatically queues, assigns and connects callers to handlers. This is used often in customer service (such as for product or service complaints), ordering by telephone (such as in a ticket office), or coordination services (such as in air traffic control). A Voice Communication Control System (VCCS) is essentially an ACD with characteristics that make it more adapted to use in critical situations (no waiting for dial tone, or lengthy recorded announcements, radio and telephone lines equally easily connected to, individual lines immediately accessible etc..) == Key components == =
POP-11
POP-11 is a reflective, incrementally compiled programming language with many of the features of an interpreted language. It is the core language of the Poplog programming environment developed originally by the University of Sussex, and recently in the School of Computer Science at the University of Birmingham, which hosts the main Poplog website. POP-11 is an evolution of the language POP-2, developed in Edinburgh University, and features an open stack model (like Forth, among others). It is mainly procedural, but supports declarative language constructs, including a pattern matcher, and is mostly used for research and teaching in artificial intelligence, although it has features sufficient for many other classes of problems. It is often used to introduce symbolic programming techniques to programmers of more conventional languages like Pascal, who find POP syntax more familiar than that of Lisp. One of POP-11's features is that it supports first-class functions. POP-11 is the core language of the Poplog system. The availability of the compiler and compiler subroutines at run-time (a requirement for incremental compiling) gives it the ability to support a far wider range of extensions (including run-time extensions, such as adding new data-types) than would be possible using only a macro facility. This made it possible for (optional) incremental compilers to be added for Prolog, Common Lisp and Standard ML, which could be added as required to support either mixed language development or development in the second language without using any POP-11 constructs. This made it possible for Poplog to be used by teachers, researchers, and developers who were interested in only one of the languages. The most successful product developed in POP-11 was the Clementine data mining system, developed by ISL. After SPSS bought ISL, they renamed Clementine to SPSS Modeler and decided to port it to C++ and Java, and eventually succeeded with great effort, and perhaps some loss of the flexibility provided by the use of an AI language. POP-11 was for a time available only as part of an expensive commercial package (Poplog), but since about 1999 it has been freely available as part of the open-source software version of Poplog, including various added packages and teaching libraries. An online version of ELIZA using POP-11 is available at Birmingham. At the University of Sussex, David Young used POP-11 in combination with C and Fortran to develop a suite of teaching and interactive development tools for image processing and vision, and has made them available in the Popvision extension to Poplog. == Simple code examples == Here is an example of a simple POP-11 program: define Double(Source) -> Result; Source2 -> Result; enddefine; Double(123) => That prints out: 246 This one includes some list processing: define RemoveElementsMatching(Element, Source) -> Result; lvars Index; [[% for Index in Source do unless Index = Element or Index matches Element then Index; endunless; endfor; %]] -> Result; enddefine; RemoveElementsMatching("the", [[the cat sat on the mat]]) => ;;; outputs [[cat sat on mat]] RemoveElementsMatching("the", [[the cat] [sat on] the mat]) => ;;; outputs [[the cat] [sat on] mat] RemoveElementsMatching([[= cat]], [[the cat]] is a [[big cat]]) => ;;; outputs [[is a]] Examples using the POP-11 pattern matcher, which makes it relatively easy for students to learn to develop sophisticated list-processing programs without having to treat patterns as tree structures accessed by 'head' and 'tail' functions (CAR and CDR in Lisp), can be found in the online introductory tutorial. The matcher is at the heart of the SimAgent (sim_agent) toolkit. Some of the powerful features of the toolkit, such as linking pattern variables to inline code variables, would have been very difficult to implement without the incremental compiler facilities.
Far-Play
Far-Play (stylized fAR-Play, from augmented reality) was a software platform developed at the University of Alberta, for creating location-based, scavenger-hunt style games which use the GPS and web-connectivity features of a player's smartphone. According to the development team, "our long-term objective is to develop a general framework that supports the implementation of AARGs that are fun to play and also educational". It utilizes Layar, an augmented reality smartphone application, QR codes located at particular real-world sites, or a phone's web browser, to facilitate games which require players to be in close physical proximity to predefined "nodes". A node, referred to by the developers as a Virtual Point of Interest (vPOI), is a point in space defined by a set of map coordinates; fAR-Play uses the GPS function of a player's smartphone — or, for indoor games, which are not easily tracked by GPS satellites, specially-created QR codes— to confirm that they are adequately near a given node. Once a player is within a node's proximity, Layar's various augmented reality features can be utilized to display a range of extra content overlaid upon the physical play-space or launch another application for extra functionality. == Development and features == fAR-Play began development in 2008, emerging from a collaborative project undertaken by a group of University of Alberta students from the Computer Science and Humanities Computing departments. fAR-Play is still under development, but a beta version is available for testing by request. fAR-Play's development is managed by a team of interdisciplinary professors and students at the University of Alberta. Currently, the developing team's roster includes Supervising Professors Geoffrey Rockwell and Eleni Stroulia, Developers Lucio Gutierrez and Matthew Delaney, and Website Developers Calen Henry and Garry Wong. === Technology === fAR-Play relies on a number of open- and closed-source web technologies as tools to create, and enhance the users' experience. Layar is the recommended client-side frontend for delivering game content to the player; it is available on Android and iOS, which covers over 91% of smartphones. While Layar is not a requirement to play fAR-Play games, the application does supply additional augmented reality functionality; Layar also includes a built-in QR scanner. Depending on the design of the particular game, the player may instead use a dedicated QR code scanner; the developers recommend BeeTagg, but any such application will do. Layar or a QR code scanner are the maximum software requirements to play a fAR-Play game, making implementation of games on a wide variety of platforms relatively straightforward. fAR-Play games can also be designed for play strictly within a mobile phone's web browser. On the server side, fAR-Play's engine is composed of an Apache server which manages the system's web interface, including the mobile and desktop versions of the fAR-Play website, and a Java-based REST framework for managing the database of nodes. === Features === As a platform for designing AR games, as opposed to an AR game itself, fAR-Play offers little in the way of explicit shapes or patterns for games to take; instead, these elements are left to the game designer or players to develop. However, the nonspecific nature of nodes, the many options they offer for content delivery, and the open design of the platform are such that these elements can be developed extensively. Functionally, fAR-Play is a tool for tracking arbitrary points in space and a given player's proximity to them; what it does beyond that is up to the developers' and players' discretion. However, the fAR-Play website contains a leaderboard which tracks registered user's total scores. Players are assigned levels based on their total score, ranging from Novice — Super Player. Player profiles will display nodes that the player has recently caught, and any achievements the player has gained. Additionally, players can share their adventure progress, achievements, and the capture of vPOIs on Facebook. == How to play == In order to participate in the locative aspects of fAR-Play games, users must have an Android or iOS mobile device and access to wireless internet. Players can participate in fAR-Play anonymously, or create and sign into a fAR-Play account. Those who choose to play anonymously will lose the ability to track their progress across multiple games. When signed in, the player is presented with a list of games that are currently available for play. Each game includes a brief description and the various "adventures" available to the player. Once the game has been started, the player has three different methods for capturing nodes: they may scan a QR in the physical space, discover a node through the Layar camera virtual view, or receive a link in their device's web browser. === QR codes and Layar === QR codes can only be used as a method for capturing nodes and initiating games when there is a physical code present. In order to scan a QR code, players are required to have an application which can capture and recognize QR codes. If the player is utilizing a QR scanning application that has a built in browser, they will be required to log into fAR-Play through the app. Layar is a free to download augmented reality app, containing a built in QR code scanner, which enables its users to participate in fAR-Play games. === Capturing nodes === Layar permits the player to see nodes on their mobile device, guiding the player to their goal. Using this application, the player is able to navigate to their objective with map provided by Google Maps' API or by using their camera — Layar overlays a virtual image onto the real-world scene presented by the camera. The representations on screen expand in size as the player approaches the node destination, simulating relative distance. If the player taps any of the nodes that are presented on the screen, they will be provided additional information about that node, including the node's name and a brief description. Nodes can be captured by tapping the "capture" button. === Playing on browsers === The player can also play fAR-Play games within their mobile device's browser. By visiting https://archive.today/20131123223038/http://farplay.ualberta.ca/far-play/ on a mobile device, players will be presented with a fully realized user interface, permitting full interaction with the games. The player can capture the in game vPOIs through their browser by tapping the "nodes" button. This will bring up a list of all the accessible nodes, complete with a brief description for each location. By clicking on one of the nodes, the player is shown to a screen with a mapped location of the vPOI, an in-depth description of it, and hints. At the top of the page, the player can tap "CAPTURE THIS NODE" and advance in the game. When attempting to capture a node, the developer may or may not associate a challenge with the node. For example, in the game "Zombies ate my Campus", when players are attempting to capture a node, they're presented with a multiple choice question associated with the current node. === Game types === Players complete an adventure when they have captured all of the nodes within it. fAR-Play provides two game modes: in a Virtual Scavenger Hunt, nodes must be captured in a specific order; in a Virtual Treasure Hunt, the order is unimportant. == Existing fAR-Play games == Games currently available through fAR-Play include: Giselle Ever After Thought Hub Comics Arts Capture Challenge Pioneering Edmonton The Intelliphone Challenge A Tour of Atwater Zombies ate my Campus == For developers == fAR-Play's ultimate goal is to provide a simple, effective platform for the creation of locative augmented reality games, but the developer tools are still under active development and not openly available to the public. Access can be granted on a case-by-case basis, however, and a developer's manual is available. Users with development privileges can create new games or edit their existing games, in addition to playing their own or others' games. === Adventures === Games that are developed with fAR-Play are segmented into components called "Adventures". To progress through each game adventure, the player must reach and capture virtual points of interest, referred to in the game as vPOIs. In order to capture a vPOI, the player must travel to a physical location that is set by the developer. It is the developer's choice to include a challenge question to capture the vPOI, though it is not mandatory. A deduction of points can be implemented if the player submits an incorrect answer to a challenge question. === Points and achievements === Each of the nodes will reward the player with a predetermined number of points once they have been captured by the player. These points are added to the player's total points. Each of the adventures that are created require a predetermined number of vPOIs