Goto

Collaborating Authors

 Object-Oriented Architecture


Perspectival Knowledge in PSOA RuleML: Representation, Model Theory, and Translation

arXiv.org Artificial Intelligence

In Positional-Slotted Object-Applicative (PSOA) RuleML, a predicate application (atom) can have an Object IDentifier (OID) and descriptors that may be positional arguments (tuples) or attribute-value pairs (slots). PSOA RuleML 1.0 specifies for each descriptor whether it is to be interpreted under the perspective of the predicate in whose scope it occurs. This perspectivity dimension refines the space between oidless, positional atoms (relationships) and oidful, slotted atoms (frames): While relationships use only a predicate-scope-sensitive (predicate-dependent) tuple and frames use only predicate-scope-insensitive (predicate-independent) slots, PSOA RuleML 1.0 uses a systematics of orthogonal constructs also permitting atoms with (predicate-)independent tuples and atoms with (predicate-)dependent slots. This supports data and knowledge representation where a slot attribute can have different values depending on the predicate. PSOA thus extends object-oriented multi-membership and multiple inheritance. Based on objectification, PSOA laws are given: Besides unscoping and centralization, the semantic restriction and transformation of describution permits rescoping of one atom's independent descriptors to another atom with the same OID but a different predicate. For inheritance, default descriptors are realized by rules. On top of a metamodel and a Grailog visualization, PSOA's atom systematics for facts, queries, and rules is explained. The presentation and (XML-)serialization syntaxes of PSOA RuleML 1.0 are introduced. Its model-theoretic semantics is formalized by extending the interpretation functions for dependent descriptors. The open PSOATransRun system since Version 1.3 realizes PSOA RuleML 1.0 by a translator to runtime predicates, including for dependent tuples (prdtupterm) and slots (prdsloterm). Our tests show efficiency advantages of dependent and tupled modeling.


ACM's 2018 General Election

Communications of the ACM

The ACM constitution provides that our Association hold a general election in the even-numbered years for the positions of President, Vice President, Secretary/Treasurer, and Members-at-Large. Biographical information and statements of the candidates appear on the following pages (candidates' names appear in random order). In addition to the election of ACM's officers--President, Vice President, Secretary/Treasurer--two Members-at-Large will be elected to serve on ACM Council. Please refer to the instructions posted at https://www.esc-vote.com/acm2018. To access the secure voting site, you will need to enter your email address (the email address associated with your ACM member record) and your unique PIN provided by Election Services Co. Should you wish to vote by paper ballot please contact Election Services Co. to request a paper copy of the ballot and follow the postal mail ballot procedures: [email protected] or 1-866-720-4357. Please return your ballot in the enclosed envelope, which must be signed by you on the outside in the space provided. The signed ballot envelope may be inserted into a separate envelope for mailing if you prefer this method. All ballots must be received by no later than 16:00 UTC on 24 May 2018. Validation by the Tellers Committee will take place at 14:00 UTC on 29 May 2018. Jack Davidson's research interests include compilers, computer architecture, system software, embedded systems, computer security, and computer science education. He is co-author of two introductory textbooks: C Program Design: An Introduction to Object-Oriented Programming and Java 5.0 Program Design: An Introduction to Programming and Object-oriented Design. Professionally, he has helped organize many conferences across several fields.


Action Categorization for Computationally Improved Task Learning and Planning

arXiv.org Artificial Intelligence

This paper explores the problem of task learning and planning, contributing the Action-Category Representation (ACR) to improve computational performance of both Planning and Reinforcement Learning (RL). ACR is an algorithm-agnostic, abstract data representation that maps objects to action categories (groups of actions), inspired by the psychological concept of action codes. We validate our approach in StarCraft and Lightworld domains; our results demonstrate several benefits of ACR relating to improved computational performance of planning and RL, by reducing the action space for the agent.


IBM Blockchain Foundation for Developers Coursera

#artificialintelligence

About this course: If you're a software developer and new to blockchain, this is the course for you. Several experienced IBM blockchain developer advocates will lead you through a series of videos that describe high-level concepts, components, and strategies on building blockchain business networks. You'll also get hands-on experience modeling and building blockchain networks as well as create your first blockchain application. The first part of this course covers basic concepts of blockchain, and no programming skills are required. However, to complete three of the four labs, you must understand basic software object-oriented programming and how to use the command line. It's also helpful, but not required, that you can write code in JavaScript.


Automated Refactoring of Object-Oriented Code Using Clustering Ensembles

AAAI Conferences

In this paper we are approaching the problem of automatic refactoring detection for object-oriented systems. An approach based on clustering ensembles is proposed, several heuristics to existing algorithms and to filtering and combining their results are discussed. An experimental validation of the proposed approach on an open source project is proposed. The obtained results illustrate that the introduced approach could be successfully used to improve existing integrated development environments, providing developers with one more tool to reduce complexity of their projects.


Best Programming Language For Games

#artificialintelligence

Playing games, and developing and designing one are two very different things. Game developers though have to design the interface and work on all the intricate things related to a game but should also have a brief knowledge about the programming languages. Game developers don't have to be pro in all the programming languages but there are some that are needed to be known. In this post, we have listed some of the important and best programming languages that you should know about when developing games. C is one of the toughest and important programming languages.


"Spaghetti Code": Complexity and Artificial Intelligence NEUROMORPHIC TECHNOLOGIES

@machinelearnbot

The "spaghetti code" is a pejorative term to refer to computer programs that have a complex and incomprehensible flow control structure. Its name derives from the fact that this type of code seems to resemble a plate of spaghetti, that is, a pile of intricate and knotted threads. Traditionally this style of programming is usually associated with basic and ancient languages, where the flow was controlled by very primitive control statements such as GO TO and using line numbers. An example of language that invited the use of spaghetti code is Microsoft's QBasic in its first versions. Throughout these decades programming has been evolving, from spaghetti code to functional programming and from functional programming to object-oriented programming with modularity, abstraction, encapsulation, decoupling capacity.


Python vs R for Artificial Intelligence, Machine Learning, and Data Science

#artificialintelligence

Ah yes, the debate about which programming language, Python or R, is better for data science. In this series, I am considering machine learning and artificial intelligence as included in the term data science. This is almost the data science equivalent of tabs vs spaces for software engineers, at least at the time of this writing. This series is intended to be a somewhat definitive guide on this topic, including recommendations for languages and packages (aka libraries) applicable to different use cases, including data science in production and big data scenarios. This series is not intended to give side-by-side code comparisons, as there are plenty of other articles covering that. From my experience, which language to use is one of, if not the first question that someone interested in learning data science wants answered.


AI Model Architecture

#artificialintelligence

I've been promising since I started this blog to present some of the key design decisions and architectural choices we have made. Time constraints have limited that but this weekend I have finally put together an overview of what we're doing and how we approach the problem. Just for clarity, this architecture is the full solution when we go into production. The infrastructure we are using for our live trading diary is identical except it doesn't link through to the hedging engine. With the relatively small amount of capital we are trading with this level of integration wasn't required – but it will be essential as we move onto a full production footing.


Introduction to Functional Programming in Python

@machinelearnbot

Most of us have been introduced to Python as an object-oriented language; a language exclusively using classes to build our programs. While classes, and objects, are easy to start working with, there are other ways to write your Python code. Languages like Java can make it hard to move away from object-oriented thinking, but Python makes it easy. Given that Python facilitates different approaches to writing code, a logical follow-up question is: what is a different way to write code? While there are several answers to this question, the most common alternative style of writing code is called functional programming.