Logical Time in Distributed Computing Systems
Computer - Distributed computing systems: separate resources acting as one
A secure on-line submission system
Software—Practice & Experience
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
EduComponents: experiences in e-assessment in computer science education
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
Teaching students to develop thread-safe java classes
Proceedings of the 13th annual conference on Innovation and technology in computer science education
Teaching about threading: where and what?
ACM SIGACT News
Review of recent systems for automatic assessment of programming assignments
Proceedings of the 10th Koli Calling International Conference on Computing Education Research
Hi-index | 0.00 |
Assessing automatically students' solutions to concurrent programming assignments by looking at the produced output is a crucial and error-prone task. On the one hand a student's program may coincidentally produce a correct output although the program is faulty; the program could also produce invalid output which does not happen to be observed even when the program is run several times. On the other hand the synchronization in a student's program may be too strong, leading to a situation where certain correct outputs can never be generated. This paper presents an approach for checking automatically the output of concurrent threads for correctness. The basic idea is that we provide special implementations of synchronization primitives like semaphores that use vector timestamps. Every output action of a thread is tagged by its vector timestamp. Therefore it can be decided whether two output actions are causally related (they can occur only in the order which was actually observed because of an underlying synchronization), or whether two output actions are not causally related, i.e. concurrent (they may happen in any order). The output of a student's program is represented as a graph. The correctness check consists of a comparison between the expected graph and the observed graph.