The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
Aura: A Multi-Featured Programming Framework in Python
Anshul Kumar Jain
Research Engineer, Software for Education, Entertainment and Training Activities (SEETA)
Manu Sheel Gupta
Chairman, Software for Education, Entertainment and Training Activities (SEETA) [email protected]
Abstract
This paper puts forward the design, programming and application of innovative educational software, ‘Aura’ made using Python and PyQt Python bindings. The research paper presents a new concept of using a single tool to relate between syntaxes of various programming languages and algorithms. It radically increases their understanding and retaining capacity, since they can correlate between many programming languages. The software is a totally unorthodox attempt towards helping students who have their first tryst with programming languages. The application is designed to help students understand how algorithms work and thus, help them in learning multiple programming languages on a single platform using an interactive graphical user interface. This paper elucidates how using Python and PyQt bindings, a comprehensive feature rich application, that implements an interactive algorithm building technique, a web browser, multiple programming language framework, a code generator and a real time code sharing hub be embedded into a single interface. And also explains, that using Python as building tool, it requires much less coding than conventional feature rich applications coded in other programming languages, and at the same time does not compromise on stability, inter-operability and robustness of the application.
Keywords: GUI Programming, Programming tools, Collaboration, Navigation, Code Generator, Education
1. Introduction
Education is the most important ingredient of life. It gives an individual, capability to address the world in all walks of life. And with changing times, technology is playing a more important role in imparting education through collaboration, extensive information and ease of use without forgetting the fun part of it. Educational softwares have played a pivotal role in imparting education through technology. It is quite ironical that there has been little evolution in the field of teaching algorithms and programming in an interesting through current technological media[15]. The current methodology to teach programming or algorithms still involves large volumes of text reading and a lot of guidance. While learning programming languages there’s very less correlation between algorithms and programming languages teaching techniques, especially in developing countries. Students generally find it difficult to
understand the importance of algorithm building and logic solving exercises. It is crucial to note that if logic-building techniques are established, programming is merely a language to express that logic. The ability to think logically is what needs to be inculcated. However it is programming that is considered the be all and end all. We have come across some worth noting applications that teach algorithms in interesting ways. One of them is ‘Scratch’[13]. It is a block-based programming language that is designed to facilitate media manipulation for novice programmers. It is designed on squeak, a programming language based on Smalltalk implementation, derived directly from Smalltalk-80[4]. ‘Scratch’ does have the qualities of intriguing a beginner in programming language with the use of drag and drop features based on Lego blocks.
But there is scope of improvement in areas it covers. ‘Scratch’ is an innovative application but it does not provide a student with a real time sharing of codes with his peers as he develops a project. Students can share their codes but none of this happens in real time, and they have to use their website to host what they made. The application after some time of usage tends to become less useful to the learner as the software does not provide the next step to learn coding, i.e. ways to collaborate a logic paradigm with programming tools like Python, C, C++, etc. The application teaches the basics of algorithms flawlessly but leaves a scope of improvement, wherein this algorithm building capability can be used to relate with different programming languages. ‘Scratch’ leaves a scope of improvement, as programming languages cannot be learnt, which remains the final goal for an aspiring programmer. They again have to resort to a huge amount of text reading. Another important ingredient that cannot be forgotten in current perspective is the Internet. ‘Scratch’ provides sharing to some extent but, if students want to get some information, they have to leave the application, go to browser and then keep switching from application to browser, which kills time and distract students’ concentration. It is desirable to develop something on the grounds of an ‘information appliance’ a term fabricated by Jef Raskin[11], that can provide multiple functions within single application, much like an iPhone. ‘Scratch’ being coded in squeak leaves a little scope for developers to contribute due to small community built around it. For an idea such creative, there should be a large community of developers available to contribute to the enhancement of application like that of ‘Python’[7].
In this paper, we intend to explain how using Python programming language and its extensibility features we are able to improve upon the idea of teaching a programming language by building a whole new programming language framework named ‘Aura’. Python is a simple, powerful and easy to use programming language. It has a large community based around it and thus problem-solving rate is very high. It makes complete sense to use Python as the programming language to code this software, because of its highly extensible nature. In this paper we throw light on various features of Python and various libraries those can be used with it to develop a platform for learning programming languages that is interactive, robust and highly portable to different architectures in a short span of time. We elucidate on important aspects of application those will benefit students who have their first tryst with coding and want to make best understanding of various programming languages and help them to decide, which of them suits them best.
2. Design and Implementation
‘Aura’ is an educational GUI ap
languages to learners on a single interface but at the same time lay full emphasis on logic building.
Figure 2.1.1. An approximate layout of different components The application has been com
The core part of the project has been done using Python. Python was chosen as the language to code the application due to many factors in favour of it
many APIs and libraries have been
between systems has been greatly enhanced even though it remains a challenging task in many other programming langua
project to implement almost
from networking to GUI development
The GUI interface of the application is designed using
for the Qt cross-platform framework from Nokia's Qt Development Frameworks. includes abstractions of network sockets, threads, Unicode, regular expressions, SQL databases, SVG, OpenGL, XML, a fully functional web browser using WebKit toolkit, a multimedia framework, as well as a rich collection of GUI widgets. Relevance of using PyQt
applications and deploy them across desktops, mobiles and embedded operating systems without rewriting the source code. The aim while designing the application was to be able to port the application on va
application be easily used. As Py windows mobile, it becomes
Whereas in PyGtk this still remains a desirable imp
developed in Python and PyQt are very easy to port not only to various desktop platforms but also mobile platforms. Also, being open source, the whole framework is extremely customizable and has a very low footprint on system
The Python Papers Proceedings of PyCon Asia
Design and Implementation
‘Aura’ is an educational GUI application, which will teach different programming languages to learners on a single interface but at the same time lay full emphasis on
An approximate layout of different components
The application has been completely designed with python and PyQt Python bindings. The core part of the project has been done using Python. Python was chosen as the language to code the application due to many factors in favour of it. I
many APIs and libraries have been developed for python. Thus the inter
between systems has been greatly enhanced even though it remains a challenging task in many other programming languages. Python has made it easy for our research
to implement almost everything that is to be done in the programming development.
The GUI interface of the application is designed using PyQt, a set of Python bindings platform framework from Nokia's Qt Development Frameworks. ractions of network sockets, threads, Unicode, regular expressions, SQL databases, SVG, OpenGL, XML, a fully functional web browser using WebKit toolkit, a multimedia framework, as well as a rich collection of GUI widgets.
for this research project is that, one can write web
applications and deploy them across desktops, mobiles and embedded operating systems without rewriting the source code. The aim while designing the application was to be able to port the application on various platforms available and on which the application be easily used. As PyQt has native support for MacOSX, Symbian and it becomes very easy to deploy the application on other platforms. Whereas in PyGtk this still remains a desirable improvement[9]. Thus
developed in Python and PyQt are very easy to port not only to various desktop platforms but also mobile platforms. Also, being open source, the whole framework is extremely customizable and has a very low footprint on system resources.
The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
plication, which will teach different programming languages to learners on a single interface but at the same time lay full emphasis on
An approximate layout of different components
pletely designed with python and PyQt Python bindings. The core part of the project has been done using Python. Python was chosen as the . In recent years developed for python. Thus the inter-operability between systems has been greatly enhanced even though it remains a challenging task ges. Python has made it easy for our research be done in the programming ranging
PyQt, a set of Python bindings platform framework from Nokia's Qt Development Frameworks. It ractions of network sockets, threads, Unicode, regular expressions, SQL databases, SVG, OpenGL, XML, a fully functional web browser using WebKit toolkit, a multimedia framework, as well as a rich collection of GUI widgets. is that, one can write web-enabled applications and deploy them across desktops, mobiles and embedded operating systems without rewriting the source code. The aim while designing the application rious platforms available and on which the native support for MacOSX, Symbian and very easy to deploy the application on other platforms. . Thus, application developed in Python and PyQt are very easy to port not only to various desktop platforms but also mobile platforms. Also, being open source, the whole framework is
2.1 User Interface
The application is designed to make learners understand the importance of algorithm building and applying this same strategy to solve real time problems in a very interesting manner. The application has various categories of
variables; operators, etc. Each block category is distinct and then the blocks under it use same structure with minor changes. Each category has appropriate blocks; those can be dragged and dropped to create a logic block structure
structure can be designed by arranging desired blocks in a logical fashion with detachable pieces of code those can be moved around and fitted together.
Python proved to be a very powerful tool in designing of the blocks. SVG or Scalable Vector Graphics is used to create XML based two dimensional vector graphics. This is very useful format for design of these pieces, of application as the images are web friendly due to XML format and thus can be easily deployed on the browser interface too used by the application. Secondly, the bocks needed by the application intend to be scalable and resizable to fit various sub
vector graphics provide this solution easily, by just editing some tags within the XML description of the file. Python serves as a very useful tool in this context as there are libraries like PySVG those can be used to con
and thus makes the application installer lighter as images can be built during installation time. PyQt also contains library like QtSVG to display contents of SVG files directly and make them available for editing
It is very important to find a very responsive and error interaction. Without this, application is left a
dropping of blocks needed to be coded so that they are very sensitive to response from the user. Any lag in the movement of mouse and image will spoil the whole fun of using the application[14]. At the same time it is very i
optimized so that they cost minimum CPU cycles. Python and PyQt served as big assets for this part of the design. With just 40 lines of Python code we are able to create an extremely responsive drag and drop feature
This task was accomplished with just recoding of some events pre and connecting them appropriately with the SVG image of blocks. when tried with Java gave result those consumed
and drop costed us about 100 lines of Java code.
2.2 Adaptive Programming M
The aim of application is to serve as a platform for learning all programming languages.
Figure 2.2.1. ‘Aura’ is capable of integrating multiple language module
The application is designed to make learners understand the importance of algorithm building and applying this same strategy to solve real time problems in a very interesting manner. The application has various categories of blocks like, control; variables; operators, etc. Each block category is distinct and then the blocks under it use same structure with minor changes. Each category has appropriate blocks; those d dropped to create a logic block structure. Thus, a program's structure can be designed by arranging desired blocks in a logical fashion with detachable pieces of code those can be moved around and fitted together.
Python proved to be a very powerful tool in designing of the blocks. SVG or Scalable Vector Graphics is used to create XML based two dimensional vector graphics. This is very useful format for design of these pieces, of application as the images are web friendly due to XML format and thus can be easily deployed on the browser interface used by the application. Secondly, the bocks needed by the application intend to be scalable and resizable to fit various sub-blocks within them. And SVG being vector graphics provide this solution easily, by just editing some tags within the XML ion of the file. Python serves as a very useful tool in this context as there are libraries like PySVG those can be used to construct SVG files directly from P and thus makes the application installer lighter as images can be built during
time. PyQt also contains library like QtSVG to display contents of SVG files directly and make them available for editing[5].
It is very important to find a very responsive and error-free solution to user’s interaction. Without this, application is left almost useless. The Dragging and dropping of blocks needed to be coded so that they are very sensitive to response from the user. Any lag in the movement of mouse and image will spoil the whole fun of . At the same time it is very important that the code is optimized so that they cost minimum CPU cycles. Python and PyQt served as big assets for this part of the design. With just 40 lines of Python code we are able to create an extremely responsive drag and drop feature of blocks within the interface. This task was accomplished with just recoding of some events pre-defined in PyQt and connecting them appropriately with the SVG image of blocks. This same exercise
gave result those consumed more CPU power and simple and drop costed us about 100 lines of Java code.
Adaptive Programming Modules
The aim of application is to serve as a platform for learning all programming
‘Aura’ is capable of integrating multiple language module
The application is designed to make learners understand the importance of algorithm building and applying this same strategy to solve real time problems in a very blocks like, control; variables; operators, etc. Each block category is distinct and then the blocks under it use same structure with minor changes. Each category has appropriate blocks; those Thus, a program's structure can be designed by arranging desired blocks in a logical fashion with detachable pieces of code those can be moved around and fitted together.
Python proved to be a very powerful tool in designing of the blocks. SVG or Scalable Vector Graphics is used to create XML based two dimensional vector graphics. This is very useful format for design of these pieces, of application as the images are web friendly due to XML format and thus can be easily deployed on the browser interface used by the application. Secondly, the bocks needed by the application intend to blocks within them. And SVG being vector graphics provide this solution easily, by just editing some tags within the XML ion of the file. Python serves as a very useful tool in this context as there are struct SVG files directly from Python and thus makes the application installer lighter as images can be built during time. PyQt also contains library like QtSVG to display contents of SVG
free solution to user’s lmost useless. The Dragging and dropping of blocks needed to be coded so that they are very sensitive to response from the user. Any lag in the movement of mouse and image will spoil the whole fun of mportant that the code is optimized so that they cost minimum CPU cycles. Python and PyQt served as big assets for this part of the design. With just 40 lines of Python code we are able to in the interface. defined in PyQt This same exercise more CPU power and simple drag
The aim of application is to serve as a platform for learning all programming
The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
There will be a number of programming modules available for the application. In each programming module, there are files those connect each block with appropriate syntax and important explanation. This has a use in the later described the ‘script window’. When a programming module is chosen the application simply incorporates that module and becomes virtually a software, that helps student understand the usage of that programming language with the help of built in logic blocks of the application. Python is used to read the files within the programming module and then using PyQt, the text is displayed within the ‘script window’ of the application interface.
2.3 Script Window
The application has many features inside it, one of them being the script window. The script window is helping hand of the language module. The script generator is a text-pane inside the application that displays the syntax with examples from the programming module when a particular block is clicked. The special feature of this window is that the text inside the script editor is made editable. A normal text editor when coded in programming language like C++ or Java requires many library inclusions. And, it is very important that we keep the software lightweight and modifiable for later enhancement. With making the script window as a module entity it was easily available for re-use. With the usage of Python and PyQt library we are able to create a fine and neat editor within the UI with fulfilling the aim of low system resource consumption. Employing simple Python functions we are able to extract information in the required file of programming module and then display that text in the script editor, using object of the UI class defined in PyQt.
The script window can also be used for making special notes or markings about the usage of that particular block that the student wants to save for future reference, when its description appears in the editor. After the script editor content is edited, the text is prompted to be saved as soon as the next block is selected to be previewed and the whole text is then re-written into the appropriate file inside the programming language module. In this manner the users can develop a ‘help’ of various blocks in a single programming module as they use it and then can share the module. Thus, the application can be highly personalized serving as a personal notes copy to each student.
2.4 Output Window
‘Aura’ has an interactive output window that displays output not in the form of numbers, but in the form of an animated character. The purpose to design an output window in this way is to maintain student’s interest into learning more and arouses his interest to experiment more. Thus, prepares student to code more optimistically in later stages of learning. When the code is run, the character acts, as the code made by arrangement of blocks says it to. For example, if the block is “ Say Hello”, a bubble pops up near the animated character that says “hello”. The same character responds to errors while running by prompting through bubble dialogues.
2.5 Collaboration
With the increasing social activities, there should be some way students are able to bring this aspect to their learning also. This application with the help of Python does
exactly that. This has been the
Python. RPC (Remote Procedure Call) connections belong to the niche of Operating Systems[1][3]. After a student has created code he can send the code to connected peers via LAN or Internet using RPC conn
block form in his window exactly as it was created, which he can then edit, or review and then send back to the sender. With this feature student can not only share their creation and gain appreciation, bu
anywhere when necessary.
Figure 2.5.1. Schematic flow of control while using application’s inbuilt sharing PHP RPC[19][21] connections can possibly be used for fulfilling the requirements application. But there are some points that make it an inadequate choice for this work. Firstly, PHP RPC connections need some kind of form
be sent. But ‘Aura’ needs to send this information directly from the interface. Secondly, it is quite difficult to implement a real time connection be
and server, but with Python
function as and when required. After experimentation with PHP RPC connections it was found that these are substantially slower that the python RPC connections. There is no way to detect any failure in the connection between server and client without the intervention of a browser. Python can easily detect and identify exact problem in t connection and thus is a
application usage. Python RPC also provides easy connection of single computer with multiple computers with just sending/receiving information through multiple ports. This asset can be used to connect a student with many of his friends at a time and share his creation simultaneously with multiple users. As the application is aimed at students new to computer, security becomes very important aspect of networking. When a python RPC connection is made, it always sends the identity of the client computer to the server. With a simple function defined at the server end the authenticity of the client can be verified and any anonymous connections can be straight forward refused. Thus s
Python.
With reference to the usage of application for sharing purposes Python provides a comprehensive and compact solution to all the prerequisites of the application.
exactly that. This has been the most interesting thing in the application done using Python. RPC (Remote Procedure Call) connections belong to the niche of Operating After a student has created code he can send the code to connected peers via LAN or Internet using RPC connection. The other student receives the code in the block form in his window exactly as it was created, which he can then edit, or review and then send back to the sender. With this feature student can not only share their iation, but also allow teachers to review/edit their work from anywhere when necessary.
Schematic flow of control while using application’s inbuilt sharing connections can possibly be used for fulfilling the requirements application. But there are some points that make it an inadequate choice for this work. Firstly, PHP RPC connections need some kind of form, from where the request will be sent. But ‘Aura’ needs to send this information directly from the interface.
t is quite difficult to implement a real time connection between the client with Python, this can be easily done by updating a simple connection function as and when required. After experimentation with PHP RPC connections it found that these are substantially slower that the python RPC connections. There is no way to detect any failure in the connection between server and client without the intervention of a browser. Python can easily detect and identify exact problem in t connection and thus is a better troubleshooting tool than PHP in context with the application usage. Python RPC also provides easy connection of single computer with multiple computers with just sending/receiving information through multiple ports. set can be used to connect a student with many of his friends at a time and share his creation simultaneously with multiple users. As the application is aimed at students new to computer, security becomes very important aspect of networking. RPC connection is made, it always sends the identity of the client computer to the server. With a simple function defined at the server end the authenticity of the client can be verified and any anonymous connections can be straight forward refused. Thus security issues are also easily administered using
With reference to the usage of application for sharing purposes Python provides a comprehensive and compact solution to all the prerequisites of the application.
most interesting thing in the application done using Python. RPC (Remote Procedure Call) connections belong to the niche of Operating After a student has created code he can send the code to connected peers ection. The other student receives the code in the block form in his window exactly as it was created, which he can then edit, or review and then send back to the sender. With this feature student can not only share their review/edit their work from
Schematic flow of control while using application’s inbuilt sharing connections can possibly be used for fulfilling the requirements of the application. But there are some points that make it an inadequate choice for this work. from where the request will be sent. But ‘Aura’ needs to send this information directly from the interface. tween the client this can be easily done by updating a simple connection function as and when required. After experimentation with PHP RPC connections it found that these are substantially slower that the python RPC connections. There is no way to detect any failure in the connection between server and client without the intervention of a browser. Python can easily detect and identify exact problem in the better troubleshooting tool than PHP in context with the application usage. Python RPC also provides easy connection of single computer with multiple computers with just sending/receiving information through multiple ports. set can be used to connect a student with many of his friends at a time and share his creation simultaneously with multiple users. As the application is aimed at students new to computer, security becomes very important aspect of networking. RPC connection is made, it always sends the identity of the client computer to the server. With a simple function defined at the server end the authenticity of the client can be verified and any anonymous connections can be ecurity issues are also easily administered using
With reference to the usage of application for sharing purposes Python provides a comprehensive and compact solution to all the prerequisites of the application.
The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
2.6 Web-Browser
It is important that students get the information and text when they need it while working. A book can perform that function but not as fast as Internet. Also, it is necessary that students do not leave their workspace and keep on switching back and forth from application to browser and vice-versa. Thus, it is crucial to provide that text as fast as possible else a student may lose his interest with the lack of fast access to information. ‘Aura’ features a web browser that provides students with rich media and information right within the application to enjoy the learning process all the more. By providing a web-browser inside application student virtually never leaves the environment he is working in and feels enthusiastic to gather information[2]. Using this feature the editable script window becomes quite a successful attempt to search and collaborate information. Designing an efficient web browser was very necessary for the application. As the application incorporates my features, thus making any of them bulky can lead to dysfunction of the software. At the same time it is necessary to make a browser fast to provide information to students swiftly. A very simple browser in Java takes up around 200 lines of code[10]. But the software aspires for a better solution in all respects. There are options of using Presto, Gecko or WebKit as layout engines for web pages. The PyQt bindings for Python incorporate the WebKit layout engine. It is worthy to note that browsers like ‘Safari’ and ‘Chrome’ use WebKit as their layout engine. And they are amongst fastest browsers present currently. Thus, it is very optimistic to use this layout engine and Python provides it in the easiest way. With approximately 100 lines of code, about half that in Java we are able to create a browser that has functions of history keeping, reload button, stop button and ‘home’ button. The browser in the application works with any easy re-coding of the url-changed function defined in PyQt for WebKit toolkit. This function is called as and when the user changes the URL in the address bar. All the other functions just merely 3-5 lines of code to implement Back, Forward, Reload, Stop and Home. Below is a code snippet to the url-changed function:
def url_changed(self): page = self.ui.webView.page() history = page.history() if history.canGoBack(): self.ui.back.setEnabled(True) else: self.ui.back.setEnabled(False) if history.canGoForward(): self.ui.next.setEnabled(True) else: self.ui.next.setEnabled(False)
url = self.ui.url.text()if url[0:4] is not 'http': url = 'http://www.'+ self.ui.url.text()
self.ui.webView.setUrl(QtCore.QUrl(url))
This browser with no enhancement done to it was tested in comparison to other browsers available on same machine. The benchmark was based on scores measured in operations per second or rendered frames per second depending on the test.
Browser Points scored in Benchmark[8] (more is better) ‘Aura’ Browser 2304
Internet Explorer 8 871 Mozilla Firefox 3.5.7 2025
Mozilla Firefox 3.6 Opera 10.10
Safari 4.0.4
Table 2.6.1.
From the above data it is completely evident that in Python and PyQt is capable for providing high compromising in the portability and lightness o
Figure 2.7.1.
2.7 Code Generator
Students will easily get the understanding of algorithm building and syntax of particular languages after experimenting with the application for a while
important step is learning
addressed up to some extent by the application. After a code using blocks has been created and run, pseudo-code is generated and displayed in the script wind
gives the student an overview of real life coding example and the way all the block he created earlier stack up in real coding paradigms
The code generation function uses Python code for the simple reason that we wish to implement the code as small as possible due to the constraint of size of the application. Implementing the same objective in other programming languages is possible but Python serve as a good language for code optimization. Using python’s feature of a pseudo-code type cod
generic code generator.
2854 2289 3183
Table 2.6.1. Benchmark results for different browsers From the above data it is completely evident that the simple browser of
in Python and PyQt is capable for providing high-speed browsing for students without compromising in the portability and lightness of the application.
Figure 2.7.1. A screenshot of browser in ‘Aura’
Students will easily get the understanding of algorithm building and syntax of particular languages after experimenting with the application for a while
to build real codes[23]. This aspect of programming has been addressed up to some extent by the application. After a code using blocks has been
code is generated and displayed in the script wind
gives the student an overview of real life coding example and the way all the block he created earlier stack up in real coding paradigms[11][22].
The code generation function uses Python code for the simple reason that we wish to de as small as possible due to the constraint of size of the application. Implementing the same objective in other programming languages is possible but Python serve as a good language for code optimization. Using python’s code type coding syntaxes it becomes much easier to make a of ‘Aura’ made speed browsing for students without
Students will easily get the understanding of algorithm building and syntax of particular languages after experimenting with the application for a while. The next . This aspect of programming has been addressed up to some extent by the application. After a code using blocks has been code is generated and displayed in the script window. This gives the student an overview of real life coding example and the way all the block he
The code generation function uses Python code for the simple reason that we wish to de as small as possible due to the constraint of size of the application. Implementing the same objective in other programming languages is possible but Python serve as a good language for code optimization. Using python’s ing syntaxes it becomes much easier to make a
3. Flow Diagram of Application at Work
Figure 3.1. An overview of a
Figure 3.2. A schematic flow diagram of working The Python Papers Proceedings of PyCon Asia
Application at Work
An overview of a basic code designed by student
A schematic flow diagram of working of Aura
The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
basic code designed by student
Figure 3.3.
4. Future Scope
The application has innovative features embedded into it and uses the extensive feature rich Python programming language to construct the application. But the work to enhance the usability and robustness does not end here. The application has areas to be explored with reference to the current work done using Python. The foremost important aim of the application is to harness the great potential of the application in real world. Thus we wish to make the application available to schools and colleges in a tailored manner in respect to the need of the organization, in a way they can best use it. The application neatly uses Python and Qt to deploy a web browser into the application interface itself. Thus it becomes far more important and crucial to enhance the workability and usage paradigms that are beneficial to students. We wish to explore the browser by implementing add
that the browser can communicate with application more intuitively and make it easier to collaborate web and learning experience. The application has a unique feature of incorporating programming language modules into the application those help students relate their progra
programming language selected. Thus, we look forward to develop some Python APIs those can be provided to teachers, instructors and
create these programming language module
the blocks in the application in reference to that programming language, so that they can be given to students as they need. Another important element of the application is its modularity. Methods have to be adopt
modularity of the application is enhanced leading to easy modifications in application and thus be able to provide a tailored solution effortlessly. We wish to research this area by experimenting with custom libr
simple library modification can bring desired results.
Figure 3.3. A basic structural view of application
The application has innovative features embedded into it and uses the extensive feature rich Python programming language to construct the application. But the work the usability and robustness does not end here. The application has areas to be explored with reference to the current work done using Python. The foremost important aim of the application is to harness the great potential of the application in . Thus we wish to make the application available to schools and colleges in a tailored manner in respect to the need of the organization, in a way they can best use it. The application neatly uses Python and Qt to deploy a web browser into the interface itself. Thus it becomes far more important and crucial to enhance the workability and usage paradigms that are beneficial to students. We wish to explore the browser by implementing add-ons for the application coded in Python so can communicate with application more intuitively and make it easier to collaborate web and learning experience. The application has a unique feature of incorporating programming language modules into the application those help students relate their programming paradigms in co-ordinance with the particular programming language selected. Thus, we look forward to develop some Python APIs those can be provided to teachers, instructors and frameworks enabling them easily create these programming language modules those contain appropriate description to the blocks in the application in reference to that programming language, so that they can be given to students as they need. Another important element of the application is its modularity. Methods have to be adopted in the Python coding so that the overall modularity of the application is enhanced leading to easy modifications in application and thus be able to provide a tailored solution effortlessly. We wish to research this area by experimenting with custom libraries for the application, in Python, so that a simple library modification can bring desired results.
The application has innovative features embedded into it and uses the extensive feature rich Python programming language to construct the application. But the work the usability and robustness does not end here. The application has areas to be explored with reference to the current work done using Python. The foremost important aim of the application is to harness the great potential of the application in . Thus we wish to make the application available to schools and colleges in a tailored manner in respect to the need of the organization, in a way they can best use it. The application neatly uses Python and Qt to deploy a web browser into the interface itself. Thus it becomes far more important and crucial to enhance the workability and usage paradigms that are beneficial to students. We wish to ons for the application coded in Python so can communicate with application more intuitively and make it easier to collaborate web and learning experience. The application has a unique feature of incorporating programming language modules into the application those ordinance with the particular programming language selected. Thus, we look forward to develop some Python APIs s enabling them easily s those contain appropriate description to the blocks in the application in reference to that programming language, so that they can be given to students as they need. Another important element of the application is ed in the Python coding so that the overall modularity of the application is enhanced leading to easy modifications in application and thus be able to provide a tailored solution effortlessly. We wish to research this aries for the application, in Python, so that a
The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
In the present situation there are number of platforms available to work on. For example, Mac, Windows, Linux, iPhone, etc., and every person have their choice of platform to work on. Python has many libraries that enable effortless porting application from one platform to other but some platforms are still to be explored in this field. Thus we wish to design Python libraries, so that the application can easily be ported onto different platforms without any change in the working and look of the application between various platforms. Another important aspect of the application is the code generation function. With the integration of many number of programming languages and increasing expectation of students from the application, we aim explore the field of compilers and design APIs and libraries to efficiently generate more efficient and better codes in the code generation window. We also covet to improve the overall user experience of the application with the help of PyQt bindings and provide with more intuitive component layout and display graphics.
5. Conclusion
In the course of development of a novel application ‘Aura’ that helps students learn programming languages through algorithm building training has lead us to deduce that Python is a very powerful tool to design, extensive GUI applications and has great potential to be deployed in building educational application on multi-platforms. Python and its accompanying libraries can be used to build exceptional quality applications like ‘Aura’ and provide a developer with all the tools he need to perform numerous functions built into single application with optimal footprint on system resources. It was discovered during this research, that with the help of large number of libraries present for Python it becomes very easy to port an application developed on single platform to other platforms without any degradation in the quality of software. The application would be truly multi-functional, overcoming the drawbacks of the other such learners that exist. While designing the application it has been thought of all possible needs of a beginner in programming by giving tools like Multilanguage programming module support, an editor based script window, an innovative drag-drop featured interface with exciting form of displaying output in output window, a code generator and last but not the least a web browser. The application has been designed tapping full potential of Python and providing optimum level of security to its users too.
6. References
[1] Andrew and Bruce, Feb 1984, ‘Implementing Remote Procedure Calls’, RPC connections, (ACM transactions on Computer System, vol. 2), Available at: http://citeseerx.ist.psu.edu
[2] Antero, et al., Jan. 2008, ‘Web Browser as an Application Platform: The Lively Kernel Experience’, Web Browser as application tool, (SMLI TR-2008-175), Available at: http://portal.acm.org
[3] Brian et al., Feb 1990, ‘Lightweight Remote Procedure Call’, RPC connection Optimization, (ACM transactions on Computer System, vol. 8), Available at: http://citeseerx.ist.psu.edu
[4] Dan et al., 1997, ‘Back to Future: the story of Squeak, a practical Smalltalk written in itself’, Overview of Squeak Programming Language, (OOPSLA 1997, pp. 318-326), Available at: http://portal.acm.org
[5] Daniel et al., Oct. 2004, ‘SVG for Educational Simulations’, SVG to developing graphics for students, (Conference on Information Technology, pp. 43-49), Available at: http://portal.acm.org
[6] David, ‘PyQt Whitepaper’, PyQt whitepaper, Available at: http://riverbankcomputing.co.uk
[7] Frank, ‘Python in Education: Raising a Generation of Native Speakers’, Python usefulness to programming learners, Available at: http://ojs.pythonpapers.org
[8] FutureMark Browser Benchmark Service, Available at: http://service.futuremark.com/peacekeeper
[9] Guilherme, ‘PyGTK, PyQt, Tkinter and WxPython comparison’, Comparison in various GUI python bindings, Available at: http://ojs.pythonpapers.org [10] H.M. Deitel and Deitel, 2008, ‘Java: How to Program’, Book on Java
Programming, Pearson Education, ISBN 81-317-0954-X
[11] Ingo and Mirko, Oct. 2003, ‘Test Suite Design for Code Generation Tools’, Ways to test code generators, (Automated Software Engineering, 2003 Proceedings), Available at: http://ieeexpore.ieee.org
[12] Jef, Sept. 2003, ‘User Interface Designers, Slaves of Fashion’, General talk on User Interfaces, (Queue, Vol. 1, Issue 6), Available at: http://portal.acm.org [13] John et al., 2008, ‘Programming by Choice: Urban Youth Learning
Programming with Scratch’, General Description of scratch application, Available at: http://web.mit.edu/~mres/papers
[14] Kori, Mar. 2001, ‘Drag-and-Drop versus Point-and-Click Mouse Interaction Styles for Children’, Drag-Drop versus Point Click methods, (ACM transactions on Computer System, vol. 8), Available at: http://portal.acm.org [15] Mario et al., 2008, ‘Enhancing Software Engineering Education a Creative
Approach’, Imparting software education through projects, (International Conference of Software Engineering, pp. 51-58), Available at: http://protal.acm.org
[16] Mark, Sept. 2009, ‘Learning Python’, Beginner’s book to python, 4th edition, O’Reilly Publications, ISBN 978-0-596-15806-4
[17] Mark, Sept. 2009, ‘Rapid GUI programming with Python and Qt’, Learner’s Guide to PyQt Programming, 2nd Edition, Prentice Hall, ISBN 978-0-13-235418-9
[18] Mitchell, Jan 2010, ‘Bioinformatics Programming Using Python’, Book on data manipulation through Python, O’Reilly Publications, ISBN 978-81-8404-898-8
[19] Rasmus et al., ‘Programming PHP’, A book on PHP programming, July 2009, 2nd Edition, O’Reilly Publications, ISBN 978-81-8404-271-9
[20] Robin, ‘A Web-based System for Dynamic Teacher-Student Interaction in a Classroom Setting’, Teacher-Student interaction through web in classroom, Jab 2007, (Journal of Computing Sciences in Colleges, Vol. 22, Issue 3), Available at: http://protal.acm.org
[21] Simon et al., Dec. 2001, ‘Programming Web Services with XML-RPC’, Web services using XML-RPC connections, O’Reilly Publications, ISBN 81-7366-207-X
The Python Papers Monograph 2: 16 Proceedings of PyCon Asia-Pacific 2010
[22] Timothy et al., Apr. 2008, ‘Towards Universal Code Generator Generation’, Design paradigms for generic code generators, (Parallel and Distributed Processing, pp. 1-8), Available at: http://ieeexplore.ieee.org
[23] William and Goos, 1984, ‘Compiler Construction’, Book on compiler construction, Springer-Verlag, ISBN 0-387-90821-8
I. Appendix
Scratch
Scratch is a computer application aimed primarily at children and allows them to explore and experiment with the concepts of computer programming by using the simple graphical interface. It is developed by the Lifelong Kindergarten group at the MIT Media Lab by a team led by Mitchel Resnick
XML (Extensible Markup Language)
XML is a set of rules for encoding documents electronically. It is defined in the XML 1.0 Specification produced by the W3C and several other related specifications; all are fee-free open standards.
RPC (Remote Procedure Call)
RPC is an Inter-process communication technology that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction. That is, the programmer would write essentially the same code whether the subroutine is local to the executing program, or remote. When the software in question is written using object-oriented principles, RPC may be referred to as remote invocation or remote method invocation.