Category Archives: computer software

Semalt Expert: Know Your Malware

Computer users always have to deal with issues that affect the computer, whether the issue is internally developed or it comes from external sources. One of the major concerns users have to deal with on a daily basis is the safety of their computer with relation to malware infection. No user wants to see his or her computer acting in a way suggesting that it might be infected. Signs such as slow performance or constant freezing of the system drive one into thinking that malware has got into the computer, and it’s really a big worry.

The most common suspect of a computer acting up is a virus, but sometimes it’s malware, spyware or adware. To avoid the worry of these things getting into your computer, Lisa Mitchell, the Semalt Customer Success Manager, offers to consider the following security measures:

Installing anti-virus or anti-malware software

Computer systems vendors and other IT service providers offer anti-virus with anti-adware, anti-spyware and other tools meant to keep every kind of internet security attack on the computer at bay. Security enforcement through anti-malware is entirely the responsibility of the computer owner, but uninformed users don’t realize it. There are those who’ll even uninstall malware protection software citing that it’s affecting the computer’s speed and performance. You cannot make this mistake if you want your computer to serve you for long. If your computer’s performance is going down, you better add more RAM than uninstall critical applications like anti-virus applications.

Keeping computer software updated

This is another aspect of internet security that many people often forget. It’s important that all software installed on a computer is kept up-to-date at all times. IT is the fastest growing industry, and as so, new advancements (both good and bad) are discovered each other day. As software providers are busy looking for ways to improve their products, malware creators and perpetrators are always looking for loop holes in the systems and applications to spread their malware. Luckily, competitive software providers produce regular updates and patches to their systems to make sure all loop holes are closed. That’s why you need to apply the updates and patches as soon as they come out because they are meant to keep your computer safer.

Regular computer scans

Most anti-malware software is designed to perform regular scans as per a certain schedule, but sometimes a computer user can change these settings. Maintaining the default settings allow for regular automatic scans to ensure that any detected malware is destroyed before it gets into the computer. And if you feel like the set frequency for automatic scans is unsatisfactory, you can perform a manual virus scan at any time to ensure that the computer is clean and safe.

Securing your network

Malware can be spread to computers connected to a network. That means if you have a network of 10 computers connected to a network, even though simple methods like Wi-Fi, and one computer is infected, then all the other 9 computers can easily get infected too. Keeping computer networks secure entails putting in place strong authentication measures to control unauthorized access to the network.

As long as a computer is connected to the internet, there are endless possibilities of malware getting into the computer. But the above methods, if used properly, can help a great deal in avoiding malware infections and keeping the computer, the files, and the user safe from various forms of cyber crime.

Software quality assurance and successful Software Testing

Business models and markets change faster and moving towards digital resources than the applications that support them can be developed, software quality assurance is often first to be cut from the budget or schedule despite the fact that software defects have a direct, negative impact on profitability. Even a small number of defects can have a catastrophic impact on a business, its customers, and its partners. It is estimated that a software defect found and fixed post-production costs 100 times more than if the defect was found in the design or early stage.

Quality assurance and software testing are very important. Quality Assurance testing is employed to reduce possible defects in every stage of the software development life cycle. The 2003 book “Managing Software Engineering Knowledge” states “the focus of [Software Quality Assurance] is to monitor continuously throughout the Software Development Life Cycle to ensure the quality of the delivered products”.

This requires monitoring both the processes and the products. In process assurance, SQA provides management with objective feedback regarding compliance to approved plans, procedures, standards, and analyses. Product assurance activities focus on the changing level of product quality within each phase of the life cycle, such as the requirements, design, code, and test plan. The objective is to identify and eliminate defects throughout the life cycle as early as possible.

5 Most Effective Ways to Go to Successful Mobile Application Tests

Mobile devices are growing popularity on the daily basis. Around 3 million mobile apps are available in the App Store and Google Play and the number still continues to grow. With the sheer number of apps and the ever growing complexity of the mobile ecosystem, creating loyal users for a new app is quite challenging.

In fact, several researches reveal that one of the main reasons why users uninstall apps right after downloading them is because of issues caused by bugs and lack of proper quality assurance. Freezing of the Phone to crashes or quality loss in the battery are few common reasons due to which 50% of them delete the app after installation and 96% write a bad review. As a result, the importance of mobile testing has become increasingly crucial so that the app being delivered is not unstable and buggy.

1. Thinking From User’s Perspective

Putting Google aside for a moment let’s focus on your visitors. Thinking from the user’s perspective is one of the most effective ways for mobile testing. After all, there could be different users using the same mobile for different purposes. For instance, a small businessman may require apps related to his social accounts so that he can sell his products easily while a student would prefer having apps that provide more fun and entertainment. So, as a best mobile app development company if you are clear with your target audience perspective then all the efforts will be made to improve the user experience. Let’s take another example, I am testing an app which is mostly being used by a user who loves music. Which I need to make sure that the user does not find any issues related to the quality of music as well as looking for his favorite song. In addition to this, the playlist created should be saved properly and adding or removing songs should be made easy.

2. Test your target OS platforms and versions

It may sound pretty obvious that your app testing starts with identifying the major OS platforms, be it Android, IOS or windows. But there are times when a hasty testing process might just call for using emulators that stimulate those operating systems. Although, emulators don’t include all features that different devices have. Moreover, some of them may cause the problems for the app. So, make sure to test your app on the operating systems you need to support using the physical devices such as phones and tablets. Now we all are well aware regarding the fact that each operating system has more than one version available in the market. Which means if your mobile app is designed for IOS 8 and later, it is advisable to test for versions 8.0, 8.1, 8.2 and of course on real hardware.

3. Have You Checked The UI On Different Screen Sizes

Designing for all varying screens sizes especially in the Android market can be considered as a big challenge. The app requires performing well with all of them. And if not, then there might be a good chance that a user will uninstall the app on the immediate basis. So what can be done is? Map all the models and test the app on each screen as well as each device. If you have two different models with same screen size then it is not necessary to test UI on both devices. For example, if the app supports bothiPhone 7 and iPhone 7+, testing only one of them will be more than enough.

4. Monitor battery use

A recent study showed that 55% of users have experienced issues with apps that almost drained their phone batteries. As a result, it is very important your app testing procedure includes a look at battery consumption. It may quite interest you to know that IOS all latest versions comes with a feature that lists all the installed apps on the phone and the battery consumption of each of them. While for Android, a tool named Battery Stats Plus is being widely used for discovering how much power an app is using.

5. Do the testing with the full data load

Many times apps put through QA in an app testing environment don’t include the full data load. For example, an app is released in 20 or more countries might be pulling data from 2-3 countries in the test environment. As a result, a missing scrollbar might go unnoticed. And fewer data in a test environment might lead you to believe that the performance is great. But during the production environment, the app might turn out to be more sluggish than expected.

 

The right way to convert a website into an Android app – the optimal way to follow

App availability has substantial pros, moreover that we live in a mobile world, more and more people use tablets and smartphones. So even if you have a website, you should pay your attention to the alternatives of how to convert website to Android app. And we will scrutinize the conversion process step by step.

Steps to convert your website into an Android app
What is the process of conversion? You know, there are several resources that can turn your website into an app even if you are not engaged in programming, but it will never be the same as your website. If you want to have a serious powerful app, only software developers can help you. What do developers need to implement it? They perform the following steps.

1) Website functionality. First specialists should list all website features to understand how the future app should look, what it will perform. It is worth noting that app cannot be exactly the same as a website. A number of features will vary since some features have reason only on the website, as it was noted above.

2) Development cost estimate. Considering a number of features to be integrated, their complexity, sales department can summarize how much the app development will be and how properly make app from website.

3) User story. The project manager is writing the user story for developers. What is this? It is detailed feature list that allows developers to solve many important issues even before they start coding. They are looking for the best options how to implement the required functionality.

4) UI/UX design. The designer creates the optimal user experience for your future app and pleasing interface that will be attractive for you and future users. Color spectrum and color background can be the same as that of a website, but design shall be developed on the basis of mobile platform and particularities of mobile devices. If you don’t know how to make website into an app using special designing patterns, experienced designers will help you.

5) Development process. Here Android developers are applying their high skills. Apart from using Android Studio, integrated development environment for the app development, they need to apply some other technologies for the correct back-end development when you want to convert site to mobile app.

RESTful API
Service that determines feature suite developers can and get feedback. Interaction is performed via HTTP protocol. Widespread use of HTTP protocol is the advantage of such approach. Therefore RESTful API can be used almost from any programming language.

Database development
The database is one or several files intended for storing, changing and processing of large volumes of interrelated information. And developers need to create the new database for the mobile app.

Pagination
It is a tool that divides all content into separate pages. If you see, for example, a number of pages at the bottom of the page, you can choose any page to see what you need. It is what pagination does. It is very convenient tool in news apps.

Important! Summarizing all the above, it is very important to note that communication with database and server is implemented in a different way on the web and mobile app. You should know it when you learn how to make an app from a website.

Besides, mobile app structure also differs from the website – the app can connect directly to the database, whereas in the other scheme server will be communication point between database and app.

In some cases, developers can just take data from your website server for the new app, but only if the server is shaped up for the mobile OS.

Software-based systems can improve more ability to determine the cause of ischemic stroke

Determining the cause of an ischemic stroke — one caused by an interruption of blood supply — is critical to preventing a second stroke and is a primary focus in the evaluation of stroke patients. But despite that importance, physicians have long lacked a robust and objective means of doing so. Now a team of investigators at the Athinoula A. Martinos Center for Biomedical Imaging at the Massachusetts General Hospital (MGH) and the MGH Stroke Service have developed a software package that provides evidence-based, automated support for diagnosing the cause of stroke. Their study validating the package — called Causative Classification of Stroke (CCS) — was published online in JAMA Neurology.

“This was a much-needed study because, although stroke classifications systems are often used in research and clinical practice, these systems are not always able to produce subtypes with discrete pathophysiological, diagnostic and prognostic characteristics,” says Hakan Ay, MD, a vascular neurologist, Martinos Center investigator and senior author of the JAMA Neurology paper. “We found that the CCS-based classifications provided better correlations between clinical and imaging stroke features and were better able to discriminate among stroke outcomes than were two conventional, non-automated classification methods.”

There are more than 150 different possible causes — or etiologies — of ischemic stroke, and approximately half of patients exhibit features suggesting more than one possible cause. This leads to considerable complexity in determining the cause of a stroke and, in roughly one of two patients, can lead to disagreements among physicians about the cause. The CCS software helps to reduce this complexity by exploiting classification criteria that are well defined, replicable and based on evidence rather than subjective assessment.

The CCS software does this in several ways. First, it weights the possible etiologies by considering the relative potential of each to cause a stroke. Second, in the presence of multiple potential causes it incorporates the clinical and imaging features that make one mechanism more probable than others for an individual patient. Third, it determines the likelihood of that cause by taking into account the number of diagnostic tests that were performed. And finally, it ensures that data is entered in a consistent manner. The software can also serve as an important research tool, by providing investigators with both the ability to examine how stroke etiologies interact with one another and the flexibility to define new etiology subtypes according to the needs of the individual research project.

The MGH team previously showed that use of the CCS algorithm reduced the disagreement rate among physicians from 50 percent to approximately 20 percent. The recently publishedJAMA Neurology study further established the utility of the algorithm by demonstrating its ability to generate categories of etiologies with different clinical, imaging and prognostic characteristics for 1,816 ischemic stroke patients enrolled in two previous MGH-based studies. Based on patient data, CCS was able to assign etiologies to 20 to 40 percent of the patients for which two other systems were unable to determine a cause. It also was better at determining the likelihood of second stroke within 90 days.

“The validity data that have emerged from the current study add to the utility of the software-based approach and highlight once again that careful identification and accurate classification of the underlying etiology is paramount for every patient with stroke,” says Ay, who is an associate professor of Radiology at Harvard Medical School. “The information the software provides not only is critical for effective stroke prevention but also could increase the chances for new discoveries by enhancing the statistical power in future studies of etiologic stroke subtypes. We estimate that, compared to conventional systems, the use of CCS in stroke prevention trials testing targeted treatments for a particular etiologic subtype could reduce the required sample size by as much as 30 percent.”

The MGH-licensed CCS is available athttps://ccs.mgh.harvard.edu/ and is free for academic use. The software was designed to be a “living algorithm” and can accommodate new information as it emerges. New etiology-specific biomarkers, genetic markers, imaging markers and clinical features that become available can be incorporated into the existing CCS algorithm to further enhance its ability to determine the underlying causes of stroke.

The system of software that connects Internet devices

Glow-in-the-dark objects seem magical when you’re a kid — they can brighten up a dark room without the need for electricity, batteries or a light bulb. Then at some point you learn the science behind this phenomenon. Chemical compounds called chromophores become energized, or excited, when they absorb visible light. As they return to their normal state, the stored energy is released as light, which we perceive as a glow. In materials science, researchers rely on a similar phenomenon to study the structures of materials that will eventually be used in chemical catalysis, batteries, solar applications and more.

When a molecule absorbs a photon — the fundamental particle of light — electrons in the molecular system are promoted from a low-energy (ground) state to a higher-energy (excited) state. These responses resonate at specific light frequencies, leaving “spectral fingerprints” that illuminate the atomic and electronic structures of the system being studied.

In experiments, the “spectral fingerprints” or absorption spectrum, are measured with state-of-the-art facilities like the Advanced Light Source (ALS) at the U.S. Department of Energy’s Lawrence Berkeley National Laboratory (Berkeley Lab). In computer simulations, these measurements are typically captured with a quantum mechanical method called Time Dependent Density Functional Theory (TDDFT). The computational models are critical in helping researchers make the most of their experiments by predicting and validating results.

Yet despite its usefulness, there are times when TDDFT cannot not be used to calculate the absorption spectrum of a system because it would require too much time and computer resources. This is where a new mathematical “shortcut” developed by researchers in Berkeley Lab’s Computational Research Division (CRD) comes in handy. Their algorithm speeds up absorption calculations by a factor of five, so simulations that used to take 10 to 15 hours to compute can now be done in approximately 2.5 hours.

A paper describing this method was published in the Journal of Chemical Theory and Computation (JCTC). And the new approach for computing the absorption spectrum will be incorporated in an upcoming release of the widely used NWChem computational chemistry software suite later this year.

New Algorithms Lead to Computational Savings

To study the chemical structure of new molecules and materials, scientists typically probe the system with an external stimulus — typically a laser — then look for small electronic changes. Mathematically, this electronic change can be expressed as an eigenvalue problem. By solving this eigenvalue problem, researchers can get a good approximation of the absorption spectrum, which in turn reveals the resonant frequencies of the system being studied. Meanwhile, the corresponding eigenvector is used to calculate how intensely the system responded to the stimulus. This is essentially the principle behind the TDDFT approach, which has been implemented in several quantum chemistry software packages, including the open-source NWChem software suite.

While this approach has proven to be successful, it does have limitations for large systems. The wider the energy range of electronic responses a researcher tries to capture in a system, the more eigenvalues and eigenvectors need to be computed, which also means more computing resources are necessary. Ultimately, the absorption spectrum of a molecular system with more than 100 atoms becomes prohibitively expensive to compute with this method.

To overcome these limitations, mathematicians in CRD developed a technique to compute the absorption spectrum directly without explicitly computing the eigenvalues of the matrix.

“Traditionally, researchers have had to compute the eigenvalues and eigenvectors of very large matrices in order to generate the absorption spectrum, but we realized that you don’t have to compute every single eigenvalue to get an accurate view of the absorption spectrum,” says Chao Yang, a CRD mathematician who led the development of the new approach.

By reformulating the problem as a matrix function approximation, making use of a special transformation and taking advantage of the underlying symmetry with respect to a non-Euclidean metric, Yang and his colleagues were able to apply the Lanczos algorithm and a Kernal Polynomial Method (KPM) to approximate the absorption spectrum of several molecules. Both of these algorithms require relatively low-memory compared to non-symmetrical alternatives, which is the key to the computational savings.

Because this method requires less computing power to achieve a result, researchers can also easily calculate the absorption spectrum for molecular systems with several hundreds of atoms.

“This method is a significant step forward because it allows us to model the absorption spectrum of molecular systems of hundreds of atoms at lower computational cost.” says Niranjan Govind, a computational chemist at the Pacific Northwest National Laboratory who collaborated with the Berkeley Lab team on the development of the method in the NWChem computational chemistry program.

Recently Berkeley Lab scientists used this method to calculate the absorption spectrum and confirm what several experimental results have been hinting — that the element berkelium breaks form with its heavy element peers by taking on an extra positive charge when bound to a synthetic organic molecule. This property could help scientists develop better methods for handling and purifying nuclear materials. A paper highlighting this result appeared April 10 in the journal Nature Chemistry.

“The experimental results were hinting at this unusual behavior in berkelium, but there wasn’t enough experimental evidence to say yes, 100 percent, this is what we’re seeing,” says study co-author Wibe Albert de Jong, a CRD scientist. “To be 100 percent sure, we did large computational simulations and compared them to the experimental data and determined that they were, indeed, seeing berkelium in an unusual oxidation state.”

This new algorithm was developed through a DOE Office of Science-supported Scientific Discovery through Advanced Computing (SciDAC) project focused on advancing software and algorithms for photochemical reactions. SciDAC projects typically bring together an interdisciplinary team of researchers to develop new and novel computational methods for tackling some of the most challenging scientific problems.

“The interdisciplinary nature of SciDAC is a very effective way to facilitate breakthrough science, as each team member brings a different perspective to problem solving,” says Yang. “In this dynamical environment, mathematicians, like me, team up with domain scientists to identify computational bottlenecks, then we use cutting-edge mathematical techniques to address and overcome those challenges.”

Security statistics in the analysis of existing data in the visualization software

Modern data visualization software makes it easy for users to explore large datasets in search of interesting correlations and new discoveries. But that ease of use — the ability to ask question after question of a dataset with just a few mouse clicks — comes with a serious pitfall: it increases the likelihood of making false discoveries.

At issue is what statisticians refer to as “multiple hypothesis error.” The problem is essentially this: the more questions someone asks of a dataset, they more likely one is to stumble upon something that looks like a real discovery but is actually just a random fluctuation in the dataset.

A team of researchers from Brown University is working on software to help combat that problem. This week at the SIGMOD2017 conference in Chicago, they presented a new system called QUDE, which adds real-time statistical safeguards to interactive data exploration systems to help reduce false discoveries.

“More and more people are using data exploration software like Tableau and Spark, but most of those users aren’t experts in statistics or machine learning,” said Tim Kraska, an assistant professor of computer science at Brown and a co-author of the research. “There are a lot of statistical mistakes you can make, so we’re developing techniques that help people avoid them.”

Multiple hypothesis testing error is a well-known issue in statistics. In the era of big data and interactive data exploration, the issue has come to a renewed prominence Kraska says.

“These tools make it so easy to query data,” he said. “You can easily test 100 hypotheses in an hour using these visualization tools. Without correcting for multiple hypothesis error, the chances are very good that you’re going to come across a correlation that’s completely bogus.”

There are well-known statistical techniques for dealing with the problem. Most of those techniques involve adjusting the level of statistical significance required to validate a particular hypothesis based on how many hypotheses have been tested in total. As the number of hypothesis tests increases, the significance level needed to judge a finding as valid increases as well.

But these correction techniques are nearly all after-the-fact adjustments. They’re tools that are used at the end of a research project after all the hypothesis testing is complete, which is not ideal for real-time, interactive data exploration.

“We don’t want to wait until the end of a session to tell people if their results are valid,” said Eli Upfal, a computer science professor at Brown and research co-author. “We also don’t want to have the system reverse itself by telling you at one point in a session that something is significant only to tell you later — after you’ve tested more hypotheses — that your early result isn’t significant anymore.”

Both of those scenarios are possible using the most common multiple hypothesis correction methods. So the researchers developed a different method for this project that enables them to monitor the risk of false discovery as hypothesis tests are ongoing.

“The idea is that you have a budget of how much false discovery risk you can take, and we update that budget in real time as a user interacts with the data,” Upfal said. “We also take into account the ways in which user might explore the data. By understanding the sequence of their questions, we can adapt our algorithm and change the way we allocate the budget.”

For users, the experience is similar to using any data visualization software, only with color-coded feedback that gives information about statistical significance.

“Green means that a visualization represents a finding that’s significant,” Kraska said. “If it’s red, that means to be careful; this is on shaky statistical ground.”

The system can’t guarantee absolute accuracy, the researchers say. No system can. But in a series of user tests using synthetic data for which the real and bogus correlations had been ground-truthed, the researchers showed that the system did indeed reduce the number of false discoveries users made.

The researchers consider this work a step toward a data exploration and visualization system that fully integrates a suite of statistical safeguards.

“Our goal is to make data science more accessible to a broader range of users,” Kraska said. “Tackling the multiple hypothesis problem is going to be important, but it’s also very difficult to do. We see this paper as a good first step.”

Grouping of domain-aware mashup services based on LDA models and topics from multiple data sources

Mashup is emerging as a promising software development method for allowing software developers to compose existing Web APIs to create new or value-added composite Web services. However, the rapid growth in the number of available Mashup services makes it difficult for software developers to select a suitable Mashup service to satisfy their requirements. Even though clustering based Mashup discovery technique shows a promise of improving the quality of Mashup service discovery, Mashup service clustering with high accuracy and good efficiency is still a challenge problem.

This paper proposes a novel domain-aware Mashup service clustering method with high accuracy and good efficiency by exploiting LDA topic model built from multiple data sources, to improve the quality of Mashup service discovery.

The proposed method firstly designs a domain-aware Mashup service feature selection and reduction process by refining characterization of their domains to consolidate domain relevance. Then, it presents an extended LDA topic model built from multiple data sources (include Mashup description text, Web APIs and tags) to infer topic probability distribution of Mashup services, which serves as a basis of Mashup service similarity computation. Finally, K-means and Agnes algorithm are used to perform Mashup service clustering in terms of their similarities.

Compared with other existing Mashup service clustering methods, experimental results show that the proposed method achieves a significant improvement in terms of precision, recall, F-measure, purity and entropy.

The results of the proposed method help software developers to improve the quality of Mashup service discovery and Mashup-based software development. In the future, there will be a need to extend the method by considering heterogeneous network information among Mashup, Web APIs, tags, users, and applying it to Mashup discovery for software developers.

Mashup service LDA Multiple data sources Domain feature selection and reduction Service clustering

The relationship between technical and improvements in PHP web applications

Context

Technical Debt Management (TDM) refers to activities that are performed to prevent the accumulation of Technical Debt (TD) in software. The state-of-research on TDM lacks empirical evidence on the relationship between the amount of TD in a software module and the interest that it accumulates. Considering the fact that in the last years, a large portion of software applications are deployed in the web, we focus this study on PHP applications.

Objective

Although the relation between debt amount and interest is well-defined in traditional economics (i.e., interest is proportional to the amount of debt), this relation has not yet been explored in the context of TD. To this end, the aim of this study is to investigate the relation between the amount of TD and the interest that has to be paid during corrective maintenance.

Method

To explore this relation, we performed a case study on 10 open source PHP projects. The obtained data have been analyzed to assess the relation between the amount of TD and two aspects of interest: (a) corrective maintenance (i.e., bug fixing) frequency, which translates to interest probability and (b) corrective maintenance effort which is related tointerest amount.

Results

Both interest probability and interest amount are positively related with the amount of TD accumulated in a specific module. Moreover, the amount of TD is able to discriminate modules that are in need of heavy corrective maintenance.

Conclusions

The results of the study confirm the cornerstone of TD research, which suggests that modules with a higher level of incurred TD, are costlier in maintenance activities. In particular, such modules prove to be more defect-prone and consequently require more (corrective) maintenance effort.

A Smart and Good Machine to Look For and Try From The Neocortex

Computers have transformed work and play, transportation and medicine, entertainment and sports. Yet for all their power, these machines still cannot perform simple tasks that a child can do, such as navigating an unknown room or using a pencil.

The solution is finally coming within reach. It will emerge from the intersection of two major pursuits: the reverse engineering of the brain and the burgeoning field of artificial intelligence. Over the next 20 years, these two pursuits will combine to usher in a new epoch of intelligent machines.

Why do we need to know how the brain works to build intelligent machines? Although machine-learning techniques such as deep neural networks have recently made impressive gains, they are still a world away from being intelligent, from being able to understand and act in the world the way that we do. The only example of intelligence, of the ability to learn from the world, to plan and to execute, is the brain. Therefore, we must understand the principles underlying human intelligence and use them to guide us in the development of truly intelligent machines.

At my company, Numenta, in Redwood City, Calif., we study the neocortex, the brain’s largest component and the one most responsible for intelligence. Our goal is to understand how it works and to identify the underlying principles of human cognition. In recent years, we have made significant strides in our work, and we have identified several features of biological intelligence that we believe will need to be incorporated into future thinking machines.

To understand these principles, we must start with some basic biology. The human brain is similar to a reptile’s brain. Each has a spinal cord, which controls reflex behaviors; a brain stem, which controls autonomic behaviors such as breathing and heart rate; and a midbrain, which controls emotions and basic behaviors. But humans, indeed all mammals, have something reptiles don’t: a neocortex.

The neocortex is a deeply folded sheet some 2 millimeters thick that, if laid out flat, would be about as big as a large dinner napkin. In humans, it takes up about 75 percent of the brain’s volume. This is the part that makes us smart.

At birth, the neocortex knows almost nothing; it learns through experience. Everything we learn about the world—driving a car, operating a coffee machine, and the thousands of other things we interact with every day—is stored in the neocortex. It learns what these objects are, where they are in the world, and how they behave. The neocortex also generates motor commands, so when you make a meal or write software it is the neocortex controlling these behaviors. Language, too, is created and understood by the neocortex.

The neocortex, like all of the brain and nervous system, is made up of cells called neurons. Thus, to understand how the brain works, you need to start with the neuron. Your neocortex has about 30 billion of them. A typical neuron has a single tail-like axon and several treelike extensions calleddendrites. If you think of the neuron as a kind of signaling system, the axon is the transmitter and the dendrites are the receivers. Along the branches of the dendrites lie some 5,000 to 10,000 synapses, each of which connects to counterparts on thousands of other neurons. There are thus more than100 trillion synaptic connections.

Your experience of the world around you—recognizing a friend’s face, enjoying a piece of music, holding a bar of soap in your hand—is the result of input from your eyes, ears, and other sensory organs traveling to your neocortex and causing groups of neurons to fire. When a neuron fires, an electrochemical spike travels down the neuron’s axon and crosses synapses to other neurons. If a receiving neuron gets enough input, it might then fire in response and activate other neurons. Of the 30 billion neurons in the neocortex, 1 or 2 percent are firing at any given instant, which means that many millions of neurons will be active at any point in time. The set of active neurons changes as you move and interact with the world. Your perception of the world, what you might consider your conscious experience, is determined by the constantly changing pattern of active neurons.

The neocortex stores these patterns primarily by forming new synapses. This storage enables you to recognize faces and places when you see them again, and also recall them from your memory. For example, when you think of your friend’s face, a pattern of neural firing occurs in the neocortex that is similar to the one that occurs when you are actually seeing your friend’s face.

Remarkably, the neocortex is both complex and simple at the same time. It is complex because it is divided into dozens of regions, each responsible for different cognitive functions. Within each region there are multiple layers of neurons, as well as dozens of neuron types, and the neurons are connected in intricate patterns.

The neocortex is also simple because the details in every region are nearly identical. Through evolution, a single algorithm developed that can be applied to all the things a neocortex does. The existence of such a universal algorithm is exciting because if we can figure out what that algorithm is, we can get at the heart of what it means to be intelligent, and incorporate that knowledge into future machines.

But isn’t that what AI is already doing? Isn’t most of AI built on “neural networks” similar to those in the brain? Not really. While it is true that today’s AI techniques reference neuroscience, they use an overly simplified neuron model, one that omits essential features of real neurons, and they are connected in ways that do not reflect the reality of our brain’s complex architecture. These differences are many, and they matter. They are why AI today may be good at labeling images or recognizing spoken words but is not able to reason, plan, and act in creative ways.

Our recent advances in understanding how the neocortex works give us insights into how future thinking machines will work. I am going to describe three aspects of biological intelligence that are essential, but largely missing from today’s AI. They are learning by rewiring, sparse representations, and embodiment, which refers to the use of movement to learn about the world.

Learning by rewiring: Brains exhibit some remarkable learning properties. First, we learn quickly. A few glances or a few touches with the fingers are often sufficient to learn something new. Second, learning is incremental. We can learn something new without retraining the entire brain or forgetting what we learned before. Third, brains learn continuously. As we move around the world, planning and acting, we never stop learning. Fast, incremental, and continuous learning are essential ingredients that enable intelligent systems to adapt to a changing world. The neuron is responsible for learning, and the complexities of real neurons are what make it a powerful learning machine.

In recent years, neuroscientists have learned some remarkable things about the dendrite. One is that each of its branches acts as a set of pattern detectors. It turns out that just 15 to 20 active synapses on a branch are sufficient to recognize a pattern of activity in a large population of neurons. Therefore, a single neuron can recognize hundreds of distinct patterns. Some of these recognized patterns cause the neuron to become active, but others change the internal state of the cell and act as a prediction of future activity.

Neuroscientists used to believe that learning occurred solely by modifying the effectiveness of existing synapses so that when an input arrived at a synapse it would either be more likely or less likely to make the cell fire. However, we now know that most learning results from growing new synapses between cells—by “rewiring” the brain. Up to 40 percent of the synapses on a neuron are replaced with new ones every day. New synapses result in new patterns of connections among neurons, and therefore new memories. Because the branches of a dendrite are mostly independent, when a neuron learns to recognize a new pattern on one of its dendrites, it doesn’t interfere with what the neuron has already learned on other dendrites.

This is why we can learn new things without interfering with old memories and why we don’t have to retrain the brain every time we learn something new. Today’s neural networks don’t have these properties.

Error setting up player: Invalid license key

Intelligent machines don’t have to model all the complexity of biological neurons, but the capabilities enabled by dendrites and learning by rewiring are essential. These capabilities will need to be in future AI systems.

Sparse representations: Brains and computers represent information quite differently. In a computer’s memory, all combinations of 1s and 0s are potentially valid, so if you change one bit it will typically result in an entirely different meaning, in much the same way that changing the letter i to a in the word fire results in an unrelated word, fare. Such a representation is therefore brittle.

Brains, on the other hand, use what’s called sparse distributed representations, or SDRs. They’re called sparse because relatively few neurons are fully active at any given time. Which neurons are active changes moment to moment as you move and think, but the percentage is always small. If we think of each neuron as a bit, then to represent a piece of information the brain uses thousands of bits (many more than the 8 to 64 used in computers), but only a small percentage of the bits are 1 at any time; the rest are 0.

Let’s say you want to represent the concept of “cat” using an SDR. You might use 10,000 neurons of which 100 are active. Each of the active neurons represents some aspect of a cat, such as “pet,” or “furry,” or “clawed.” If a few neurons die, or a few extra neurons become active, the new SDR will still be a good representation of “cat” because most of the active neurons are still the same. SDRs are thus not brittle but inherently robust to errors and noise. When we build silicon versions of the brain, they will be intrinsically fault tolerant.

There are two properties of SDRs I want to mention. One, the overlap property, makes it easy to see how two things are similar or different in meaning. Imagine you have one SDR representing “cat” and another representing “bird.” Both the “cat” and “bird” SDR would have the same active neurons representing “pet” and “clawed,” but they wouldn’t share the neuron for “furry.” This example is simplified, but the overlap property is important because it makes it immediately clear to the brain how the two objects are similar or different. This property confers the power to generalize, a capability lacking in computers.

The second, the union property, allows the brain to represent multiple ideas simultaneously. Imagine I see an animal moving in the bushes, but I got only a glimpse, so I can’t be sure of what I saw. It might be a cat, a dog, or a monkey. Because SDRs are sparse, a population of neurons can activate all three SDRs at the same time and not get confused, because the SDRs will not interfere with one another. The ability of neurons to constantly form unions of SDRs makes them very good at handling uncertainty.

Such properties of SDRs are fundamental to understanding, thinking, and planning in the brain. We can’t build intelligent machines without embracing SDRs.

Embodiment: The neocortex receives input from the sensory organs. Every time we move our eyes, limbs, or body, the sensory inputs change. This constantly changing input is the primary mechanism the brain uses to learn about the world. Imagine I present you with an object you have never seen before. For the sake of discussion, let’s say it’s a stapler. How would you learn about the new object? You might walk around the stapler, looking at it from different angles. You might pick it up, run your fingers over it, and rotate it in your hands. You then might push and pull on it to see how it behaves. Through this interactive process, you learn the shape of the stapler, what it feels like, what it looks like, and how it behaves. You make a movement, see how the inputs change, make another movement, see how the inputs change again, and so on. Learning through movement is the brain’s primary means for learning. It will be a central component of all truly intelligent systems.

This is not to say that an intelligent machine needs a physical body, only that it can change what it senses by moving. For example, a virtual AI machine could “move” through the Web by following links and opening files. It could learn the structure of a virtual world through virtual movements, analogous to what we do when walking through a building.

This brings us to an important discovery we made at Numenta last year. In the neocortex, sensory input is processed in a hierarchy of regions. As sensory input passes from one level of the hierarchy to another, more complex features are extracted, until at some point an object can be recognized. Deep-learning networks also use hierarchies, but they often require 100 levels of processing to recognize an image, whereas the neocortex achieves the same result with just four levels. Deep-learning networks also require millions of training patterns, while the neocortex can learn new objects with just a few movements and sensations. The brain is doing something fundamentally different than a typical artificial neural network, but what?

Hermann von Helmholtz, the 19th-century German scientist, was one of the first people to suggest an answer. He observed that, although our eyes move three to four times a second, our visual perception is stable. He deduced that the brain must take account of how the eyes are moving; otherwise it would appear as if the world were wildly jumping about. Similarly, as you touch something, it would be confusing if the brain processed only the tactile input and didn’t know how your fingers were moving at the same time. This principle of combining movement with changing sensations is calledsensorimotor integration. How and where sensorimotor integration occurs in the brain is mostly a mystery.

Our discovery is that sensorimotor integration occurs in every region of the neocortex. It is not a separate step but an integral part of all sensory processing. Sensorimotor integration is a key part of the “intelligence algorithm” of the neocortex. We at Numenta have a theory and a model of exactly how neurons do this, one that maps well onto the complex anatomy seen in every neocortical region.

What are the implications of this discovery for machine intelligence? Consider two types of files you might find on a computer. One is an image file produced by a camera, and the other is a computer-aided design file produced by a program such as Autodesk. An image file represents a two-dimensional array of visual features. A CAD file also represents a set of features, but each feature is assigned a location in three-dimensional space. A CAD file models complete objects, not how the object appears from one perspective. With a CAD file, you can predict what an object will look like from any direction and determine how an object will interact with other 3D objects. You can’t do these with an image file. Our discovery is that every region of the neocortex learns 3D models of objects much like a CAD program. Every time your body moves, the neocortex takes the current motor command, converts it into a location in the object’s reference frame, and then combines the location with the sensory input to learn 3D models of the world.

In hindsight, this observation makes sense. Intelligent systems need to learn multidimensional models of the world. Sensorimotor integration doesn’t occur in a few places in the brain; it is a core principle of brain function, part of the intelligence algorithm. Intelligent machines also must work this way.

These three fundamental attributes of the neocortex—learning by rewiring, sparse distributed representations, and sensorimotor integration—will be cornerstones of machine intelligence. Future thinking machines can ignore many aspects of biology, but not these three. Undoubtedly, there will be other discoveries about neurobiology that reveal other aspects of cognition that will need to be incorporated into such machines in the future, but we can get started with what we know today.

From the earliest days of AI, critics dismissed the idea of trying to emulate human brains, often with the refrain that “airplanes don’t flap their wings.” In reality, Wilbur and Orville Wright studied birds in detail. To create lift, they studied bird-wing shapes and tested them in a wind tunnel. For propulsion, they went with a nonavian solution: propeller and motor. To control flight, they observed that birds twist their wings to bank and use their tails to maintain altitude during the turn. So that’s what they did, too. Airplanes still use this method today, although we twist only the tail edge of the wings. In short, the Wright brothers studied birds and then chose which elements of bird flight were essential for human flight and which could be ignored. That’s what we’ll do to build thinking machines.

As I consider the future, I worry that we are not aiming high enough. While it is exciting for today’s computers to classify images and recognize spoken queries, we are not close to building truly intelligent machines. I believe it is vitally important that we do so. The future success and even survival of humanity may depend on it. For example, if we are ever to inhabit other planets, we will need machines to act on our behalf, travel through space, build structures, mine resources, and independently solve complex problems in environments where humans cannot survive. Here on Earth, we face challenges related to disease, climate, and energy. Intelligent machines can help. For example, it should be possible to design intelligent machines that sense and act at the molecular scale. These machines would think about protein folding and gene expression in the same way you and I think about computers and staplers. They could think and act a million times as fast as a human. Such machines could cure diseases and keep our world habitable.

In the 1940s, the pioneers of the computing age sensed that computing was going to be big and beneficial, and that it would likely transform human society. But they could not predict exactly how computers would change our lives. Similarly, we can be confident that truly intelligent machines will transform our world for the better, even if today we can’t predict exactly how. In 20 years, we will look back and see this as the time when advances in brain theory and machine learning started the era of true machine intelligence.