350 likes | 443 Views
K-12 Game Programming Course Using Textual Programming. Vesa Lappalainen , Lecturer PhD Antti-Jussi Lakanen , University teacher MSc Department of Mathematical Information Technology University of Jyväskylä , Finland. ACM SIGCSE 2011 Dallas, Texas Room Dallas A1. Vesa Lappalainen.
E N D
K-12 Game Programming Course Using Textual Programming VesaLappalainen, Lecturer PhD Antti-JussiLakanen, University teacher MSc Department of Mathematical Information Technology University of Jyväskylä, Finland ACM SIGCSE 2011 Dallas, Texas Room Dallas A1 http://tinyurl.com/jypeli-paper
VesaLappalainen • PhD 1985 in Mathematics • Teaching programming since 1982 • Research activities: • InSitu: Interaction possibilities on a mass lecture • ComTest: Making test-driven development (TDD) simple • Students’ perceptions of programming • Early recruitment in ICT • My gaming background • Two teenager boys http://tinyurl.com/jypeli-paper
Antti-JussiLakanen • MSc 2010 in Mathematical Information Technology • Teaching programming, recruitment, tutoring freshmen • Research activities • CS1 and games, effect on study success • K-8/K-12 programming • My gaming background • Commodore 64, Amiga 500, ... • More of fun, less of “useful” activities http://tinyurl.com/jypeli-paper
Ourpresentation in a nutshell • Weareworriedabout the decline in IT, science and mathstudents • Wedeveloped a week-longgameprogrammingcourse for youngsters to motivatestudyingIT, science and math • Jypeliprogramminglibrarywasdeveloped as a tool to reduce the cognitiveload in beginninggameprogramming • Wehavehad 7 courses, 150 students, aged 11-17 http://tinyurl.com/jypeli-paper
Disclaimer • The courseconceptintroduced is a combination of • departmentstaff (teachers), • tools (Jypeli etc.), • content and • motivatedparticipants • Each of thesehasits’ ownimportantrole in the process • Ifwechangesomepart, weaffectthe ensemble http://tinyurl.com/jypeli-paper
Links • https://trac.cc.jyu.fi/projects/npo • https://www.jyu.fi/it/laitokset/mit/opiskelu/nuortenkurssi • Facebook group: http://www.facebook.com/#!/group.php?gid=114345435260705 http://tinyurl.com/jypeli-paper
Acknowledgements • University of Jyväskylä / Department of Mathematical Information Technology • Funding courses in 2009, Jypeli development • Technology Industries of Finland Centennial Foundation • Courses in 2010—2011 • Agora Center • Research in game development • Microsoft • Software, Xbox controllers • Ville Isomöttönen • Co-author of the paper • Physics2D.NET physics library http://tinyurl.com/jypeli-paper
Introduction • Student decline in ICT and science fields (economics still get students) • Amount of students passing the courses has gone down 50 % since 2004 • How to get youngsters to choose science courses in high school? • And hopefully to continue their studies later in university http://tinyurl.com/jypeli-paper
Why this course? • What are the young interested of? • Something to excite! • How to combine fun with “real things” • We wanted to show that concepts of high school math and science apply also in games • Why not to target senior high? • We wanted to influence what subjects they pick in senior high • With senior high students we would be late(ca 50 % doesn’t even go to senior high) http://tinyurl.com/jypeli-paper
Finnisheducationalsystem University (master), 2 yrs Polytechnics (bachelor), 3.5 – 4 yrs University (bachelor), 3 yrs Senior High School (lukio), 3 yrs Vocational School (ammattikoulu), 3 yrs 50.2 % 41.2 % (8.6 %) Junior High School, 3 yrs (Yläkoulu in Finnish) Compulsoryeducation Elementaryschool, 6 yrs (Alakoulu in Finnish), starts at the age of 7 Pre-school, 1year (Esikoulu in Finnish), starts at the age of 6 http://tinyurl.com/jypeli-paper
Motivation and learning outcomes • Motivation to physics concepts • Quantities: time, distance, speed, acceleration and force • Causal relationship: dependencies between objects • Gravity, friction, motion, balance • Mass and its effects • Particle kinematics http://tinyurl.com/jypeli-paper
Motivation and learning outcomes • Motivation to math concepts • Problem solving • Function, interpretation and drawing • Coordinates • Geometry: straight line, scaling, shapes • Vectors • Equations and solving them • Probability and random numbers • Boolean value, logic • Angle, degrees and radians http://tinyurl.com/jypeli-paper
How to program games • Two mainstream options • Visual programming • Alice, Scratch, Greenfoot, … • Lego robots (compare to industrial process programming, e.g. National Instruments, LabView, etc.) • Microsoft Kodu • Textual programming • Java ACM Task Force • XGC1 (UWB) http://tinyurl.com/jypeli-paper
Kodu Game Lab http://tinyurl.com/jypeli-paper
Jypeli library -- Why and objectives • “Real programming” by mainstream tools • First game should not be many lines of code • “Realistic” physics built-in • Event-drivenfor controls and collisions • Less structures, as few as zero loops and ifs • Endless possibilities for advanced programming • Possibility to transfer games to game consoles and mobile phones http://tinyurl.com/jypeli-paper
Choosing the tool – Motivation to building a new library • Lack of Finnishmaterial • Xbox currentlyonlygameconsole with the possibility to transferowngameseasily C# as the language • Lack of physicsengines in availablelibrariesout-of-the-box • Limited timeavailable– Italsotakestime to study a librarysomeoneelsehas made • Facultyinterests in bringingknowledgeaboutbuildinggameengines, physicsengines etc. http://tinyurl.com/jypeli-paper
Examplegame: GalaxyTrip http://tinyurl.com/jypeli-paper
PhysicsObjectCreateGalaxy() { PhysicsObjectgalaxy = PhysicsObject.CreateStaticObject(tileWidth, tileHeight); galaxy.Color = Color.LightBlue; AddCollisionHandler(galaxy, CollidedWithGalaxy); galaxy.Image = galaxyImage; returngalaxy; } PhysicsObjectCreateSombrero() { PhysicsObject sombrero = PhysicsObject.CreateStaticObject(tileWidth, tileHeight); sombrero.Color = Color.Yellow; sombrero.Image = sombreroImage; AddCollisionHandler(sombrero, CollidedWithSombrero); return sombrero; } voidCollidedWithGalaxy(PhysicsObjectgalaxy, PhysicsObjecttarget) { PlaySound("blop"); } voidCollidedWithSombrero(PhysicsObject sombrero, PhysicsObjecttarget) { PlaySound("exp"); explosionSystem.AddEffect(target.X, target.Y, 50); sombrero.Destroy(); } voidChangeGravity(AnalogState s) { Gravity = s.StateVector * 2000; } } using System; usingJypeli; usingJypeli.Effects; publicclassGame : PhysicsGame { staticString[] lines = { " ", " ", " ", " X X ", "X ", " * ", " X X ", " ", " ", " ", " ", "* X X ", "X ", " * ", " X X ", " ", " ", " ", " * ", " X X ", "X ", " ", " X X ", " ", }; staticinttileWidth = 800 / lines[0].Length; staticinttileHeight = 480 / lines.Length; static Image playerImage = LoadImage("ship"); static Image galaxyImage = LoadImage("galaxy"); static Image sombreroImage = LoadImage("sombrero"); static Image explosionImage = LoadImage("bum"); ExplosionSystemexplosionSystem; PhysicsObjectplayer; protectedoverridevoid Begin() { Level.Background.Image = LoadImage("space"); Gravity = new Vector(0, -1000); NewGame(null); } voidNewGame(Touchtouch) { ClearGameObjects(); ClearControls(); player = new PhysicsObject(50, 50, Shape.Circle); player.Image = playerImage; Add(player); explosionSystem = new ExplosionSystem(explosionImage, 50); Add(explosionSystem); Keyboard.Listen(Key.Up, ButtonState.Pressed, MovePlayer, "Moveup", player, new Vector(0, 500)); Keyboard.Listen(Key.Down, ButtonState.Pressed, MovePlayer, null, player, new Vector(0, -500)); Keyboard.Listen(Key.Left, ButtonState.Pressed, MovePlayer, null, player, new Vector(-500, 0)); Keyboard.Listen(Key.Right, ButtonState.Pressed, MovePlayer, null, player, new Vector(500, 0)); TouchPanel.Listen(ButtonState.Pressed, NewGame, null); Accelerometer.Calibration = AccelerometerCalibration.ZeroAngle; Accelerometer.ListenAnalog(AccelerometerSensitivity.Realtime, ChangeGravity, null); TileMaptiles = TileMap.FromStringArray(lines); tiles['X'] = CreateGalaxy; tiles['*'] = CreateSombrero; tiles.Insert(tileWidth, tileHeight); Level.CreateBorders(); Camera.ZoomToLevel(); } publicvoidMovePlayer(PhysicsObjectplayer, Vectorforce) { player.Hit(force); } http://tinyurl.com/jypeli-paper
Course instances in 2009—2010 http://tinyurl.com/jypeli-paper
”I haveearlierprogrammingexperience” (2010) http://tinyurl.com/jypeli-paper
”I considermyself an experiencedcomputeruser” (2009-2010) http://tinyurl.com/jypeli-paper
”I play computergames…” (2009-2010) http://tinyurl.com/jypeli-paper
More student demographics • They have tried some languages, e.g. Java (20), Basic (17), C++ (17) (numbers overlap) • Most students are interested in career in software engineering (57 %) • Conclusion: Students were interested and motivated, but did not know what to expect out of the course http://tinyurl.com/jypeli-paper
Overall satisfaction • Overall satisfaction: 4.71 (2009), 4.56 (2010) • Fulfilled the expectations: 4.1 (2009), 3.9 (2010) • 85 % would recommend the course to his/her friends (2010) • (Scale: 1 Fully disagree -- 5 Fully agree) http://tinyurl.com/jypeli-paper
Hardest things on the course • 42 % of the responses related to new language and new syntax • “learning a new programming language" • “writing the code" • “syntax of the language" • “finding errors” • “writing errorless code” http://tinyurl.com/jypeli-paper
Is it hard to do programming? • Majority of the students had none or only little earlier programming experience (2009: 89 %, 2010: 73 %) • 68 % said that programming was NOT harder than he/she had expected • 49 % said their conception of programming had changed during the course • Thought it was harder • Programming games was more fun than expected • Programming was more fun than expected • Conclusion: It’s hard, but fun, and less hard than expected http://tinyurl.com/jypeli-paper
Correlationanalysis: Effect of earlierprogrammingexperience • Positive correlation with the question ”I willstudy in the field of ICT/science in the future” (Pearson correlation, ) • Negative correlation with the question ”The giventaskswerehard” (Pearsoncorrelation, ) http://tinyurl.com/jypeli-paper
InteresttowardsICT/science studies http://tinyurl.com/jypeli-paper
Challenges of the concept • How much do they learn • Measuring this is challenging • Is learning many things reallythe objective? • Is it enough just to “have funwith programming”? • What happens after the course • Post-course communication • Facebook http://tinyurl.com/jypeli-paper
Game theme in theUniversity of Jyväskylä • Ohjelmointi 1 (CS 1) with a gametheme • Started in 2010 • Strong learning outcomes • TDD (ComTest for C#) • As of autumn 2011 game theme will be a common denominator in the majority of the courses of the IT faculty http://tinyurl.com/jypeli-paper
Studies for senior high school students • We offer university courses for senior high school students • E.g. Programming 1 (CS 1) with a game-theme • Students are fully credited when they entry university • Give advantage in entrance examination http://tinyurl.com/jypeli-paper
Questions http://tinyurl.com/jypeli-paper