Critical thinking and computer science: implicit and explicit connections | Synapse