Design of a Web Application for Introductory Programming
Total Page:16
File Type:pdf, Size:1020Kb
Masaryk University Faculty of Informatics Design of a web application for introductory programming Bachelor’s Thesis Adam Král Brno, Spring 2020 Masaryk University Faculty of Informatics Design of a web application for introductory programming Bachelor’s Thesis Adam Král Brno, Spring 2020 This is where a copy of the official signed thesis assignment and a copy ofthe Statement of an Author is located in the printed version of the document. Declaration Hereby I declare that this paper is my original authorial work, which I have worked out on my own. All sources, references, and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Adam Král Advisor: Mgr. Tomáš Effenberger i Acknowledgements I could not have done this alone, and I would not have wanted to. My thanks belong to my advisor Tomáš Effenberger, for guiding my work and helping me evaluate my thoughts and ideas. I would also like to thank my parents, sister and other family members who supported me and created the right environment needed for me to focus. My thanks also belong to Anna, who repeatedly read this thesis, tested the application and provided me with valuable feedback. I am also grateful to all my friends who tried the system and gave me feedback. I would also like to express gratitude to Masaryk University, specifically Faculty of Informatics and its members for providing me with valuable knowledge and with a community I can belong to. iii Abstract This thesis presents the process behind creating a modern design of a web application, specifically web application for introductory programming. The thesis elaborates the choices in redesigning to implement latest technologies, meet demands created by new devices and support novel means of usage. The resulting design is then tested with automated test suites and human users for its usability and user experience. iv Keywords Web Application, JavaScript, HTML, CSS, Design, User Experience, UX, User Interface, UI, Introductory Programming v Contents Introduction1 1 Overview3 1.1 Applications for introductory programming .........3 1.1.1 Block-based programming.............3 1.2 Robomission ..........................3 1.3 Web Platform .........................3 1.3.1 Responsive web applications...........4 1.3.2 Progressive Web Applications..........4 1.4 Design .............................5 1.5 Material Design ........................5 2 Design requirements7 2.1 Home page ...........................7 2.1.1 Loading speed...................7 2.2 Space game ..........................7 2.3 Tasklist ............................8 2.4 Responsiveness ........................8 3 Design proposals 11 3.1 Setting theme ......................... 11 3.1.1 Font.......................... 11 3.1.2 Colour theme.................... 11 3.2 Home page ........................... 13 3.3 Simulator ........................... 13 3.4 Tasklist ............................ 16 3.5 Animations .......................... 17 3.5.1 Space game..................... 17 3.5.2 Home page..................... 20 4 Implementation 21 4.1 Application deployment using containerization ....... 21 4.2 Used frameworks and libraries ................ 22 4.2.1 React......................... 22 4.2.2 Blockly........................ 22 4.2.3 React Material-UI.................. 23 vii 4.2.4 Updating versions of frameworks........ 23 4.3 Responsiveness ........................ 24 4.4 Home page ........................... 24 4.4.1 Login and registration............... 25 4.4.2 Loading time.................... 25 4.5 Simulator ........................... 26 4.5.1 Animations..................... 27 4.6 Tasklist ............................ 27 4.7 Making our application a Progressive Web Application ... 27 4.8 Using meta values for being shared and web-crawled .... 28 5 Testing 31 5.1 Using automated test suites .................. 31 5.2 Testing with real users .................... 31 6 Conclusion 33 6.1 Further work ideas ...................... 33 6.1.1 Accessibility..................... 33 6.1.2 Better PWA..................... 34 6.1.3 Captivating story.................. 34 Bibliography 35 A Attachments 37 B Preview of the redesigned application 39 B.1 Preview on a desktop computer ................ 39 B.2 Preview on a mobile phone .................. 39 viii List of Tables ix List of Figures 2.1 The space game 8 2.2 The look of the old home page on a mobile phone 9 3.1 Fonts used in our application 12 3.2 The prototype of home page 14 3.3 Different proposal of simulator layout on mobile devices 15 3.4 Paper wireframes of simulator 16 3.5 Final landscape wireframe of the simulator 17 3.6 Final portrait wireframe of the simulator 18 3.7 Old design (below) and new wireframe (above) of the tasklist 19 3.8 Possible approaches to rocket animation 20 4.1 The old look of the code simulator 28 4.2 Comparison of former and latter web-site linked with a thumbnail 29 B.1 The home page on computer display 40 B.2 The simulator on computer display 40 B.3 The tasklist on computer display 41 B.4 Installed PWA on a desktop computer with Ubuntu Linux 42 B.5 Installed PWA shortcut on a desktop computer with Ubuntu Linux 43 B.6 The simulator on a mobile phone display 44 B.7 The simulator on a mobile phone display 45 B.8 The tasklist on a mobile phone display 46 B.9 The simulator as a PWA in full-screen and landscape orientation on a mobile phone 47 xi Introduction Nowadays, web technologies are making progress faster than ever be- fore. As users move from desktop devices to mobile devices, desktop- first interfaces are becoming obsolete, and the increasing percentage of services is designed mobile-first. Besides this paradigm shift, the design of web applications is also advancing, as the visual design is responsible for the first impression on potential customer or user. A particular design is not something that is intended to stay - it changes with how we interact with the product. The process of creating a new design per se is, however, more permanent. We hereby describe the process of redesigning the application, specifically the web application Robomission. The description covers our discussions, design choices, implementation details, and reference points for future work. In the first chapter, we take a look at the useful terms and trends in web design. The second chapter sets out the resulting specific de- sign requirements of our application. Making of design proposals conforming to these requirements is described in the third chapter. The implementation of design proposals and individual components is examined in the fourth chapter. The fifth chapter is dedicated to test- ing our final design. Finally, the sixth chapter includes the evaluation of the product, the fulfilment of proposed plans and opportunities for future development. 1 1 Overview 1.1 Applications for introductory programming Applications suited for teaching users to code are called Applications for introductory programming. They take various approaches to learn- ing. Application Robomission got its inspiration from Lightbot, Khan Academy, Hour of Code and Blockly Games [1, p. 3]. 1.1.1 Block-based programming Programming languages that use commands in block form instead of writing code are called block-based. User can usually drag blocks to arrange them in the desired order for execution. Not every part of the syntax is in block form - some parts of syntax would be inconvenient to work with if they were in block form, such as numbers of repetitions of cycle. Block-based programming was selected thanks to its ease of comprehension. Further discussion about used approaches was done in work of Tomáš Effenberger [1, p. 3]. 1.2 Robomission Tomáš Effenberger created the application Robomission in 2018[1]. The application was focused rather on artificial intelligence possi- bilities than on a good design. Nevertheless, the design of a then- created application was a solid base for the design created in this thesis. Robomission is the application for learning introductory pro- gramming, particularly focused, but not limited to children. The pro- gramming language used for learning is block-based, as it has been shown that block-based programming languages lead to better com- prehension, entertainment, memory retention and are generally more suitable for learning to code [2]. 1.3 Web Platform Development of web applications has recently undergone a massive rise in popularity. The only requirement of running a web application 3 1. Overview is the browser and network connection, which makes this platform attractive - a large number of devices (mobile phones, laptops, tablets, even smart televisions) meets these requirements. Developer who needs to write a multi-platform application can design it for a browser and then delegate the integration of the application to developers of the browsers. As the web application runs in the browser, there is no need for installation or prior configuration. All the user has to do is to enter the URI address. Furthermore, the user does not have to be concerned with updates, as the update of the web application is done every time it is loaded. Nowadays, the majority of developers write code for web platform applications. Of all languages, JavaScript, HTML and CSS were the most used languages in 2018 [3]. 1.3.1 Responsive web applications The devices being able to connect to the Web are very different from the ages when the Web was invented. To access the Internet today, user can choose from a variety of devices running a variety of operating systems. Devices throughout this spectrum differ in parameters, such as display size, speed of connection, pixel density. Most of today responsiveness guides for developers target the display size, but the original definition was a lot wider. In the article mentioning the responsive design for the first time, the author writes: We can design for an optimal viewing experience, but embed standards-based technologies into our designs to make them not only more flexible, but more adaptive to the media that renders them. In short, we need to practice responsive web design [4].