C#: A Programmer's Introduction