Artificial Intelligence
Programming with data inferences.
Programming with data inferences.
From game servers to virtual reality
The building blocks for software construction.
Getting insights from software-as-data
Secure coding practices
When code becomes the subject of study, we do software analytics. A few decades ago, software analytics consisted just of manual code reviews and simple scripts that computed software metrics. These days, there is an enormous amount of code to study, from open source components to large proprietary systems, and inspections have become unfeasible without the help of dedicated tools. In some cases, those tools need to be able to work with terabytes of code-as-data.
We have a long experience with software analytics at-scale, including performing a scan of close to 5 million projects hosted in GitHub in search of duplicate and near-duplicate files, and serving as expert witness in cases involving large software systems. We are also very familiar with the research literature in this area.
The world of gaming and other 3D immersive environments is booming, and is expected to continue to grow. The software powering these applications is some of the most sophisticated software in use today. From rendering pipelines to physics simulations and distributed state synchronization, this code is not for the faint of heart. Then there are the games and environments themselves, developed by artists and story tellers, and supported by game programmers.
We have a long experience with these systems, having been involved in the development of OpenSimulator, an open source equivalent of Second Life™, developing environments with the Unreal engine and Unity3D, and serving as expert in litigations.
Having gone through very high highs and very low lows over the years, AI is now all the rage. Again. This time, deep learning is proving to be impressive enough to warrant the excitement. While the mathematics of deep learning has been around for over 70 years, only now do we have computing infrastructures that are powerful enough to unleash its predictive power. More and more, industry is including machine learning components into their software. These components are very different from traditionally-built software.
We have experience with applying statistical machine learning and deep learning, including developing a duplicate detector with a ML component, and exploring methods to detect model theft. We are very familiar with the research literature in the application of machine learning for software tools.
The field of cybersecurity is vast. One particular area in that vast field is software security, i.e. the art of writing programs that are hardened against external confidentiality, integrity and availability threats. Unfortunately, software security is often neglected when the focus is on feature development. Writing secure programs is more of a mindset than a skill.
We have a long experience in this area, some of which built the hard way in the battlefield.
Inside every software application, there exists a hidden structure made up of foundational software. These are the primitive building blocks without which modern software would not be feasible. These building blocks are typically, but not always, open source, and, because of that, they have become commodities. They are developed by a relatively small group of special-purpose programmers and used by millions of application programmers.
We have a long experience of research in programming foundations, including the design of new programming languages, the implementation of interpreters, compilers, scripts engines, language runtimes, search engines, etc. We are also familiar with the research literature in this area.