Karen Petrie, University of Dundee Teaching Students how to Teach Themselves Our Challenge • Computing moves incredibly quickly • Programming languages move on • We need to teach students how to learn new programming languages – Not just what is currently in vogue Ideally • Two weeks with a good textbook and a compiler, should be enough for them to be proficient in any language. How Difficult is this? • Imagine you have spent all of your life in one area of the UK, you know one dialect of English. • Now you time travel to Shakespearean England. • How easy would it be to communicate? Programming • This is about how difficult it is to change from one programming language to another Apart from.... • People speaking Shakespearean English are likely to be a lot more helpful than a computer • Computers require you to type in precisely the correct language! Curriculum • In1st year we concentrate on teaching students to programme for the 1st time. – JAVA • In 2nd year we concentrate on building these programming skills and learning new languages –C – C++ Links • There are links between JAVA and C++ – Same keywords • C++ is a superset of C • We want students to see these links and work out how to use them to learn languages • This has been added as a learning outcome of the 2nd year module Approach • Teach the new language conventionally through lectures and practicals – We are trying to get students to spot and use the connections to previous languages for themselves • Introduced tutorial for this purpose Weekly Tutorial • After lectures, but before practical session • Small groups of 5 students • Each student has to write-up a blog post of 2 tutorial discussions, worth 5% each – Meaning at the end the group has a blog spanning the whole course (10 weeks) • Students loose 1% for every week they do not attend Tutorial Content • For every concept you have learnt this week, discuss how it differs from previous languages you have learned. • Are there any overlaps between your courses this week? In the Discussion and Blog Posts • All students found connections • The easiest ones to find were when the concepts are the same or similar • Surprisingly, students struggled the most when concepts were completely different • More successful students dug a bit deeper and discussed the connections in more detail Exam Question • Students were given a snippet of JAVA code, they had to write in both C++ and C. • They then had to compare in detail all three sets of code • The final question was: How can studying the differences between syntax and semantics in small code snippets (such as the exercise above) aid in learning new languages? Results • This exam question was the best answered question in the exam in 2011 and 2nd best in 2012 • The 2011 group all passed Games Programming in 2012. – Many of them taught themselves a new language to do so.