Guide to Teaching Computer Science : An Activity-Based Approach