Gandham Sai is seeking a position as a software engineer. He has a Master's degree in Computer Science from UTSA and a Bachelor's degree from Jawaharlal Nehru Technological University. He has experience developing applications using languages like Java, Python, C/C++. He has worked on projects involving cloud computing, web technologies, databases, and Android development. His goal is to obtain a full-time software engineering role where he can apply his skills in areas like algorithms, software testing, and cloud computing.
Siddhesh Dilip Rumde is a graduate student at the University of Southern California pursuing a Master's degree in Computer Science. He has experience developing applications using technologies like Java, C++, Python, PHP, Android and databases like MySQL. Some of his projects include developing classifiers for emotion detection in tweets using Naive Bayes and SVM algorithms and creating a real estate property search application using APIs, PHP, AJAX and porting it to Android. He has also worked on developing a GUI for an iRobot using VB.Net and an Android application for sign language translation.
This document discusses using a domain-specific language (DSL) to add scripting capabilities to applications. It notes that DSLs are custom languages tailored to an application's needs, and that scripting can provide benefits like automation, agility, and testing. It then introduces ANTLR4 as a tool that has improved parsing and makes building DSLs easier compared to traditional compiler approaches. The document concludes by suggesting building a sample language as an example.
The document discusses the benefits of extensions for OpenOffice.org. It describes how MultiRacio Ltd. moved to an extensions-based model for EuroOffice 2007, providing benefits to users, publishers, developers and the community. Specific extensions created by MultiRacio are presented, including maps, charts, language tools and more. Potential disadvantages of extensions are briefly mentioned. Examples of extensions in use are provided.
IRJET- Voice to Code Editor using Speech RecognitionIRJET Journal
Ā
This document presents a summary of a research paper on developing a voice-controlled code editor using speech recognition. A team of students and a professor from S.B Jain Institute of Technology, Management and Research created a Java program editor that allows users to write code using voice commands. The editor takes advantage of the natural human ability to speak language and allows coding more accurately and intuitively compared to manual typing. It analyzes the user's speech using acoustic and language modeling with Hidden Markov Models to accurately recognize commands. The proposed voice-controlled code editor is designed to reduce typing errors, improve coding speed, and enable people with disabilities to operate a computer. It will support basic editing tasks and allow switching between voice and manual input.
USING RELATIONAL MODEL TO STORE OWL ONTOLOGIES AND FACTScsandit
Ā
The storing and the processing of OWL instances are important subjects in database modeling.
Many research works have focused on the way of managing OWL instances efficiently. Some
systems store and manage OWL instances using relational models to ensure their persistence.
Nevertheless, several approaches keep only RDF triplets as instances in relational tables
explicitly, and the manner of structuring instances as graph and keeping links between concepts
is not taken into account. In this paper, we propose an architecture that permits relational
tables behave as an OWL model by adapting relational tables to OWL instances and an OWL
hierarchy structure. Therefore, two kinds of tables are used: facts or instances relational tables.
The tables hold instances and the OWL table holds a specification of how the concepts are
structured. Instances tables should conform to OWLtable to be valid. A mechanism of
construction of OWLtable and instances tables is defined in order to enable and enhance
inference and semantic querying of OWL in relational model context.
The document provides an overview of ontology and its various aspects. It discusses the origin of the term ontology, which derives from Greek words meaning "being" and "science," so ontology is the study of being. It distinguishes between scientific and philosophical ontologies. Social ontology examines social entities. Perspectives on ontology include philosophy, library and information science, artificial intelligence, linguistics, and the semantic web. The goal of ontology is to encode knowledge to make it understandable to both people and machines. It provides motivations for developing ontologies such as enabling information integration and knowledge management. The document also discusses ontology languages, uniqueness of ontologies, purposes of ontologies, and provides references.
The document discusses several types of artificial neural network architectures:
- The Perceptron network classifies inputs into categories by adjusting weights between input and output units.
- The Adaline network receives multiple inputs and one bias input, with weights that are positive or negative. It compares actual and predicted outputs.
- The Madaline network contains input, Adaline, and output layers. It is used in communication systems for equalization and noise cancellation.
- The Backpropagation network is a multilayer feedforward network that calculates outputs from inputs and uses backward signals in learning.
- The Autoassociative memory network trains inputs and outputs to be the same, connecting input and output layers with weights.
- Maxnet and
Artificial neural networks are computer programs that can recognize patterns in data and produce models to represent that data. They are inspired by the human brain in how knowledge is acquired through learning and stored in the connections between neurons. Neural networks learn by adjusting the strengths of connections between neurons based on examples provided during training. They are able to model and learn both linear and nonlinear relationships in data.
Neural networks are a form of artificial intelligence that is inspired by the human brain. The document discusses the basic components and architecture of neural networks, including different types of network layers and learning processes. It also outlines several applications of neural networks, such as sales forecasting, data validation, medical diagnosis, marketing, and more.
This document discusses feature selection algorithms, specifically branch and bound and beam search algorithms. It provides an overview of feature selection, discusses the fundamentals and objectives of feature selection. It then goes into more detail about how branch and bound works, including pseudocode, a flowchart, and an example. It also discusses beam search and compares branch and bound to other algorithms. In summary, it thoroughly explains branch and bound and beam search algorithms for performing feature selection on datasets.
The document discusses artificial neural networks (ANNs). It provides an overview of ANNs, including their biological inspiration from neurons in the brain, their composition of interconnected processing elements called neurons, and how they are configured for applications like pattern recognition. The document also covers different types of ANNs, their computational power, capacity for learning, convergence abilities, and use for generalization. Examples are given of ANN applications in various business domains like marketing, sales forecasting, finance, insurance, and telecommunications. Risks of ANNs discussed include needing a large and diverse training set, overfitting data, and high hardware resource requirements. A hybrid symbolic-neural network approach is also mentioned.
PRIVACY PRESERVING BACK-PROPOGATION NEURAL NETWORK LEARNING MADE PRACTICAL WI...Thushara Maruthiyat
Ā
This document outlines a proposed scheme for privacy-preserving multiparty neural network learning over arbitrarily partitioned data. It discusses challenges with collaborative training when data is partitioned among multiple parties. The proposed scheme uses homomorphic encryption to enable parties to upload encrypted data to cloud servers, which can then perform operations like secure scalar products and additions without decrypting the data. Experimental results on several datasets demonstrate the scheme is efficient and scalable while maintaining privacy. In conclusion, the scheme enables secure and practical multiparty neural network learning in a way that is independent of the number of parties.
This document discusses using an artificial neural network to forecast power loads by taking the University of Lagos as a sample space. It involves gathering and arranging historical load data, determining an appropriate network type and topology, training the network using an algorithm, and analyzing the results to test the network's accuracy in predicting loads. The methodology includes randomizing and tagging the training data, experimenting to determine the network topology, training with cross-validation, and performing sensitivity and mean squared error analysis on the network.
Artificial Neural Networks on a Tic Tac Toe console applicationEduardo Gulias Davis
Ā
The document discusses building a Tic Tac Toe game console application using artificial neural networks and PHP. It covers setting up the Symfony Console component, an overview of ANN concepts like activation functions and learning types, using the FANN library for PHP, and includes code examples of implementing the game.
1. The document discusses various applications of artificial neural networks (ANNs) such as pattern classification, clustering, forecasting, association, and summarization of news articles.
2. It provides examples of how ANNs can be used to classify images and documents into different groups or events. The architecture of a multi-document news summarization system using ANNs is shown.
3. The biological mechanisms of neural networks in the human brain are compared with artificial neural networks. Examples of different activation functions in artificial neurons and learning algorithms like the perceptron are presented.
The document discusses various topics in artificial intelligence including the Turing test, knowledge representation using semantic networks and search trees, expert systems, neural networks, natural language processing, robotics, and ethical issues. It provides examples and explanations of each topic to demonstrate key concepts in AI such as how knowledge is represented, how expert systems make inferences, how neural networks are trained, and challenges with natural language comprehension. The chapter aims to distinguish problems humans solve best from those computers solve best and define important AI terms and techniques.
The document discusses various neural network learning rules:
1. Error correction learning rule (delta rule) adapts weights based on the error between the actual and desired output.
2. Memory-based learning stores all training examples and classifies new inputs based on similarity to nearby examples (e.g. k-nearest neighbors).
3. Hebbian learning increases weights of simultaneously active neuron connections and decreases others, allowing patterns to emerge from correlations in inputs over time.
4. Competitive learning (winner-take-all) adapts the weights of the neuron most active for a given input, allowing unsupervised clustering of similar inputs across neurons.
An artificial neural network (ANN), often just called a "neural network" (NN), is a mathematical model or computational model based on biological neural networks, in other words, is an emulation of biological neural system.
The document discusses artificial neural networks. It describes their basic structure and components, including dendrites that receive input signals, a soma that processes the inputs, and an axon that transmits output signals. It also explains how neurons are connected at synapses to transfer signals between neurons. Finally, it mentions different types of activation functions that can be used in neural networks.
Lecture artificial neural networks and pattern recognitionHʰng Äįŗ·ng
Ā
This document provides an overview of artificial neural networks and pattern recognition. It discusses key topics such as:
- The basic anatomy and function of artificial neurons and how they are modeled after biological neurons.
- Different types of neural networks including feedforward networks, recurrent networks, self-organizing maps, and Hopfield networks.
- Popular supervised and unsupervised learning algorithms like backpropagation and self-organizing feature maps.
- Examples of applications like handwritten character recognition, stock price prediction, and memory recall in Hopfield networks.
The document serves as an introduction for students to understand the basic concepts and applications of artificial neural networks.
Neural networks are computing systems inspired by biological neural networks in the brain. They are composed of interconnected artificial neurons that process information using a connectionist approach. Neural networks can be used for applications like pattern recognition, classification, prediction, and filtering. They have the ability to learn from and recognize patterns in data, allowing them to perform complex tasks. Some examples of neural network applications discussed include face recognition, handwritten digit recognition, fingerprint recognition, medical diagnosis, and more.
This presentation deals with the basics of AI and it's connection with neural network. Additionally, it explains the pros and cons of AI along with the applications.
We present a novel code search approach for answering queries focused on
API-usage with code showing how the API should be used.
To construct a search index, we develop new techniques for statically mining
and consolidating temporal API specifications from code snippets. In
contrast to existing semantic-based techniques, our approach handles partial
programs in the form of code snippets. Handling snippets allows us to consume
code from various sources such as parts of open source projects,
educational resources (e.g. tutorials), and expert code sites. To handle code
snippets, our approach (i) extracts a possibly \emph{partial} temporal
specification from each snippet using a relatively precise static analysis
tracking a generalized notion of typestate, and (ii) consolidates the
partial temporal specifications, combining consistent partial information to
yield consolidated temporal specifications, each of which captures a full(er)
usage scenario.
To answer a search query, we define a notion of relaxed inclusion
matching a query against temporal specifications and their corresponding code
snippets.
We have implemented our approach in a tool called PRIME and applied it to
search for API usage of several challenging APIs. PRIME was able to analyze
and consolidate thousands of snippets per tested API, and our results
indicate that the combination of a relatively precise analysis and
consolidation allowed PRIME to answer challenging queries effectively.
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Coen De Roover
Ā
Presented at the 21st IEEE International Conference on Program Comprehension (ICPC 2013), San Francisco (USA). Website of the paper: http://softlang.uni-koblenz.de/explore-API-usage/
USING RELATIONAL MODEL TO STORE OWL ONTOLOGIES AND FACTScsandit
Ā
The storing and the processing of OWL instances are important subjects in database modeling.
Many research works have focused on the way of managing OWL instances efficiently. Some
systems store and manage OWL instances using relational models to ensure their persistence.
Nevertheless, several approaches keep only RDF triplets as instances in relational tables
explicitly, and the manner of structuring instances as graph and keeping links between concepts
is not taken into account. In this paper, we propose an architecture that permits relational
tables behave as an OWL model by adapting relational tables to OWL instances and an OWL
hierarchy structure. Therefore, two kinds of tables are used: facts or instances relational tables.
The tables hold instances and the OWL table holds a specification of how the concepts are
structured. Instances tables should conform to OWLtable to be valid. A mechanism of
construction of OWLtable and instances tables is defined in order to enable and enhance
inference and semantic querying of OWL in relational model context.
The document provides an overview of ontology and its various aspects. It discusses the origin of the term ontology, which derives from Greek words meaning "being" and "science," so ontology is the study of being. It distinguishes between scientific and philosophical ontologies. Social ontology examines social entities. Perspectives on ontology include philosophy, library and information science, artificial intelligence, linguistics, and the semantic web. The goal of ontology is to encode knowledge to make it understandable to both people and machines. It provides motivations for developing ontologies such as enabling information integration and knowledge management. The document also discusses ontology languages, uniqueness of ontologies, purposes of ontologies, and provides references.
The document discusses several types of artificial neural network architectures:
- The Perceptron network classifies inputs into categories by adjusting weights between input and output units.
- The Adaline network receives multiple inputs and one bias input, with weights that are positive or negative. It compares actual and predicted outputs.
- The Madaline network contains input, Adaline, and output layers. It is used in communication systems for equalization and noise cancellation.
- The Backpropagation network is a multilayer feedforward network that calculates outputs from inputs and uses backward signals in learning.
- The Autoassociative memory network trains inputs and outputs to be the same, connecting input and output layers with weights.
- Maxnet and
Artificial neural networks are computer programs that can recognize patterns in data and produce models to represent that data. They are inspired by the human brain in how knowledge is acquired through learning and stored in the connections between neurons. Neural networks learn by adjusting the strengths of connections between neurons based on examples provided during training. They are able to model and learn both linear and nonlinear relationships in data.
Neural networks are a form of artificial intelligence that is inspired by the human brain. The document discusses the basic components and architecture of neural networks, including different types of network layers and learning processes. It also outlines several applications of neural networks, such as sales forecasting, data validation, medical diagnosis, marketing, and more.
This document discusses feature selection algorithms, specifically branch and bound and beam search algorithms. It provides an overview of feature selection, discusses the fundamentals and objectives of feature selection. It then goes into more detail about how branch and bound works, including pseudocode, a flowchart, and an example. It also discusses beam search and compares branch and bound to other algorithms. In summary, it thoroughly explains branch and bound and beam search algorithms for performing feature selection on datasets.
The document discusses artificial neural networks (ANNs). It provides an overview of ANNs, including their biological inspiration from neurons in the brain, their composition of interconnected processing elements called neurons, and how they are configured for applications like pattern recognition. The document also covers different types of ANNs, their computational power, capacity for learning, convergence abilities, and use for generalization. Examples are given of ANN applications in various business domains like marketing, sales forecasting, finance, insurance, and telecommunications. Risks of ANNs discussed include needing a large and diverse training set, overfitting data, and high hardware resource requirements. A hybrid symbolic-neural network approach is also mentioned.
PRIVACY PRESERVING BACK-PROPOGATION NEURAL NETWORK LEARNING MADE PRACTICAL WI...Thushara Maruthiyat
Ā
This document outlines a proposed scheme for privacy-preserving multiparty neural network learning over arbitrarily partitioned data. It discusses challenges with collaborative training when data is partitioned among multiple parties. The proposed scheme uses homomorphic encryption to enable parties to upload encrypted data to cloud servers, which can then perform operations like secure scalar products and additions without decrypting the data. Experimental results on several datasets demonstrate the scheme is efficient and scalable while maintaining privacy. In conclusion, the scheme enables secure and practical multiparty neural network learning in a way that is independent of the number of parties.
This document discusses using an artificial neural network to forecast power loads by taking the University of Lagos as a sample space. It involves gathering and arranging historical load data, determining an appropriate network type and topology, training the network using an algorithm, and analyzing the results to test the network's accuracy in predicting loads. The methodology includes randomizing and tagging the training data, experimenting to determine the network topology, training with cross-validation, and performing sensitivity and mean squared error analysis on the network.
Artificial Neural Networks on a Tic Tac Toe console applicationEduardo Gulias Davis
Ā
The document discusses building a Tic Tac Toe game console application using artificial neural networks and PHP. It covers setting up the Symfony Console component, an overview of ANN concepts like activation functions and learning types, using the FANN library for PHP, and includes code examples of implementing the game.
1. The document discusses various applications of artificial neural networks (ANNs) such as pattern classification, clustering, forecasting, association, and summarization of news articles.
2. It provides examples of how ANNs can be used to classify images and documents into different groups or events. The architecture of a multi-document news summarization system using ANNs is shown.
3. The biological mechanisms of neural networks in the human brain are compared with artificial neural networks. Examples of different activation functions in artificial neurons and learning algorithms like the perceptron are presented.
The document discusses various topics in artificial intelligence including the Turing test, knowledge representation using semantic networks and search trees, expert systems, neural networks, natural language processing, robotics, and ethical issues. It provides examples and explanations of each topic to demonstrate key concepts in AI such as how knowledge is represented, how expert systems make inferences, how neural networks are trained, and challenges with natural language comprehension. The chapter aims to distinguish problems humans solve best from those computers solve best and define important AI terms and techniques.
The document discusses various neural network learning rules:
1. Error correction learning rule (delta rule) adapts weights based on the error between the actual and desired output.
2. Memory-based learning stores all training examples and classifies new inputs based on similarity to nearby examples (e.g. k-nearest neighbors).
3. Hebbian learning increases weights of simultaneously active neuron connections and decreases others, allowing patterns to emerge from correlations in inputs over time.
4. Competitive learning (winner-take-all) adapts the weights of the neuron most active for a given input, allowing unsupervised clustering of similar inputs across neurons.
An artificial neural network (ANN), often just called a "neural network" (NN), is a mathematical model or computational model based on biological neural networks, in other words, is an emulation of biological neural system.
The document discusses artificial neural networks. It describes their basic structure and components, including dendrites that receive input signals, a soma that processes the inputs, and an axon that transmits output signals. It also explains how neurons are connected at synapses to transfer signals between neurons. Finally, it mentions different types of activation functions that can be used in neural networks.
Lecture artificial neural networks and pattern recognitionHʰng Äįŗ·ng
Ā
This document provides an overview of artificial neural networks and pattern recognition. It discusses key topics such as:
- The basic anatomy and function of artificial neurons and how they are modeled after biological neurons.
- Different types of neural networks including feedforward networks, recurrent networks, self-organizing maps, and Hopfield networks.
- Popular supervised and unsupervised learning algorithms like backpropagation and self-organizing feature maps.
- Examples of applications like handwritten character recognition, stock price prediction, and memory recall in Hopfield networks.
The document serves as an introduction for students to understand the basic concepts and applications of artificial neural networks.
Neural networks are computing systems inspired by biological neural networks in the brain. They are composed of interconnected artificial neurons that process information using a connectionist approach. Neural networks can be used for applications like pattern recognition, classification, prediction, and filtering. They have the ability to learn from and recognize patterns in data, allowing them to perform complex tasks. Some examples of neural network applications discussed include face recognition, handwritten digit recognition, fingerprint recognition, medical diagnosis, and more.
This presentation deals with the basics of AI and it's connection with neural network. Additionally, it explains the pros and cons of AI along with the applications.
We present a novel code search approach for answering queries focused on
API-usage with code showing how the API should be used.
To construct a search index, we develop new techniques for statically mining
and consolidating temporal API specifications from code snippets. In
contrast to existing semantic-based techniques, our approach handles partial
programs in the form of code snippets. Handling snippets allows us to consume
code from various sources such as parts of open source projects,
educational resources (e.g. tutorials), and expert code sites. To handle code
snippets, our approach (i) extracts a possibly \emph{partial} temporal
specification from each snippet using a relatively precise static analysis
tracking a generalized notion of typestate, and (ii) consolidates the
partial temporal specifications, combining consistent partial information to
yield consolidated temporal specifications, each of which captures a full(er)
usage scenario.
To answer a search query, we define a notion of relaxed inclusion
matching a query against temporal specifications and their corresponding code
snippets.
We have implemented our approach in a tool called PRIME and applied it to
search for API usage of several challenging APIs. PRIME was able to analyze
and consolidate thousands of snippets per tested API, and our results
indicate that the combination of a relatively precise analysis and
consolidation allowed PRIME to answer challenging queries effectively.
Multi-dimensional exploration of API usage - ICPC13 - 21-05-13Coen De Roover
Ā
Presented at the 21st IEEE International Conference on Program Comprehension (ICPC 2013), San Francisco (USA). Website of the paper: http://softlang.uni-koblenz.de/explore-API-usage/
The document discusses API design best practices. It begins with an overview of API lifecycles and introduces two approaches to API design: design first and code first. It then outlines several design principles for APIs, including treating APIs as products and focusing on developer experience. The document also discusses OpenAPI Specification 3.0 and tools for API design like Stoplight, Restlet, and Apicurio. It concludes with complementary tools for API testing, mocking, and design.
Crossing the chasm between ontology engineering and application developmentPaola Espinoza-Arias
Ā
The document describes research on generating application programming interfaces (APIs) from ontologies to facilitate consumption of knowledge graphs by application developers. It presents a state of the art analysis of existing approaches for generating APIs from ontologies and outlines a proposed methodology. The methodology includes defining a method for generating APIs based on ontology artifacts like competency questions, and developing a tool called OATAPI to automate API generation. The goal is to help bridge the gap between ontology engineering and application development.
This document provides an overview of Shubhra Kar's presentation on using Node.js to build APIs and hyperscale the API economy. The presentation discusses using Node.js for mobile/omni-channel backends, high performance ESBs, and IoT. It also covers why Node.js is well-suited for APIs, which Node.js framework to choose, design patterns, and how to code and deploy an API in 10 minutes. The document includes graphs comparing Node.js performance to other solutions and discusses trends around microservices and decomposing monolithic APIs.
API workshop: Introduction to APIs (TC Camp)Tom Johnson
Ā
This is the introduction to API documentation that I gave at the TC Camp unconference. See http://idratherbewriting.com for more details.
The document provides an overview of API design. It discusses key concepts like the API hierarchy of needs which is inspired by Maslow's hierarchy of needs. It outlines different architectural styles for APIs including tunneling, URI, hypermedia, and event-driven. It also discusses architectural layers for APIs including security, caching, representation, and orchestration layers. Additionally, it introduces the USE paradigm for API design which emphasizes usability, scalability, and evolvability as important qualities for APIs. The document provides guidance on how to design APIs with these qualities in mind.
The document summarizes a seminar on C# and REST API services. It introduces C# as an object-oriented programming language created by Microsoft that runs on .NET. It then discusses REST APIs, which allow communication between clients and servers through HTTP requests. The main REST API methods are GET, POST, PUT, and DELETE. REST APIs offer advantages like ease of integration and use of HTTP but also have disadvantages like multiple round trips for related data.
This document discusses practices and tools for building better APIs. It outlines some key aspects of API quality, including value, usability, and stability. For usability, it discusses factors like learnability, efficiency, and errors based on a generic usability model. It also provides examples of API release notes to demonstrate concerns around stability and backward compatibility. The overall goal is to provide developers with perspectives and considerations for designing APIs that are easy to use and integrate with existing code.
Practices and tools for building better API (JFall 2013)Peter Hendriks
Ā
Een belangrijke voorwaarde om goede en leesbare Java code te schrijven is om gebruik te maken van een goede API. Een goede API helpt ontwikkelaars om sneller hoogwaardige code te schrijven. Het ontwerp van een API is daarom belangrijk, zeker als er grotere systemen worden gerealiseerd in teamverband. Moderne ontwikkeltools als Eclipse, IntelliJ IDEA en FindBugs helpen met het schrijven van goede API, en het detecteren van slecht gebruik. Deze sessie gaat in op de laatste ontwikkelingen en mogelijkheden, inclusief nieuwe taalmogelijkheden in Java 8. Er wordt hierbij gebruik gemaakt van praktische situaties en concrete codevoorbeelden, gebaseerd op echte ervaringen in grote codebases. Met praktische tips en toegankelijke tools kan al een grote stap gemaakt worden om in de praktijk beter met API ontwerp om te gaan!
Recent developments on the Web are marked by the growing support for the Linked Data initiative, which encourages government and public organisations, as well as private institutions, to expose their data on the Web. This results in a plentitude of multi-lingual document collections where the original resources are published in the language, in which they are available. The challenges of multilingualism present on the Semantic Web are also reflected in the context of services on the Web, characterised by the rapid increase in popularity and use of Web APIs, as indicated by the growing number of available APIs and the applications built on top of them. Web APIs are commonly described in plain-text as part of Web pages, following no particular guidelines and conforming to no standards, despite some initial approaches in the area. Therefore, API providers publish descriptions in any language they see fit, making the service discovery and the subsequent processing of the documentation challenging tasks. We present a cross-lingual approach that calculates semantic similarity of text to help classify and annotateWeb APIs, based on their textual descriptions. Furthermore, we show how our solution can be implemented as part of SWEET, which is a tool that enables the semi-automated creation of semantic Web API descriptions. In addition, we demonstrate how the cross-lingual approach can be adopted to support the language-independent discovery of Web APIs.
RESTLess Design with Apache Thrift: Experiences from Apache Airavatasmarru
Ā
Apache Airavata is software for providing services to manage scientific applications on a wide range of remote computing resources. Airavata can be used by both individual scientists to run scientific workflows as well as communities of scientists through Web browser interfaces. It is a challenge to bring all of Airavataās capabilities together in the single API layer that is our prerequisite for a 1.0 release. To support our diverse use cases, we have developed a rich data model and messaging format that we need to expose to client developers using many programming languages. We do not believe this is a good match for REST style services. In this presentation, we present our use and evaluation of Apache Thrift as an interface and data model definition tool, its use internally in Airavata, and its use to deliver and distribute client development kits.
The document discusses APIs, defining them as interfaces that allow applications to communicate and share data over a network. It notes that APIs act as an interface between clients and servers, exposing backend data through operations, inputs, outputs, and data types. The document also outlines the benefits of APIs in standardizing communication and enabling reusability. It introduces common API terminology and types, focusing on web APIs which are the most widely used.
APIs at Scale with TypeSpec by Mandy Whaley, MicrosoftNordic APIs
Ā
A presentation given by Mandy Whaley, Partner Director of Product, Azure Developer Tools at Microsoft, at our 2024 Austin API Summit, March 12-13.
Session Description:
TypeSpec is a new API description language developed and used by Microsoft to deliver APIs at a massive scale. Learn how Microsoft uses TypeSpec to deliver high quality services to millions of customers and across tens of thousands of API endpoints. We will show how to use this new language and the related IDE tooling to encapsulate common API patterns into reusable components, up-level API descriptions with business-specific metadata and behaviors, connect API guidelines to development time activities, maintain API consistency, and generate custom assets, all while interoperating with the OpenAPI ecosystem.
Content Strategy and Developer Engagement for DevPortalsAxway
Ā
Slides from Write the Docs Ottawa Meet Up at Shopify HQ in Canada, June 24, 2019
Weāll walk through 5 scenarios and concrete ways of reaching a developer community for frictionless and increased engagement.
The document discusses the need for standardized protocols to enable communication between semantic web clients and servers. It proposes two such protocols: RDF Net API and Topic Map Fragment Processing. RDF Net API defines operations like query, get statements, insert statements, and remove statements. It also defines HTTP and SOAP bindings. Topic Map Fragment Processing allows clients to retrieve and update fragments of topic maps. These protocols aim to fulfill the requirements for semantic web servers to enable querying, updating, and interacting with semantic web data in a distributed environment.
This document provides an overview of a project presentation on an online voting system. It discusses the objectives of creating an online system to make voting more efficient compared to traditional methods. It then outlines some key features of the project like secure login, viewing candidate profiles, and casting votes. The document also includes technological requirements, an overview of the system architecture using MVC, and an introduction to using ASP.NET as the development framework.
RAISE Lab at Dalhousie University
aims to develop tools and technologies for intelligent automation in software engineering. An overview is presented by Dr. Masud Rahman, Assistant Professor, Faculty of Computer Science, Dalhousie University, Canada.
The Forgotten Role of Search Queries in IR-based Bug Localization: An Empiric...Masud Rahman
Ā
The document summarizes a study on improving search queries for bug localization using natural language text from bug reports. The study evaluated different keyword selection techniques, generated optimal search queries using a genetic algorithm, and compared optimal versus non-optimal queries. Key findings include: 1) Current approaches failed to identify keywords for 34% of bug reports, 2) A genetic algorithm produced optimal queries that achieved up to 80% higher performance than baselines, and 3) Optimal queries differed in using less frequent, less ambiguous, noun-heavy keywords located in bug report bodies.
The document outlines Masud Rahman's PhD thesis proposal on supporting source code search with context-aware, analytics-driven query reformulation. The proposal discusses three research questions: 1) evaluating term weighting techniques for keyword selection from source code and bug reports, 2) incorporating bug report quality for local code search, and 3) leveraging crowd knowledge and data analytics to deliver query keywords. The contribution summary highlights techniques for term dependence, quality-aware bug localization, and using crowd knowledge and large data analytics.
PhD Comprehensive exam of Masud RahmanMasud Rahman
Ā
This document presents a systematic literature review of automated query reformulations for source code search. It discusses seven research questions explored in the review, including the methods, algorithms, data sources, evaluation metrics, challenges, publication trends, and comparisons between local and internet-scale code search queries. The review analyzed over 50 primary studies identified through a multi-database search and filtering process. Key findings include the predominant use of term weighting, query expansion and reduction techniques, evaluations based on standard information retrieval metrics, and various challenges like vocabulary mismatch that remain unsolved. Opportunities for future work are also identified, such as leveraging bug reports for keyword selection and using semantic representations to address vocabulary issues.
This document summarizes a talk given by Masud Rahman, a PhD candidate at the University of Saskatchewan. The talk focused on Rahman's PhD thesis research, which aims to improve code search by generating context-aware, analytics-driven queries through effective reformulation. The talk outlined three research questions around improving keyword selection, incorporating bug report quality, and using crowd knowledge and data analytics. It provided an overview of Rahman's PhD thesis and publications addressing the research questions. Evaluation methods for the proposed approaches were also discussed.
Supporting Source Code Search with Context-Aware and Semantics-Driven Code Se...Masud Rahman
Ā
PhD thesis of Dr. Masud Rahman from University of Saskatchewan, advised by Dr. Chanchal K. Roy. PDF link: https://harvest.usask.ca/handle/10388/12394
This document summarizes a study on improving bug localization through considering the quality of bug reports and reformulating bug report queries. The study analyzes 5,500 bug reports from eight projects and finds that existing bug localization techniques perform poorly when bug reports lack useful information or contain excessive stack traces. Preliminary findings suggest context-aware query reformulation may help address these limitations by improving the quality and relevance of the queries used.
This document summarizes research into the impact of continuous integration (CI) on code reviews. The researchers studied over 500,000 pull requests and builds from open source projects to answer three questions: 1) Whether build status influences code review participation, 2) If frequent builds improve review quality, and 3) Predicting if a build will trigger new reviews. They found that passed builds were more associated with new reviews and comments. Projects with frequent builds received more review comments that remained steady over time, unlike less frequently built projects. Their machine learning model could predict if a build would trigger new reviews with up to 64% accuracy.
This document presents research on predicting the usefulness of code review comments using textual features and developer experience. The researchers analyzed 1,482 code review comments, manually classified as useful or non-useful. They found non-useful comments had more stop words and less code elements, while useful comments had higher conceptual similarity to changed code. More experienced reviewers provided more useful comments. The researchers also built a Random Forest model that predicts comment usefulness with 66% accuracy, outperforming baselines. Their work provides the first automated approach to assess code review comment usefulness.
The document describes a technique called STRICT that uses TextRank and POSRank algorithms to identify important terms from a software change task description to generate an effective initial search query. An experiment on 1,939 change tasks from 8 open source projects found that STRICT improved the query effectiveness in 57.84% of cases compared to baseline queries like title alone. STRICT also showed better retrieval performance based on metrics like mean average precision and mean recall compared to state-of-the-art techniques. The approach validates the use of graph-based ranking algorithms to address the challenge of generating relevant initial search queries from natural language change task descriptions.
The document analyzes why some questions on Stack Overflow remain unresolved and explores whether machine learning can predict which questions will be unresolved. It finds that unresolved questions have higher topic entropy, meaning they are less specific. Owners of unresolved questions reject answers more often, have lower reputation, and are less active on Stack Overflow. Models using features like topic entropy, answer rejection ratio, and owner reputation achieved up to 78% accuracy at predicting unresolved questions. The study aims to help improve question quality on Stack Overflow.
This document analyzes data from over 78,000 pull requests on GitHub to understand why pull request failure rates are high. It finds that 57.05% of pull requests failed, most often due to issues with recursion/refactoring, database queries, arrays/functions. Programming languages like Java, JavaScript and Ruby saw more failed pull requests on average than PHP. Projects in IDE and framework domains had the most pull request activity. Older projects, projects with more forks/developers, and projects where developers had 20-50 months of experience saw the highest numbers of pull requests and failures. The study aims to help understand and address common reasons for pull request failures on GitHub.
The document describes a technique called CodeInsight that mines insightful code comments from crowdsourced knowledge on Stack Overflow. An exploratory study of Stack Overflow discussions found that around 22% of comments discuss tips, bugs, or warnings related to code examples. CodeInsight uses heuristics like popularity, relevance, comment rank, sentiment, and word count to retrieve these insightful comments for a given code segment. An empirical evaluation showed the technique could recall over 80% of relevant comments on average. A user study with professional developers found that 80% of the comments recommended by CodeInsight were accurate and useful.
This document proposes using TextRank to identify initial search terms for software change tasks. It adapts TextRank, originally used for keyword extraction and text summarization, to build a graph of terms from development artifacts and rank them. An evaluation on 349 change tasks from two systems identifies search terms, which outperform an existing approach in solving more tasks with higher precision and recall. The approach recommends initial search queries to help developers find relevant code artifacts when performing change tasks.
This document discusses a method called BRACK for identifying bug-prone API methods using crowdsourced knowledge from Stack Overflow. BRACK ranks API method invocations based on two heuristics: API Context-Susceptibility (ACS) which estimates how context can impact an invocation, and API Error-Associativity (AEA) which calculates the co-occurrence of an invocation in defective and corrected code segments. An evaluation of BRACK on 8 open source systems found that it achieved a top-3 accuracy of 75.93% in identifying bug-prone invocations, and that ACS was more effective than AEA. The evaluation also showed BRACK had no significant bias towards system size or API package and performed comparably
The document presents research on RACK, a tool that uses crowdsourced knowledge from Stack Overflow to reformulate natural language code search queries into relevant API names. The researchers analyzed Stack Overflow data to find that answers frequently refer to APIs by name and cover a high percentage of core APIs. They also found question titles contain terms relevant to real code search queries. RACK maps query terms to API names using this data, then searches GitHub code examples. An evaluation showed RACK returns relevant examples with 79% top-10 accuracy, outperforming existing techniques.
RACK is an approach that automatically recommends relevant APIs for code search queries using crowdsourced knowledge from Stack Overflow questions, answers, and titles. An exploratory study found that accepted Stack Overflow answers frequently mention API names and cover a large percentage of standard APIs. Question titles often contain keywords relevant to code search. RACK constructs an API-token mapping database from Stack Overflow and ranks APIs for a given query based on heuristics measuring keyword-API co-occurrence and coherence. An evaluation found RACK achieved around 79% top-10 accuracy and outperformed existing techniques, demonstrating the potential of leveraging crowdsourced technical knowledge for API recommendation.
QUICKAR is a technique for automatically reformulating code search queries using crowdsourced knowledge from Stack Overflow. It constructs an adjacency list database of terms from Stack Overflow question titles. For an initial search query, it identifies reformulation candidates by comparing the query terms to terms in the adjacency list database and project source code. In experiments, QUICKAR significantly outperformed a baseline technique, improving over 50% of queries while worsening less than 50%, by leveraging vocabulary from Stack Overflow to address mismatches between developer queries and code.
CORRECT is a code reviewer recommendation tool that:
- Recommends appropriate code reviewers automatically by mining developers' contributions across projects
- Provides recommendation rationales that fit within developers' workflows
- Achieves over 90% accuracy in recommending reviewers based on library and technology experience
- Outperforms an existing technique (RevFinder) with 92.15% top-5 accuracy, 85.93% mean precision and 81.39% mean recall
- Performs similarly on open source projects with 85.20% top-5 accuracy, demonstrating effectiveness for public and private codebases
World war-1(Causes & impacts at a glance) PPT by Simanchala Sarab(BABed,sem-4...larencebapu132
Ā
This is short and accurate description of World war-1 (1914-18)
It can give you the perfect factual conceptual clarity on the great war
Regards Simanchala Sarab
Student of BABed(ITEP, Secondary stage)in History at Guru Nanak Dev University Amritsar Punjab šš
Link your Lead Opportunities into Spreadsheet using odoo CRMCeline George
Ā
In Odoo 17 CRM, linking leads and opportunities to a spreadsheet can be done by exporting data or using Odooās built-in spreadsheet integration. To export, navigate to the CRM app, filter and select the relevant records, and then export the data in formats like CSV or XLSX, which can be opened in external spreadsheet tools such as Excel or Google Sheets.
APM event hosted by the Midlands Network on 30 April 2025.
Speaker: Sacha Hind, Senior Programme Manager, Network Rail
With fierce competition in todayās job market, candidates need a lot more than a good CV and interview skills to stand out from the crowd.
Based on her own experience of progressing to a senior project role and leading a team of 35 project professionals, Sacha shared not just how to land that dream role, but how to be successful in it and most importantly, how to enjoy it!
Sacha included her top tips for aspiring leaders ā the things you really need to know but people rarely tell you!
We also celebrated our Midlands Regional Network Awards 2025, and presenting the award for Midlands Student of the Year 2025.Ā
This session provided the opportunity for personal reflection on areas attendees are currently focussing on in order to be successful versus what really makes a difference.
Sacha answered some common questions about what it takes to thrive at a senior level in a fast-paced project environment: Do I need a degree? How do I balance work with family and life outside of work? How do I get leadership experience before I become a line manager?
The session was full of practical takeaways and the audience also had the opportunity to get their questions answered on the evening with a live Q&A session.
Attendees hopefully came away feeling more confident, motivated and empowered to progress their careers
The Pala kings were people-protectors. In fact, Gopal was elected to the throne only to end Matsya Nyaya. Bhagalpur Abhiledh states that Dharmapala imposed only fair taxes on the people. Rampala abolished the unjust taxes imposed by Bhima. The Pala rulers were lovers of learning. Vikramshila University was established by Dharmapala. He opened 50 other learning centers. A famous Buddhist scholar named Haribhadra was to be present in his court. Devpala appointed another Buddhist scholar named Veerdeva as the vice president of Nalanda Vihar. Among other scholars of this period, Sandhyakar Nandi, Chakrapani Dutta and Vajradatta are especially famous. Sandhyakar Nandi wrote the famous poem of this period 'Ramcharit'.
How to Manage Purchase Alternatives in Odoo 18Celine George
Ā
Managing purchase alternatives is crucial for ensuring a smooth and cost-effective procurement process. Odoo 18 provides robust tools to handle alternative vendors and products, enabling businesses to maintain flexibility and mitigate supply chain disruptions.
CBSE - Grade 8 - Science - Chemistry - Metals and Non Metals - WorksheetSritoma Majumder
Ā
Introduction
All the materials around us are made up of elements. These elements can be broadly divided into two major groups:
Metals
Non-Metals
Each group has its own unique physical and chemical properties. Let's understand them one by one.
Physical Properties
1. Appearance
Metals: Shiny (lustrous). Example: gold, silver, copper.
Non-metals: Dull appearance (except iodine, which is shiny).
2. Hardness
Metals: Generally hard. Example: iron.
Non-metals: Usually soft (except diamond, a form of carbon, which is very hard).
3. State
Metals: Mostly solids at room temperature (except mercury, which is a liquid).
Non-metals: Can be solids, liquids, or gases. Example: oxygen (gas), bromine (liquid), sulphur (solid).
4. Malleability
Metals: Can be hammered into thin sheets (malleable).
Non-metals: Not malleable. They break when hammered (brittle).
5. Ductility
Metals: Can be drawn into wires (ductile).
Non-metals: Not ductile.
6. Conductivity
Metals: Good conductors of heat and electricity.
Non-metals: Poor conductors (except graphite, which is a good conductor).
7. Sonorous Nature
Metals: Produce a ringing sound when struck.
Non-metals: Do not produce sound.
Chemical Properties
1. Reaction with Oxygen
Metals react with oxygen to form metal oxides.
These metal oxides are usually basic.
Non-metals react with oxygen to form non-metallic oxides.
These oxides are usually acidic.
2. Reaction with Water
Metals:
Some react vigorously (e.g., sodium).
Some react slowly (e.g., iron).
Some do not react at all (e.g., gold, silver).
Non-metals: Generally do not react with water.
3. Reaction with Acids
Metals react with acids to produce salt and hydrogen gas.
Non-metals: Do not react with acids.
4. Reaction with Bases
Some non-metals react with bases to form salts, but this is rare.
Metals generally do not react with bases directly (except amphoteric metals like aluminum and zinc).
Displacement Reaction
More reactive metals can displace less reactive metals from their salt solutions.
Uses of Metals
Iron: Making machines, tools, and buildings.
Aluminum: Used in aircraft, utensils.
Copper: Electrical wires.
Gold and Silver: Jewelry.
Zinc: Coating iron to prevent rusting (galvanization).
Uses of Non-Metals
Oxygen: Breathing.
Nitrogen: Fertilizers.
Chlorine: Water purification.
Carbon: Fuel (coal), steel-making (coke).
Iodine: Medicines.
Alloys
An alloy is a mixture of metals or a metal with a non-metal.
Alloys have improved properties like strength, resistance to rusting.
*Metamorphosis* is a biological process where an animal undergoes a dramatic transformation from a juvenile or larval stage to a adult stage, often involving significant changes in form and structure. This process is commonly seen in insects, amphibians, and some other animals.
Real GitHub Copilot Exam Dumps for SuccessMark Soia
Ā
Download updated GitHub Copilot exam dumps to boost your certification success. Get real exam questions and verified answers for guaranteed performance
Understanding PāN Junction Semiconductors: A Beginnerās GuideGS Virdi
Ā
Dive into the fundamentals of PāN junctions, the heart of every diode and semiconductor device. In this concise presentation, Dr. G.S. Virdi (Former Chief Scientist, CSIR-CEERI Pilani) covers:
What Is a PāN Junction? Learn how P-type and N-type materials join to create a diode.
Depletion Region & Biasing: See how forward and reverse bias shape the voltageācurrent behavior.
VāI Characteristics: Understand the curve that defines diode operation.
Real-World Uses: Discover common applications in rectifiers, signal clipping, and more.
Ideal for electronics students, hobbyists, and engineers seeking a clear, practical introduction to PāN junction semiconductors.
Understanding PāN Junction Semiconductors: A Beginnerās GuideGS Virdi
Ā
API Usage Pattern Extraction using Semantic Similarity
1. SEMANTIC NETWORK BASED API
USAGE PATTERN EXTRACTION &
LEARNING
Mohammad Masudur Rahman
[email protected]
Department of Computer Science
University of Saskatchewan
2. PRESENTATION OVERVIEW
Introduction
ļ¢ Motivating Example
ļ¢ Background Concepts
ļ¢ Proposed Approach
ļ¢ Semantic Network of Source code
ļ¢ API Usage Pattern Extraction
ļ¢ Pattern Learning & Visualization
ļ¢ Experimental Results & Discussions
ļ¢ Threats to Validity
ļ¢ Conclusion & Future Works
ļ¢
3. INTRODUCTION
API (Application Programming Interface) Libraries
ļ¢ API Documentation, API Browser, forums
ļ¢ API Usage learning for developers
ļ¢ Existing projects using APIs
ļ¢ API Usage Patterns
ļ¢
4. WHAT IS API USAGE PATTERN?
A frequent and consistent sequence of API method
calls and field accesses
ļ¢ Performs a particular programming task.
ļ¢ Widely used in multiple projects
ļ¢ Widely accepted by developers community
ļ¢
10. RESEARCH QUESTIONS
RQ 1: Can semantic network technologies
represent the semantics of OO source code
properly?
ļ¢ RQ 2: Can this representation be used for API
usage pattern extraction and learning?
ļ¢
11. BACKGROUND CONCEPTS
API Usage Patterns
ļ¢ API Usage Violation & Anomalies
ļ¢ Semantic Web
ļ¢ Semantic Network of Source Code
ļ¢ Resource Description Framework (RDF)
ļ¢ RDF Statement or Triples
ļ¢
16. API USAGE PATTERN EXTRACTION
Common Sub-graph Selection
Candidate API
usage Patterns
All Usages of
an API Class
Yes
Selected
API Usage
Patterns
Pattern
Score >
threshold ?
No
Discarded
17. EXPERIMENTAL RESULTS
25 Open source Projects
ļ¢ 3 API libraries (java.io, java.util, java.awt)
ļ¢ 250 API classes selected
ļ¢ API usages found for 113 API classes
ļ¢ Pattern found for 76 API classes
ļ¢ Total 776 patterns
ļ¢
22. RESULTS DISCUSSION
RQ 1: Can semantic network technologies
represent the semantics of OO source code
properly?
ļ¢ Graph-based API Usage Extraction by Nguyen et
al, FSE, 2009 : Incomplete semantics for edges and
attributes
ļ¢ Source code ontology by Wursch et al, ICSE, 2010
: Does not represent the complete source code
ļ¢ The proposed approach captures expression level
syntax and semantics
ļ¢ Focuses on API usage patterns
ļ¢
23. RESULTS DISCUSSION
RQ 2: Can this representation be used for API
usage pattern extraction and learning?
ļ¢ Successfully extracts 776 patterns for 76 API
classes from 25 open source projects
ļ¢ A potential approach to be explored more for API
usage pattern exploration
ļ¢ Visualization of RDF network helps in learning
ļ¢ Source code as visual entities rather than lines
ļ¢ More comprehensive idea about OO source code
ļ¢ Applicable for complex OO relationships
ļ¢ Very useful for quick learning
ļ¢
24. THREATS TO VALIDITY
Representing complete semantics: a non-trivial
task.
ļ¢ More expressions for more accurate representation
ļ¢ RDF pattern visualization within limited display
ļ¢ Need to be introduced with RDF convention
ļ¢
25. CONCLUSION & FUTURE WORKS
Applicability of semantic web technologies for API
usage pattern extraction
ļ¢ Semantic representation for learning by the
developers
ļ¢ Real world user study
ļ¢ Extracted patterns for automatic code completion in
the IDE.
ļ¢ Extracted patterns for API violation and anomaly
detection
ļ¢
27. REFERENCES
[1] Semantic web diagram.URL http://www.w3.org/
Talks/2002/10/16-sw/slide7-0.html.
[2] Tung Thanh Nguyen, Hoan Anh Nguyen, NamH.Pham, JafarM.Al-Kofahi, and
TienN.Nguyen. Graph-based mining of multiple object usage patterns. In Proc.
ESEC/FSE, 2009, pages 383-392.
[3] M.Wursch, G.Ghezzi, G.Reif,and H.C.Gall. Supporting developers with natural
language queries. In Proc. ICSE, 2010,pages 165-174
[4] Tao Xie and Jian Pei. Mapo:mining api usages from
open source repositories. In Proc. MSR, 2006, pages 574-57
[5] Semantic web technology.URL http://www.w3.org/
2001/sw
[6] Visual learning style.URL http://www.learning-styles-online.com/style/visualspatial.
[7] Apache Jena framework.URL http://jena.apache.org/.
[8] Javaparser-java 1.5 parser and ast.URL http://code.google.com/p/javaparser/.
[9] RDF-gravity tool.URL http://semweb.salzburgresearch.at/apps/rdf-gravity/.
Editor's Notes
#2: Hello everybodyWelcome to my presentationThis is Masudur RahmanToday I am going to present my research project titled as āSemantic network based API usage pattern extraction and learningāHope you will enjoy the presentation
#3: In my presentation I am going to cover the following topics.
#4: API or Application programming interface is an interesting concept in modern OO programming languages as it encourages to reuse the existing programming resources without reinventing the wheels.But it is tough for the developer to master the APIs when there are a good number of complex APIs involved and there is no sufficient help to learn how to use those APIs. For example, we can mention API documentation, forum or API browser; however, they are not good enough to meet the developerās learning need as they contain some simple examples or troubleshooting information. So, one possible solution is-consulting existing projects by other developers. Those projects have used the APIs and can provide some practical examples of the usage.However, we can not capture the whole API usage, rather we need to extract the API usage pattern which can provide sufficient knowledge of how to use an API.Here comes the term -API usage pattern
#5: Now the question is- what is an API usage pattern?When a frequent and consistent sequence of API method calls and field accesses perform a particular programming task, then that sequence is called API usage pattern.It has to be widely used in different projectsIt has to be widely accepted by the developers community
#6: For example, this is a code example for reading content from a file. From our research, we found that it is a common and frequent sequence of API calls to read the file content in numerous projects.It contains calls involved with Scanner class.So, it can be considered as a API usage pattern for Scanner API class.We are interested to extract such type of usage patterns for different API classesfrom different open source projects so that developer can learn them and use them in their works.
#7: From our research, we got there are two board ways for API usage pattern extraction.Frequent method sequence miningGraph-based approachIn our research, we are following a relatively novel approach for API usage pattern extraction.We are using semantic web technologies.Ok lets explain the semantic web technologies.
#8: Besides API usage pattern the most important concept needs to be explained is semantic web or network.Semantic web is a new breed of world wide web found by Tim Berners Lee. It consists of nodes and meaningful connecting edges which are not like simple hyperlinks rather they contains meaningful information. And each node is called a resource which can be a document, person, image, song or anything that can be identified by a REST URI in the web.Basically, semantic web is an efficient tool for knowledge representation and inference. For example, this is a simple semantic network representing some knowledge. Here, from the network, we can retrieve the living place information of a person written a particular software manual. This is easy for semantic web but relatively hard for current structure of www.We are interested to apply this kind of structure to capture the source code knowledge and use it for API usage pattern extraction and learning.
#9: Let us consider a new developer has some knowledge about OO programming and he is assigned to fix a problem that involves complex API.He has to understand and learn the API to use in the work. Here is the example that opens a file and read the content of a file.The code is simple and contains two object usage ā Scanner and File.But, the developerās understanding about the source code depends on his knowledge about Java syntax and he has to grab the concepts from some source code lines which is not always easy, quick or helpful.
#10: But if you consider this one, does it make sense?This is a semantic network version of the source code example I just showed. We, people are really visual beings and we understand relationships more easily from graphics or structures rather than texts. It looks a bit colorful, but a mediocre developer can understand the OO relationships between two objects without being concerned about the java syntax. For example, developer can understand the relationship between Scanner and File object. For example, here it shows that File is a parameter to the constructor of Scanner object. Similarly, other relationships can be represented like hasMethod, hasChild, hasContstructor can be in a simple graphical way.So, basically this type of representation of source code is really can help in understanding and learning for the developer.Also the structure can reflect the semantics and relationship among different source code entities like class, method, object, instances in a novel way which can be manipulated for API usage pattern extraction.Thus it is helpful for our research goal and we are motivated to use semantic network of source code for the research.
#11: In this research, we try to answer these two research questions.RQ 1: Can semantic network technologies represent the semantics of OO source code properly?RQ 2: Can this representation be used for API usage pattern extraction and learning?
#12: Here are some background concepts that we have explained so far. However, now we will discuss about the RDF, the framework used to implement the Semantic web or network.
#13: However, semantic web is implemented using a framework called Resource Description Framework (RDF).The building block of RDF network is RDF statement or triples. Each statement represent a fact or a piece of knowledge about the network or system.Each triple has 3 components ā subject, predicate and object.Subject: the entity about which the fact is described.Predicate: the attribute of the subjectObject: the attribute values of the subject.For example, Scanner.new is a node which type is a constructor.
#15: Now comes the proposed approach for API usage pattern extraction and learning.At first we selected 25 open source projects and a list of API classes from 3 standard java libraries. Then we look for each java class from the open source projects for the API usages? We consider the java methods or constructors as the containers of the API usages. So, we extract them and parse them using AST parser provided by Eclipse.After parsing, we used the selected expression to develop the semantic network of source code that can be considered as an equivalent graphical representation of source code. Then we used those usage graphs to extract the API usage patterns.However, this is some overview, now, we describe some important steps more deeply.
#16: Representing source code into equivalent semantic network. It is obviously a challenging task. However, we figured out a way to do that.Java source code is parsed by the AST parser provided by Eclipse. We parsed each Java statement up to expression level and got numbers of expression that express the semantics. However, in this research we are concerned with API usage patterns; so, we mainly focused on the expressions that reflect the OO semantics such as method call expression, field access expression, object creation expression and so on.We also used an advanced framework to deal with RDF technologies called Jena by Apache and thus we used all three ā expression, selection rules, predicate list and Jena to develop the RDF network of each API usage.Basically, we developed the triples that contain those three parts ā subject, predicate and object to represent every fact about the source code semantics and knowledge. Each semantic network is formed based on those triples. Thus, we got an equivalent semantic network for each API usage in the source code.Question is why do we need to represent the source in this way? Answer: Analyzing and processing source code directly is not easy. So, we need a structure which can be programmatically manipulated. Semantic web like structure provides more strength with its reasoning power through SPARQL.
#17: Now comes the API usage pattern extraction from the RDF API usages.Basically, we exploited the strength of Jena framework for this purpose. From a list of usage graphs, we extracted all possible common subsets that capture the API calls, object creation, field access and all other API related information. These subsets are the isomorphic sub-graphs of each other and the possible candidates for the API usage patterns.However, then we calculated the score of each pattern candidate based on their frequency in the same project and frequency in multiple projects. Then, based on some thresholds, we considered a candidate pattern as a selected pattern for an API class.
#18: Now comes the experimental results.We used 25 open source projects from different domains like java graphics, image manipulation, networking, domain management, utilities etc.We chose 3 standard API libraries and 250 classes from them.We detected the usages of 113 classes in those projects, however, we are able to extract patterns for 76 API classes.In total, we extracted 776 distinct patterns.
#19: From our experiment, we extracted this type of usage patterns from the API usage.For example, this is an API usage pattern for BufferedInputStream API class. It is a sub-graph of the total API usage.This sub-graph of sub-network tells us how to create an object of a BufferedInputStream object.Create a File object and use it as a parameter to the constructor of FileInputStream.The use that FileInputStream object to construct the BufferedInputStream object.
#20: While the semantic representation can be used for learning and understanding, it can also converted into the corresponding source code skeleton.So, basically, this is the source code version of the API usage patterns and it also represent the same information as the network does.For this task, we actually parsed the semantic network, that means the triples to generate the code skeletons which can be helpful for the developer in writing the actual code.
#21: Here is the table that shows a portion of our results.For example, JHotdraw7 is a commonly used java project for different software maintenance activities.We found 689 java classes, 7330 methods and constructors49 API classes are found in the project and 2547 patterns are used.However, 462 distinct patterns are extracted We applied the experiments on 25 projects and we found our approach quite promising in extracting the API usage patterns.
#22: We compared our results with the results of Nguyen et al, FSE, 2009.We considered top 5 projects based on their size and API patterns found.The graph shows average no. of patterns found per project class file. Here, we can see that our approach shows better performance in case of 3 projects. Also we notice a regular pattern in our results which is absent the Nguyenās approach.Basically, we checked those last 3 projects and found they are highly popular and active in real world. Additionally, we found that they are involved with more API usages than other projects. So, we can also infer that advanced and frequent API usage may be a possible cause for their popularity.Though, we used a different set of projects than Nguyen et al, we found an interesting correlation between these two set of results.Thus, it is reasonable to think that the proposed approach is a suitable candidate for API usage pattern extraction. However, we are working on to make it more efficient.
#23: Now comes about the answers of the research questions we stated at the very beginning.RQ 1: Can semantic network technologies represent the semantics of OO source code properly?Existing work by Nguyen et al uses a graph-based approach but the source code representation was not completely semantic as the connecting edges were treated too abstractly such as data dependency or control dependency, but our approach decomposes that relationships and dependency into more granular level and more importantly, ours one can be used for knowledge inference.Existing work by Wursch et al develops the source code ontology, but that is not a proper representation of source code, rather it contains partial information about the source code.So none of the existing works actually convert the source code into a semantic representation this much. Our approach can capture the semantics of OO source code more broadly than existing approaches.
#24: RQ 2: Can this representation be used for API usage pattern extraction and learning?Yes, the semantic representation is quite helpful for API usage pattern extraction as we have already did that.Moreover, this representation is found as a potential approach for learning API by the developers because of its visual and descriptive logic nature.Basically, we try to add a novel concept for API learning and understanding.We are still working on it and this current outcome can be considered as a preliminary results of the whole idea.
#25: While working, we faced few challenges which we tried to overcome.The complete semantic representation is a non-trivial task as it involves too many expression of a complete programming language. In this research, we tried to capture the OO features/concepts of Java as we focused on API usage patterns. But if more expressions are considered, more accurate representation is possible.We also found that RDF visualization within a limited display is challenging.
#26: So, we proposed a new approach for representing OO source code in a semantic network fashion which is helpful forAPI usage pattern extraction, learning and visualization.More importantly, it capture the source code semantics than existing graph based approaches.This research also leads us to further research problem and we have some future plans:We will conduct a real world user study to determine its real benefitsWe will apply the extracted API usage patterns for code completion in the Eclipse IDEAlso will be used for API usage violation or anomaly detection.
#27: Thatās all about my presentation.Thanks to everybody.