C# programs we abstract the mathematical structure that underlies
the semantics of both languages. The resulting platform-independent
interpreter of object-oriented programming language constructs
reveals their semantical kernel and can be used for teaching them
without being bound to a particular language. Since the interpreter
is structured into components for imperative, static, object-oriented,
exception handling, concurrency, pointer related and other special
language features (like delegates in C#), it supports the lecturer
in introducing step by step the basic concepts of modern programming
languages and to explain the differences in their major current
implementations. For a concrete illustration we identify precisely
some of the major differences between Java and C#.
[1] R. F. Stärk, J. Schmid, and E. Börger: Java and the Java Virtual
Machine: Definition, Verification, Validation. Springer-Verlag,
2001
[2] E. Börger and N. G. Fruja and V. Gervasi and R. Stärk: A High-
Level Modular Definition of the Semantics of C#, Theoretical
Computer Science, 2004.