This page describes process of learning and what features an ideal computer learning system should provide.

Learning with books

Books are media that capture knowledge in a linear flow. Knowledge and concepts are interconnected, we create an interconnected model in our heads. This is the way our brains work. When author writes a book, the connected model needs to be serialized into linear flow of knowledge. Then a reader consumes that information and needs to reconstruct the model.

Every person thinks differently, is using different concepts as basic building blocks. That means that there is no perfect way ho to explain particular knowledge, that would fit to everyone. This can be advantage of a computer system, because it can generate material that would be custom-tailored for every learner.

When introducing difficult concept, examples are handy way to demonstrate the subject. Sometimes I get the concept right away and those extra examples are just distracting me. Sometimes I do not and it would be handy to have more examples to help clarify. An author of a book needs to make decisions what to include, what to exclude and how many examples are appropriate. Todays database systems can store almost unlimited amounts of data, we could just store all relevant examples for given topic, and let user display more or lets based on preference and choice by a learner.

Authors usually structure the material in a bottom-up manner. First introduce basic concepts, then using the basic concepts we introduce the useful concepts. This has a disadvantage, because it is harder to remember a concept which we yet have no use for. Other approach is top-down. We need to solve a real world problem. For this we need to understand some concept. This concept depends on other concepts, so we keep exploring this web of knowledge, until we reach concepts we are familiar with and learn only the concepts needed for this particular task. We do not have to be bothered with details of other concepts that we do not need yet.

Learning phases

There are different phases of learning. A system should be able to switch between these modes, to provide most useful ways for each phase. Some examples follows:


A learner needs to learn completely new field. This can be overwhelming. So an introductory overview of a topic and lot of examples need to be introduced.

The concepts are usually interconnected, we can benefit by having a visual representations like mind-maps. A computer system with a linked knowledge can generate such a visual representation automatically and would allow browsing on demand. It would provide functions for browsing or showing related concepts concepts and so on. The user would can choose in which direction he/she wants to explore. This would enable Holistic learning approach more easily.

The paper books do not provide advanced ways for navigation. They usually provide table of contents or index, but we need then to manually find the page. A computer system can jump into the chosen part immediately after a simple click of a button.


This phase includes for example a review for an exam. I want short definitions of concepts which I can review quickly. However, more detailed definitions and examples needs to be readily available in case I forgot some concept really badly.

Other use is memorization, for example using flashcards (or using flashcard software). Having a structured knowledge lets us export that knowledge into flashcard systems quickly and easily, so we have more time to practice the knowledge and we spend less time doing unnecessary work.

Other technique is exercises. For each concept there should be set of exercises on which we can practice the newly learned knowledge. The space available for books is limited, flexible database is beneficial.

Real world usage

We need to deal with a homework or a real world problem at job. We have intuition in which direction the solution will be. Because modern disciplines are so complex, there is good change we forget specific implementation details. Structured knowledge system will help us find those details more efficiently and quickly.

Other functions

  • entering knowledge - it needs to be easy to create digital knowledge. Many systems have too steep learning curve, which discourages average computer user from formalizing the knowledge. One of the easiest way is plain text, you don't need extra tools and you can start writing down the knowledge right away. Formats like markdown give good compromise. All it needs is to extend it to support describing more semantic meaning.

  • searching - system should support fulltext search and be able to navigate quickly to definition of a concept.

  • text augmentation - if you need to quick orientation in a domain of knowledge you are not familiar with, one useful feature might be text augmentation. This would highlight concepts in pasted text and would allow to further explore that knowledge.

  • extensibility - this system should be able to work for many knowledge domains or there should be possibility for easy extension. It should be able to capture topics ranging from math and physics, economics, social sciences like history and psychology and even for learning languages.


Based on the experience above, here are the summary of functionality that a useful learning system should provide:

  • easily write down knowledge without a big learning curve
  • navigation in space of concepts, showing related and dependent concepts, examples etc. on demand, tooltips on hover
  • customize level of details presented for each learning phase
  • quickly search knowledge and navigate to relevant concepts
  • ability to export knowledge into other systems (flashcards software e.g Anki, other systems like OMDoc or OpenMath Content Dictionaries), possibly utilizing semantic web technologies
  • automatic linking and explicit linking specification
  • non-linear learning
  • linking to sources of knowledge
  • support many formats of representation, like math formulas