scalanimate an educational programming platform on top of
play

Scalanimate An educational programming platform on top of Scastie - PowerPoint PPT Presentation

Scalanimate An educational programming platform on top of Scastie Xavier Pantet Scalacenter EPFL January 22, 2018 1/19 Outline Motivation Introduction Already existing solutions Challenges API Implementation Limitations


  1. Scalanimate An educational programming platform on top of Scastie Xavier Pantet Scalacenter EPFL January 22, 2018 1/19

  2. Outline Motivation Introduction Already existing solutions Challenges API Implementation Limitations Implementation discussion Problems encountered Conclusion Future perspectives Final words 2/19

  3. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  4. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  5. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  6. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  7. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  8. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  9. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, dreamincode.net functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  10. Motivation Introduction How did you learn programming? 1. Install a bunch of tools you have no clue about 2. Write a “Hello World” program 3. Compile and run it ? 4. Realise it’s useless 5. Learn about variables, dreamincode.net functions, ... 6. Your programs are ugly and unusable 7. No UI and user controls! 3/19

  11. Motivation Introduction How can we do better? ◮ Not having to install anything ◮ Create visual programs ◮ Provide immediate and intuitive feedback to the user ◮ Provide useful functions to make possible writing cool and usable programs 4/19

  12. Motivation Introduction How can we do better? ◮ Not having to install anything ◮ Create visual programs ◮ Provide immediate and intuitive feedback to the user ◮ Provide useful functions to make possible writing cool and usable programs 4/19

  13. Motivation Introduction How can we do better? ◮ Not having to install anything ◮ Create visual programs ◮ Provide immediate and intuitive feedback to the user ◮ Provide useful functions to make possible writing cool and usable programs 4/19

  14. Motivation Introduction How can we do better? ◮ Not having to install anything ◮ Create visual programs ◮ Provide immediate and intuitive feedback to the user ◮ Provide useful functions to make possible writing cool and usable programs 4/19

  15. Motivation Introduction How can we do better? ◮ Not having to install anything ◮ Create visual programs ◮ Provide immediate and intuitive feedback to the user ◮ Provide useful functions to make possible writing cool and usable programs 4/19

  16. Motivation Already existing solutions Figure: Scratch ◮ “Block-assembling” ◮ Fairly simple and intuitive for beginners ◮ Slow ◮ Not a programming language 5/19

  17. Motivation Already existing solutions Figure: Scratch ◮ “Block-assembling” ◮ Fairly simple and intuitive for beginners ◮ Slow ◮ Not a programming language 5/19

  18. Motivation Already existing solutions Figure: Scratch ◮ “Block-assembling” ◮ Fairly simple and intuitive for beginners ◮ Slow ◮ Not a programming language 5/19

  19. Motivation Already existing solutions Figure: Scratch ◮ “Block-assembling” ◮ Fairly simple and intuitive for beginners ◮ Slow ◮ Not a programming language 5/19

  20. Motivation Already existing solutions Figure: Scratch ◮ “Block-assembling” ◮ Fairly simple and intuitive for beginners ◮ Slow ◮ Not a programming language 5/19

  21. Motivation Already existing solutions Figure: WoofJS ◮ Code-based version of Scratch in Javascript ◮ Simple API ◮ Javascript is known to be messy ◮ Main source of inspiration for Scalanimate 6/19

  22. Motivation Already existing solutions Figure: WoofJS ◮ Code-based version of Scratch in Javascript ◮ Simple API ◮ Javascript is known to be messy ◮ Main source of inspiration for Scalanimate 6/19

  23. Motivation Already existing solutions Figure: WoofJS ◮ Code-based version of Scratch in Javascript ◮ Simple API ◮ Javascript is known to be messy ◮ Main source of inspiration for Scalanimate 6/19

  24. Motivation Already existing solutions Figure: WoofJS ◮ Code-based version of Scratch in Javascript ◮ Simple API ◮ Javascript is known to be messy ◮ Main source of inspiration for Scalanimate 6/19

  25. Motivation Already existing solutions Figure: WoofJS ◮ Code-based version of Scratch in Javascript ◮ Simple API ◮ Javascript is known to be messy ◮ Main source of inspiration for Scalanimate 6/19

  26. Motivation Already existing solutions Figure: Doodle ◮ Compositional vector graphics in Scala + Scala.js ◮ Highlights functional programming ◮ Composition, composition and composition ◮ Rather difficult for beginners 7/19

  27. Motivation Already existing solutions Figure: Doodle ◮ Compositional vector graphics in Scala + Scala.js ◮ Highlights functional programming ◮ Composition, composition and composition ◮ Rather difficult for beginners 7/19

  28. Motivation Already existing solutions Figure: Doodle ◮ Compositional vector graphics in Scala + Scala.js ◮ Highlights functional programming ◮ Composition, composition and composition ◮ Rather difficult for beginners 7/19

  29. Motivation Already existing solutions Figure: Doodle ◮ Compositional vector graphics in Scala + Scala.js ◮ Highlights functional programming ◮ Composition, composition and composition ◮ Rather difficult for beginners 7/19

  30. Motivation Already existing solutions Figure: Doodle ◮ Compositional vector graphics in Scala + Scala.js ◮ Highlights functional programming ◮ Composition, composition and composition ◮ Rather difficult for beginners 7/19

  31. Challenges 7/19

  32. Challenges A game is elegant when a small number of basic actions allow the player to do a large number of strategic actions. Jesse Schell schellgames.com ◮ A simple API for drawings and animations... ◮ ... that offers many possibilities to the end user ◮ Designed for the web (integration into Scastie) 8/19

  33. Challenges A game is elegant when a small number of basic actions allow the player to do a large Jesse Schell number of strategic actions. schellgames.com What we want: ◮ A simple API for drawings and animations... ◮ ... that offers many possibilities to the end user ◮ Designed for the web (integration into Scastie) 8/19

  34. Challenges A game is elegant when a small number of basic actions allow the player to do a large Jesse Schell number of strategic actions. schellgames.com What we want: ◮ A simple API for drawings and animations... ◮ ... that offers many possibilities to the end user ◮ Designed for the web (integration into Scastie) 8/19

  35. Challenges A game is elegant when a small number of basic actions allow the player to do a large Jesse Schell number of strategic actions. schellgames.com What we want: ◮ A simple API for drawings and animations... ◮ ... that offers many possibilities to the end user ◮ Designed for the web (integration into Scastie) 8/19

  36. Challenges A game is elegant when a small number of basic actions allow the player to do a large Jesse Schell number of strategic actions. schellgames.com What we want: ◮ A simple API for drawings and animations... ◮ ... that offers many possibilities to the end user ◮ Designed for the web (integration into Scastie) 8/19

  37. User API 8/19

  38. API We want the user to be able to: ◮ Draw shapes (circles, rectangles, polygons, ...) ◮ Set fill and border colors ◮ Rotate the shapes ◮ Move them ◮ Show and hide them ◮ Display images ◮ React to basic user input (mouse clicks and key presses) ◮ Detect collisions between shapes and the edges of the drawing context 9/19

Recommend


More recommend