A computer network environment enables new ways of working and teaching. Such systems are distributed. People work together at physically different locations and/or at different times. Space and time can be decoupled, and work can be done in an asynchronous fashion, if desired. Therefore, these collaboration tools can be classified as asynchronous. Collaborators using the telephone may be at different locations, but they give their attention to their task (e.g., communication) simultaneously (see Fig. 1). Therefore such telephone use is classified as synchronous.
Shared whiteboards, chatspaces, and many video and audio communication channels are synchronous tools for collaboration. Asynchronous media allows a task to be distributed in time (see Fig. 1). This category includes such communication tools as electronic mail, file transfer, web pages, etc.
Asynchronous communication methods have buffers, which can be used to decouple the individual work (see Fig. 2). For example, the teacher might provide the student with a set of tasks. These tasks can be then addressed by the student in any desired order. In the same way the teacher might arbitrarily order the student's work submitted for review.
The computer can take over some data management tasks and can perform plausibility tests (see Fig. 3). Data management can include checking deadlines, versions, project structure, exercise structure, etc. Such automatic checks can be used in modifying work before it is submitted, and can take away a burden from the teachers for checking such details themselves (allowing more of their attention to be given to the student's particular needs). For example, in English classes the punctuation and spelling could be checked. If the work by the student fails to meet the criteria, it is rejected immediately and the student has the chance to improve. Immediate response is very helpful. If the teacher returns some homework to the student after a week or longer has elapsed, the student might have already lost the context and moved on to different topics. In a programming class the check could be done by a compiler. The teacher shouldn't have to deal with compiler errors, and would gain the time to check the algorithm or runtime errors, which cannot be so easily checked automatically.