Gamifying Teaching and Learning of Software Engineering and Programming

Download Gamifying Teaching and Learning of Software Engineering and Programming

Post on 02-Jul-2015




3 download


Talk slides presented at Software Engineering Educators Symposium (SEES) 2014, Hong Kong, November 17, 2014.


1. Gamifying Teaching andLearning of SoftwareEngineering andProgrammingTao XieUniversity of Illinois at Urbana-ChampaignIn collaboration with Nikolai Tillmann, Jonathan de Halleux, and Judith Bishop(Microsoft Research)http://pex4fun.comhttps://www.codehunt.comRelated Papers/Resources: 2. Working for funEnjoyment adds to long term retention on a taskDiscovery is a powerful driver, contrasting withdirect instructionsGaming joins these two, and is hugely popularCan we add these elements to coding?Write a program to determine all the sets ofeffectively identical rooms in a maze. (A page ofbackground, sample input and output given) 3. Testing Tool  Educational GamingDynamic Symbolic Execution (Pex)Pex for Fun:Interactive Gaming forTeaching and LearningSupporthttps://www.codehunt.com 4. AgendaBackgroundCoding DuelsEducational PlatformExperiencesConclusion 5. AgendaBackgroundCoding DuelsEducational PlatformExperiencesConclusion 6. BackgroundDynamic Symbolic Execution (DSE)aka. Concolic Testing[Godefroid et al. 05][Sen et al. 05][Tillmann et al. 08]Instrument code to explore feasible paths 7. 8. Dynamic Symbolic Execution in Pexvoid CoverMe(int[] a){if (a == null) return;if (a.Length > 0)if (a[0] == 1234567890)throw new Exception("bug");}Fa.Length>0F Ta[0]==123…TFa==nullTChoose next pathSolve Execute&MonitorConstraints to solvea!=nulla!=null &&a.Length>0a!=null &&a.Length>0 &&a[0]==123456890Inputnull{}{0}{123…}Observed constraintsa==nulla!=null &&!(a.Length>0)a==null &&a.Length>0 &&a[0]!=1234567890a==null &&a.Length>0 &&a[0]==1234567890Done: There is no path left. 9. Pex is Part of Visual Studio 2015!• As new feature of “Smart Unit Tests” 10. Coding Duels1,594,092 clicked 'Ask Pex!' 11. Coding DuelsPex computes “semantic diff” in cloudsecret reference implementation vs.code written in browserYou win when Pex finds no differencesFor more info, see our ICSE 2013 SEE paper: 12. Behind the Scene of Pex for FunSecret Implementationclass Secret {public static int Puzzle(int x) {if (x


View more >