Download - Tools – not toys
![Page 1: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/1.jpg)
Tools – not toys
Vesa Lappalainen, Lecturer PhD Antti-Jussi Lakanen, University teacher MScDepartment of Mathematical Information Technology, University of Jyväskylätrac.cc.jyu.fi/projects/npohttps://trac.cc.jyu.fi/projects/comtest
![Page 2: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/2.jpg)
Vesa Lappalainen
• 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
2
![Page 3: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/3.jpg)
Antti-Jussi Lakanen
• 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
3
![Page 4: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/4.jpg)
Tools - not toys
• Many times things are left too complicated in real tools
• Not even beginners but also more experienced programmer
• This forces to use toys instead of real tools• Why not go a bit further with real tools?• We show two examples to simplify things:– Jypeli – event driven game framework over
XNA– ComTest – make unit testing easier
![Page 5: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/5.jpg)
Our presentation in a nutshell: Part 1• We are worried about the
decline in IT, science and math students• We developed a week-long
game programming course for youngsters to motivate studying IT, science and math
• Jypeli programming library was developed as a tool to reduce the cognitive load in beginning game programming
• We have had 7 courses, 150 students, aged 11-17
5
![Page 6: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/6.jpg)
Our presentation in a nutshell: Part 2• Ohjelmointi 1 (CS 1) with a game theme– 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
6
![Page 7: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/7.jpg)
Part 1: Game programming course for teenagers (12-16 years) using Jypeli
![Page 8: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/8.jpg)
• Each of these has its’ own important role in the process
• If we change some part, we affect the ensemble
8
• The course concept introduced is a combination of
1. department staff (teachers),
2. tools (Jypeli etc.), 3. content and 4. motivated
participants
Disclaimer
![Page 9: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/9.jpg)
Links
• https://trac.cc.jyu.fi/projects/npo • https://www.jyu.fi/it/laitokset/mit/opiskelu/n
uortenkurssi
• Facebook group: http://www.facebook.com/#!/group.php?gid=114345435260705
9
![Page 10: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/10.jpg)
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
• Physics2D.NET physics library
10
![Page 11: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/11.jpg)
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
11
![Page 12: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/12.jpg)
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)
12
![Page 13: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/13.jpg)
Finnish educational system
13
Elementary school, 6 yrs (Alakoulu in Finnish), starts at the age of 7
Junior High School, 3 yrs (Yläkoulu in Finnish)
Senior High School (lukio), 3 yrs
Vocational School (ammattikoulu), 3 yrs
University (bachelor), 3 yrs
Polytechnics (bachelor), 3.5 – 4 yrs
University (master), 2 yrs
Com
puls
ory
ed
uca
tion
50.2 % 41.2 % (8.6 %)
Pre-school, 1 year (Esikoulu in Finnish), starts at the age of 6
![Page 14: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/14.jpg)
Motivation and learning outcomes1. 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
14
![Page 15: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/15.jpg)
Motivation and learning outcomes2. 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
15
![Page 16: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/16.jpg)
How to program games
• Two mainstream options1. Visual programming
• Alice, Scratch, Greenfoot, …• Lego robots (compare to
industrial process programming, e.g. National Instruments, LabView, etc.)
• Microsoft Kodu
2. Textual programming• Java ACM Task Force• XGC1 (UWB)
16
![Page 17: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/17.jpg)
Alice
17
![Page 18: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/18.jpg)
Kodu Game Lab
18
•
![Page 19: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/19.jpg)
Jypeli library -- Why and objectives• “Real programming” by mainstream
tools• First game should not be many lines of code• “Realistic” physics built-in• Event-driven for 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
19
![Page 20: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/20.jpg)
Choosing the tool – Motivation to building a new library
• Lack of Finnish material• Xbox currently only game console
with the possibility to transfer own games easily C# as the language
• Lack of physics engines in available libraries out-of-the-box
• Limited time available – It also takes time to study a library someone else has made
• Faculty interests in bringing knowledge about building game engines, physics engines etc. 20
![Page 21: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/21.jpg)
Example game:Galaxy Trip
22
![Page 22: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/22.jpg)
using System;using Jypeli;using Jypeli.Effects;
public class Game : PhysicsGame{ static String[] lines = { " ", " ", " ", " X X ", "X ", " * ", " X X ", " ", " ", " ", " ", "* X X ", "X ", " * ", " X X ", " ", " ", " ", " * ", " X X ", "X ", " ", " X X ", " ", };
static int tileWidth = 800 / lines[0].Length; static int tileHeight = 480 / lines.Length; static Image playerImage = LoadImage("ship"); static Image galaxyImage = LoadImage("galaxy"); static Image sombreroImage = LoadImage("sombrero"); static Image explosionImage = LoadImage("bum"); ExplosionSystem explosionSystem; PhysicsObject player;
protected override void Begin() { Level.Background.Image = LoadImage("space"); Gravity = new Vector(0, -1000); NewGame(null); }
void NewGame(Touch touch) { 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, "Move up", 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);
TileMap tiles = TileMap.FromStringArray(lines); tiles['X'] = CreateGalaxy; tiles['*'] = CreateSombrero; tiles.Insert(tileWidth, tileHeight); Level.CreateBorders(); Camera.ZoomToLevel(); }
public void MovePlayer(PhysicsObject player, Vector force) { player.Hit(force); }
23
PhysicsObject CreateGalaxy() { PhysicsObject galaxy = PhysicsObject.CreateStaticObject(tileWidth, tileHeight); galaxy.Color = Color.LightBlue; AddCollisionHandler(galaxy, CollidedWithGalaxy); galaxy.Image = galaxyImage; return galaxy; }
PhysicsObject CreateSombrero() { PhysicsObject sombrero = PhysicsObject.CreateStaticObject(tileWidth, tileHeight); sombrero.Color = Color.Yellow; sombrero.Image = sombreroImage; AddCollisionHandler(sombrero, CollidedWithSombrero); return sombrero; }
void CollidedWithGalaxy(PhysicsObject galaxy, PhysicsObject target) { PlaySound("blop"); }
void CollidedWithSombrero(PhysicsObject sombrero, PhysicsObject target) { PlaySound("exp"); explosionSystem.AddEffect(target.X, target.Y, 50); sombrero.Destroy(); }
void ChangeGravity(AnalogState s) { Gravity = s.StateVector * 2000; }}
![Page 23: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/23.jpg)
Course instances in 2009—2010
2009 2010 Total
Courses 2 5 7
Instructors 1 plus 3-4 1 plus 4
Students 45 105 150
Girls / boys 7 / 38 6 / 99 13 / 137
Age• mean• median• youngest / oldest
13.813
12 / 16
14.214
11 / 17
Drop outs 3 (7 %) 6 (6 %) 9 (6 %)
24
![Page 24: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/24.jpg)
”I have earlier programming experience” (2010)
None Somewhat little
Not little, not much
Somewhat much
Very much0.0 %
10.0 %
20.0 %
30.0 %
40.0 %
50.0 % 47.5 %
25.3 %
18.2 %
8.1 %
1.0 %
26
![Page 25: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/25.jpg)
”I consider myself an experienced computer user” (2009-2010)
Disagree Somewhat disagree
Not agree, not disagree
Somewhat agree
Agree0.0 %
10.0 %
20.0 %
30.0 %
40.0 %
50.0 %
2.2 %4.4 %
33.3 %35.6 %
20.0 %
4.0 %6.0 %
31.0 %
41.0 %
18.0 %
2009 2010
27
![Page 26: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/26.jpg)
”I play computer games…” (2009-2010)
1-4 times a month A few days a week Every day0.0 %
10.0 %
20.0 %
30.0 %
40.0 %
50.0 %
60.0 %
70.0 %
2.2 %
46.7 %51.1 %
3.0 %
37.4 %
59.6 %
2009 2010
28
![Page 27: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/27.jpg)
30
Mon Tue Wed Thu Fri
9:00-9:50
Starting info
Functions Loops, random numbers, gravity
Classes and methods of Jypeli library
How to continue
10:00-10:50
Get to know with tools
Carrying on with the Pong game
Designing and implementing own game
Implementing own game
Finalizing own game
11:00-11:45
Making the first game (Pong-tutorial)
Finalizing the Pong game
Implementing own game
12:15-13:30
What are algorithms
Handling collisions
How to make a level out of a tilemap (grid)
Showcase
13:45-15:00
Carrying on with the Pong game
Designing own game
Implementing own game
Showcase and best game voting
![Page 28: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/28.jpg)
31
![Page 29: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/29.jpg)
32
![Page 30: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/30.jpg)
33
![Page 31: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/31.jpg)
34
![Page 32: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/32.jpg)
35
![Page 33: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/33.jpg)
36
![Page 34: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/34.jpg)
37
![Page 35: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/35.jpg)
Student output
• Video compilation of the ready games
38
![Page 36: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/36.jpg)
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”
40
![Page 37: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/37.jpg)
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
41
![Page 38: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/38.jpg)
Interest towards ICT/science studies
Pre- questioning
Post-questioning
+ / -
Agree or fully agree
37.9 % 43.6 % +5.7 %
Disagree or fully disagree
27.9 % 17.9 % -10.0 %
Mean 3.16 3.41 +0.25
Std dev 1.19 1.16 -0.03 43
![Page 39: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/39.jpg)
Challenges of the concept
• How much do they learn– Measuring this is challenging – Is learning many things really
the objective? – Is it enough just to “have fun
with programming”?
• What happens after the course• Post-course communication– Facebook
44
![Page 40: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/40.jpg)
Part 2: CS1 using Jypeli and ComTest (university and senior high school students)
![Page 41: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/41.jpg)
Game theme in theUniversity of Jyväskylä• Ohjelmointi 1 (CS 1)
with a game theme (Jypeli)– 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
46
![Page 42: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/42.jpg)
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
47
![Page 43: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/43.jpg)
ComTest = Comments for Testing• Unit testing more simple– In CS2 the threshold to make JUnit tests is
quite high
• Tool for design– Serve as both code examples and test cases
• Tool for documentation• https://trac.cc.jyu.fi/projects/comtest/wiki/ComTestInEnglish
48
![Page 44: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/44.jpg)
49
/// <summary>/// Microsoft Academic Conference 2011 – ComTest example/// </summary>public class MAC2011{ /// <summary> /// Is a given year a leap year. /// </summary> /// <param name="vuosi">Year in question.</param> /// <returns>true if is a leap year, otherwise false.</returns> /// @example /// <pre name="test"> /// MAC2011.IsLeapYear(1900) === false; // divisible by 100 /// MAC2011.IsLeapYear(2000) === true; // divisible by 400 /// MAC2011.IsLeapYear(2003) === false; // odd number /// MAC2011.IsLeapYear(2004) === true; // divisible 4 /// MAC2011.IsLeapYear(2010) === false; // not divisible 4 /// </pre> /// @endexample public static bool LeapYear(int vuosi) { if (year % 400 == 0) return true; if (year % 100 == 0) return false; return year % 4 == 0; }}
![Page 45: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/45.jpg)
50
![Page 46: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/46.jpg)
ComTest = Comments for Testing• Suits for functions and objects• Java, C++, C# implementations• Plugins for Eclipse and VS2010• “Preprocessor” that translates ComTest
test to JUnit or NUnit tests• Tabular format simplifies more complex
testing– See ComTest vs. JUnit
51
![Page 47: Tools – not toys](https://reader038.vdocuments.mx/reader038/viewer/2022102622/56812c39550346895d90c000/html5/thumbnails/47.jpg)
52
Questio
ns