Programming Tutor
Programming Tutor
BY
STEPHEN GIDEON
(CSC/17U/4317)
SUPERVISED
BY
MR M.A ALIYU
OCTOBER, 2024
i
APPROVAL PAGE
___________________________________ __________________
MR Mohammed M. Aliyu Date
(Supervisor )
_____________________________________ ___________________
Prof P.B. Zirra Date
(External Examiner)
_____________________________________ _________________
Prof E.J. Garba Date
(Head of the Department)
ii
DECLARATION PAGE
I hereby declare that this project report was written by me and it is a record of my own
research work. It has not been presented before in any previous application for a higher
degree. All references cited have been duly acknowledged.
Name:
Signature:
Date:
iii
DEDICATION
This project is dedicated to God Almighty for His endless grace, guidance, and strength
throughout this journey.
I also dedicate this work to my beloved parents, for their unconditional love, prayers, and
unwavering support. Your encouragement has been my driving force.
To my family and friends, thank you for your constant motivation and belief in my abilities.
This achievement is as much yours as it is mine.
Lastly, I dedicate this work to all aspiring programmers who seek knowledge and growth in
the field of technology. May this project inspire you to pursue your dreams and overcome any
challenges in your path.
iv
ACKNOWLEDGEMENTS
I would like to express my sincere gratitude to everyone who contributed to the success of
this research. First and foremost, I thank God for His guidance and grace throughout this
project. I am deeply indebted to my supervisor, Mr. M. A Aliyu, whose expertise,
encouragement, and insightful feedback were invaluable to the completion of this work.
I would also like to extend my appreciation to my family and friends for their unwavering
support, patience, and understanding during this process. Their encouragement helped me
stay motivated.
Special thanks go to my colleagues and peers who provided valuable feedback and shared
their experiences, which enriched the development of this project.
Lastly, I would like to acknowledge the institutions and individuals who made valuable
resources available, without which this research would not have been possible. Thank you all
for your contributions and support.
v
ABSTRACT
This research aims to develop an educational application that addresses the challenges faced
by beginners in learning programming. The app offers an interactive, user-friendly platform
with hands-on coding exercises, tutorials, and real-time feedback. It features a structured
curriculum designed to enhance learning, promote programming literacy, and close the skills
gap in Nigeria’s tech industry. The findings show that the app effectively improves learner
engagement and success through its functional programming features, social interactions,
and experiential learning opportunities. To further improve the app, recommendations
include integrating live coding sessions, personalized feedback systems, broader age-group
inclusivity, and real-world coding projects. Expanding social collaboration and introducing
advanced programming topics will ensure continuous learning and skill development for
users.
vi
TABLE OF CONTENTS
COVER PAGE......................................................................................................................................
APPROVAL PAGE.............................................................................................................................
DECLARATION PAGE.....................................................................................................................
DEDICATION....................................................................................................................................
ACKNOWLEDGEMENTS.................................................................................................................
ABSTRACT........................................................................................................................................
CHAPTER ONE...................................................................................................................................
1.0 Introduction............................................................................................................................
1.1 Background of the Study.......................................................................................................
1.2 Statement of the Problem.......................................................................................................
1.3 Aims and Objectives of the Study.........................................................................................
1.4 Significance of the Study.......................................................................................................
1.5 Scope of the Study.................................................................................................................
1.6 Definition of Terms................................................................................................................
CHAPTER TWO..................................................................................................................................
LITERATURE REVIEW.....................................................................................................................
2.1 Overview of the Study...........................................................................................................
2.2 Historical Review...................................................................................................................
2.3 Theoretical Review................................................................................................................
2.3.1 Constructivist Learning Theory...........................................................................................
2.3.2 Situated Learning Theory....................................................................................................
2.3.4 Cognitive Load Theory.......................................................................................................
2.3.5 Behaviorist Learning Theory...............................................................................................
2.3.6 Constructive Alignment Theory..........................................................................................
2.3.7 Social Learning Theory.......................................................................................................
2.4 Challenges in Learning Programming....................................................................................
CHAPTER THREE............................................................................................................................
METHODOLOGY.............................................................................................................................
3.0 Research Design...................................................................................................................
3.0.1 Data Collection..................................................................................................................
3.0.2 Research Methodology......................................................................................................
3.0.3 Analysis of Existing System..............................................................................................
vii
3.0.4 Advantages of Existing Educational Programming Systems:...........................................
3.0.5 Disadvantages of Existing Educational Programming Systems........................................
3.0.6 Functional Requirement..................................................................................................
3.0.7 Analysis of the Proposed System...................................................................................
3.0.8 Non-Functional Requirement..........................................................................................
3.0.9 Justification of the Proposed System...............................................................................
3.1 System Architecture.............................................................................................................
3.2 Process Model......................................................................................................................
3.2.1 Functional Decomposition Diagram............................................................................
3.3 Use Case Diagram................................................................................................................
3.4 Testing and Evaluation........................................................................................................
3.5 Ethical Considerations.........................................................................................................
3.6 User Needs...........................................................................................................................
CHAPTER FOUR..............................................................................................................................
SYSTEM IMPLEMENTATION.......................................................................................................
4.1 Overview..............................................................................................................................
4.2 Programming Language and Technologies used.................................................................
4.3 Components of the system...................................................................................................
4.3.1 User’s Signup Page...........................................................................................................
4.3.2 Gmail Account..................................................................................................................
4.3.3 Home Page:.......................................................................................................................
4.3.4 The Progress Page.............................................................................................................
4.3.5 About App.........................................................................................................................
4.3.6 Background button............................................................................................................
4.3.7 StudyButton.......................................................................................................................
4.3.8 Quizzes Buttons.................................................................................................................
CHAPTER FIVE................................................................................................................................
SUMMARY, CONCLUSION AND RECOMMENDATIONS........................................................
5.1 Summary..............................................................................................................................
5.2 Conclusion...........................................................................................................................
5.3 Recommendations................................................................................................................
REFERENCES...................................................................................................................................
LIST OF FIGURES
Figure 1: Functiona; Decomposition Diagram - - - - - -13
Figure 2: Case Diagram - - - - - - - - -14
viii
Figure 3: Signup/Login Interface - - - - - - - -16
Figure 4: Home Page - - - - - - - -16
Figure 5: Product Page - - - - - - - - -17
Figure 6: About App - - - - - - - - -17
Figure 7: Background button - - - - - - - - -18
Figure 8: Adding Carts - - - - - - - - -18
Figure 9: Quizzes - - - - - - - -18
ix
CHAPTER ONE
1.0 Introduction
To address this challenge, this study proposes the development of a simple application aimed
at encouraging and facilitating the learning of programming for novice coders. By adopting a
gamified approach, this application seeks to create an immersive and enjoyable learning
experience that can appeal to a wide range of learners, regardless of their prior experience or
background in programming.
The need for programming education has grown exponentially in recent years, as coding
skills have become increasingly relevant in various sectors such as technology, science,
engineering, and even the arts. According to the Bureau of Labor Statistics (2020),
employment in computer and information technology occupations is projected to grow 11%
from 2019 to 2029, much faster than the average for all occupations. This trend underscores
the importance of equipping individuals with programming skills to meet the demands of the
modern workforce.
Traditionally, programming education has been delivered through formal classroom settings,
where instructors guide students through textbooks and assignments. However, this approach
often fails to accommodate the diverse learning paces and styles of students, particularly
those who are new to programming (Robins, Rountree, & Rountree, 2003). Many beginners
find themselves overwhelmed by the steep learning curve associated with programming
languages, logical structures, and abstract concepts. This challenge is compounded by the fact
that many educational resources assume a level of prior knowledge or exposure to
programming, which may not be present in all learners.
With the rise of educational technology, there has been a shift towards more interactive and
personalized learning experiences. Various tools and platforms have been developed to make
programming more accessible to a broader audience. For instance, Scratch, a visual
programming language developed by the MIT Media Lab, has been widely adopted in K-12
education for teaching the basics of programming (Resnick et al., 2009). Scratch's block-
based approach allows beginners to create programs by snapping together visual blocks,
thereby removing the need to learn syntax initially. Similarly, platforms like Code.org and
Khan Academy offer online courses that introduce programming concepts through interactive
lessons and coding challenges.
Despite these advancements, there remains a significant gap in educational applications that
are specifically tailored to complete beginners. Many existing tools, while effective, either
1
target a younger audience or focus on specific programming languages or advanced topics.
As a result, learners who are entirely new to programming may still find themselves
struggling to understand fundamental concepts. Moreover, the lack of structured learning
pathways in many of these tools can lead to confusion and frustration, ultimately deterring
learners from continuing their programming education (Lahtinen, Ala-Mutka, & Järvinen,
2005).
This study seeks to address these challenges by developing an educational application that
focuses on the needs of beginner programmers. The application will provide a structured and
supportive learning environment, introducing programming concepts in a clear and
manageable way. By leveraging interactive modules and a user-friendly interface, the
application aims to make programming more accessible and less intimidating for those who
are just starting.
Despite the increasing availability of programming education resources, many beginners still
find it difficult to grasp fundamental concepts. Traditional teaching methods often assume a
level of prior knowledge or logical thinking that beginners may not possess. This creates a
significant barrier to entry, particularly for those without a technical background (Guzdial,
2015). Moreover, existing educational applications may focus too heavily on advanced topics
or employ gamification strategies that, while engaging, may not effectively build a solid
foundation in programming basics.
The aim of this study is to develop an educational application that effectively teaches
programming to beginners. The specific objectives of the study are:
1. To design a user-friendly interface that simplifies the learning process for novice
programmers.
2. To create interactive modules that introduce programming concepts in a clear and
concise manner.
3. To design and implement interactive quizzes that assess users' understanding of
programming concepts and provide feedback for incorrect answers.
4. To ensure the app is accessible and usable on a variety of versions on android platform.
The significance of this study lies in its potential to change access to programming education
and empower individuals from diverse backgrounds to acquire valuable coding skills. By
providing a fun and engaging learning experience, the application developed in this study has
the potential to attract a broader audience to the field of programming, including
underrepresented groups such as women and minorities.
Furthermore, the findings of this study can inform the design of future educational apps and
contribute to the growing body of research on programming learning in the context of
programming education. By identifying effective strategies for integrating programming
principles into educational software, this study can pave the way for more innovative and
impactful approaches to teaching and learning programming.
2
1.5 Scope of the Study
The scope of this study encompasses the development, implementation, and evaluation of a
simple application designed to encourage learning programming among novice programmers.
The focus is on leveraging learning principles to create an engaging and interactive
educational tool that introduces fundamental programming concepts in an accessible and
enjoyable manner. The study aims to target beginners with little to no prior programming
experience, ensuring that the content is tailored to their needs and learning pace.
The application will cover essential programming topics such as variables, data types, control
structures (if-else statements, loops) and basic problem-solving techniques. By integrating
these topics into and activities, the application seeks to provide a practical, hands-on learning
experience that reinforces theoretical knowledge through immediate application.
Additionally, the study will investigate the effectiveness of the application in enhancing
learners' understanding and retention of programming concepts. This will involve conducting
post-tests, surveys, and interviews to gather quantitative and qualitative data on learners'
progress, engagement, and overall satisfaction with the learning experience.
The scope also includes the technical aspects of developing the application, such as designing
the user interface, ensuring user-friendly navigation. The study will address potential
challenges related to usability, accessibility, and scalability, ensuring the application is
optimized for a diverse user base.
By focusing on these areas, the study aims to contribute valuable insights into the use of
educational application in programming education, ultimately providing a practical tool that
can be adopted in educational settings to support novice programmers.
3
This includes the use of surveys, interviews, pre- and post-tests, and performance
data analysis.
7. Novice Coders: Individuals who have little to no prior experience in
programming.
8. Novice Programmers: Individuals who are new to programming and have little to
no prior experience with coding or computer science. This study focuses on
beginners who are just starting to learn programming concepts and skills.
9. Pre- and Post-Tests: Assessments administered before and after the use of the
application to measure learners' knowledge and understanding of programming
concepts. Pre-tests establish a baseline of learners' knowledge, while post-tests
evaluate the educational impact of the application.
10. Programming Concepts: Fundamental ideas and principles used in computer
programming, such as variables, loops, conditionals, and functions.
11. Programming Concepts: The fundamental principles and constructs used in
computer programming, including variables, data types, control structures (such as
loops and conditionals), functions, and problem-solving techniques. These
concepts form the basis of the programming curriculum covered in the
application.
12. Traditional Learning Methods: Conventional approaches to teaching
programming, such as lectures, textbooks, and static exercises. These methods are
used as a comparison to evaluate the effectiveness of the educational application.
13. Usability: The ease with which users can learn to use and effectively interact with
the application. Usability is assessed through user testing and feedback, focusing
on the intuitiveness, efficiency, and error-friendliness of the application.
14. User Experience (UX): The overall experience and satisfaction of users when
interacting with the application. UX encompasses usability, accessibility, and the
emotional response of users to the design and functionality of the application.
15. User Interface (UI): The visual and interactive components of the application
through which users interact with the system. This includes buttons, menus, text
fields, and other graphical elements designed to facilitate user input and
navigation.
16. User Testing: A research method involving the observation and evaluation of
users interacting with the application. User testing helps identify usability issues,
gather feedback, and assess the overall user experience.
4
CHAPTER TWO
LITERATURE REVIEW
This chapter presents a comprehensive review of the literature relevant to the development of
an educational application for learning programming. It provides insights into historical
perspectives, theoretical frameworks, app development methodologies, challenges
encountered in learning programming, and existing research gaps in the literature.
Programming education began in the mid-20th century, concurrent with the development of
the first computers. In the 1950s and 1960s, programming was primarily taught in
universities and research institutions, focusing on machine language and assembly language.
These early programming languages required programmers to write detailed instructions
specific to the computer’s architecture, which was both time-consuming and error-prone. The
educational methods were heavily lecture-based, with limited practical application, often
resulting in a steep learning curve for students.
The proliferation of personal computers in the late 1970s and 1980s revolutionized
programming education. Computers like the Apple II and the IBM PC became common in
educational settings, providing students with hands-on experience. Educational software and
programming environments, such as LOGO, further supported interactive learning. LOGO,
developed by Seymour Papert, emphasized learning through exploration and discovery, using
simple commands to control a turtle graphics device. This period saw a shift towards more
practical, experience-based learning.
The 1990s and early 2000s witnessed significant advancements in Integrated Development
Environments (IDEs), which integrated editing, compiling, and debugging tools into a single
interface. IDEs like Turbo Pascal, Visual Basic, and later, Eclipse and NetBeans, enhanced
the programming learning experience by providing real-time feedback and error detection.
These tools made it easier for beginners to experiment and learn from their mistakes,
promoting a more iterative and interactive learning process.
5
The advent of the internet and online learning platforms in the late 2000s and 2010s further
transformed programming education. Platforms such as Codecademy, Coursera, edX, and
Khan Academy provided accessible, self-paced learning opportunities for millions of learners
worldwide. These platforms offered interactive coding exercises, video tutorials, and
immediate feedback, making programming education more flexible and scalable. MOOCs
(Massive Open Online Courses) allowed learners from diverse backgrounds to access high-
quality programming education, often for free or at a low cost.
The concept of game-based learning, although not new, gained significant traction in the 21st
century with the development of digital games and educational technologies. Early examples
of educational games include "The Oregon Trail" and "Carmen Sandiego," which were used
to teach subjects like history and geography. In the context of programming education,
platforms like CodeCombat and Scratch have been pioneers in integrating game-based
elements to teach coding.
Scratch, developed by MIT Media Lab in 2007, uses a visual programming language to
introduce children to programming concepts. It allows users to create interactive stories,
games, and animations by snapping together code blocks. Scratch’s gamified approach has
made it immensely popular in schools and after-school programs worldwide.
6
2.3 Theoretical Review
Theoretical frameworks play a crucial role in understanding the principles underlying
effective programming education. This section provides an in-depth exploration of theoretical
perspectives relevant to programming education, drawing on key concepts from
constructivism, situated cognition.
Constructivist learning theory, pioneered by Jean Piaget and Lev Vygotsky, posits that
learners construct their own understanding and knowledge of the world through experiences
and reflecting on those experiences. Piaget emphasized the importance of active learning and
discovery, where learners build on their prior knowledge through hands-on activities and
problem-solving (Piaget, 1971). Vygotsky introduced the concept of the Zone of Proximal
Development (ZPD), which suggests that learners can achieve higher levels of understanding
with the guidance of a more knowledgeable other (Vygotsky, 1978).
Situated learning theory, developed by Jean Lave and Etienne Wenger, argues that learning is
inherently social and context-bound, occurring through participation in authentic activities
within a community of practice (Lave & Wenger, 1991). This theory emphasizes the
importance of context and social interaction in the learning process, suggesting that
knowledge is best acquired when learners engage in meaningful, real-world tasks.
Cognitive Load Theory (CLT), developed by John Sweller, focuses on the limitations of
7
2.3.5 Behaviorist Learning Theory
Behaviorist learning theory, associated with B.F. Skinner, emphasizes the role of
reinforcement and punishment in shaping behavior (Skinner, 1954). Although behaviorism
has been largely supplanted by cognitive and constructivist theories in contemporary
education, its principles still underpin many game mechanics. For instance, games use
rewards (points, badges, levels) and feedback (positive reinforcement) to motivate players
and reinforce desired behaviors.
In educational games, these mechanics can be leveraged to reinforce programming skills and
concepts. For example, completing a coding challenge successfully can result in immediate
positive feedback and rewards, encouraging learners to continue practicing and improving
their skills. Conversely, mistakes can be used as learning opportunities, with the game
providing hints or explanations to guide the learner towards the correct solution.
Social Learning Theory, introduced by Albert Bandura, emphasizes the role of observation,
imitation, and modeling in learning (Bandura, 1977). According to this theory, learners
acquire new behaviors and skills by observing others and imitating their actions. Social
interactions and collaborative activities are therefore crucial components of the learning
process.
Learning programming is a rewarding endeavor, but it also presents numerous challenges for
learners, especially those who are new to the field. This section explores some of the key
challenges that learners may encounter when embarking on their programming journey, along
with strategies to address these challenges effectively.
8
2. Syntax and Language Complexity: Each programming language has its syntax rules
and conventions, which learners must understand and apply correctly. Syntax errors
are common among beginners and can be frustrating to troubleshoot. Moreover,
transitioning between different programming languages may require learners to adapt
to new syntax rules and programming paradigms (Sebesta, 2015).
3. Problem-Solving Skills: Programming often involves solving complex problems
through algorithmic thinking and logical reasoning. Developing effective problem-
solving skills requires practice and perseverance. Learners may struggle with breaking
down large problems into smaller, manageable tasks and devising algorithms to solve
them (Vihavainen et al., 2014).
4. Debugging and Troubleshooting: Debugging is an integral part of the programming
process, but it can be time-consuming and challenging, especially for novice
programmers. Identifying and fixing errors in code requires patience and attention to
detail. Learners may encounter various types of bugs, including syntax errors, logic
errors, and runtime errors, which can be difficult to diagnose (Zeller, 2009).
5. Lack of Feedback and Guidance: Self-directed learning is common in programming
education, but learners may struggle to receive timely feedback and guidance.
Without access to knowledgeable mentors or instructors, learners may feel stuck when
they encounter difficulties or errors in their code. Moreover, online resources and
tutorials may not always provide comprehensive explanations or personalized
assistance (Guzdial, 2015).
6. Motivation and Persistence: Learning programming requires dedication and
persistence, especially when facing setbacks or challenges. Learners may experience
frustration and disillusionment when they encounter difficulties or fail to achieve their
desired outcomes. Maintaining motivation and a growth mindset is essential for
overcoming obstacles and persevering through the learning process (Dweck, 2006).
7. Lack of Real-World Context: Programming concepts and exercises are often taught
in isolation from real-world applications, making it challenging for learners to see the
relevance and practical implications of their learning. Without opportunities to apply
their programming skills to meaningful projects or problems, learners may struggle to
stay engaged and motivated (Kölling et al., 2003).
9
CHAPTER THREE
METHODOLOGY
This study employs a mixed-methods research design to investigate the effectiveness of the
educational application in enhancing novice programmers' understanding of programming
concepts. The mixed-methods approach allows for the collection and analysis of both
quantitative and qualitative data, providing a comprehensive understanding of the research
problem (Creswell & Plano Clark, 2018).
Data collection methods include both quantitative and qualitative techniques. Quantitative
data will be gathered through pre- and post-tests to measure participants' programming
knowledge and skills before and after using the application. Additionally, quantitative
surveys will be administered to gather feedback on the usability and effectiveness of the
application.
The methodology used in realizing this project is iterative and incremental development life
cycle of software development called the agile model.
1. Accessibility: Many educational platforms like SoloLearn and Grasshopper are free
or offer affordable options, making programming education accessible to a global
audience. These apps are available on mobile devices, enabling learners to study
anywhere at their own pace
2. Interactive Learning: Platforms like Codecademy and Mimo provide hands-on
coding exercises with real-time feedback. This immediate interaction helps learners
10
understand mistakes and correct them instantly, improving retention and practical
skills
3. Community Support: SoloLearn and similar platforms foster a community-driven
environment where users can interact, ask questions, share progress, and participate in
coding challenges. This peer-to-peer interaction can be invaluable for learning and
overcoming challenges
1. Limited Advanced Content: Platforms like Codecademy and Mimo often lock
advanced lessons behind a paywall, restricting the progression of learners unless they
subscribe to premium versions
2. Narrow Focus: Some apps, like Grasshopper, focus on a limited set of programming
languages or concepts (e.g., JavaScript only). This restricts learners who want to
explore a wider range of languages or advanced topics.
3. Ads and Distractions: Many free apps, such as Programming Hub, rely on
advertisements for revenue, which can be disruptive to the learning experience and
hinder focus during lessons (Crabtree & Perez-Gascon, 2023).
This part discusses the functionalities required from the system. The system is
considered to perform a set of high-level functions for the users. The following are the
functions:
11
o The system should support multiple programming languages (e.g., Python,
Java, HTML) to cater to a wide range of learners.
o Each language should have a structured learning path that starts with basic
concepts and gradually introduces advanced topics.
An educational app is the new system being propose to replace the less efficient
existing app of teaching programming languages currently adopted by the students of
Modibbo Adama university Yola and Yola metropolitan at large.
From the review of related studies, several systems similar to this system have been
designed and implemented.
The proposed system will help and give a benefit to the student by allowing them to have an
efficient and reliable study app for free not having to pay for premium services.
The system architecture of the learning application comprises several components, including
the user interface, backend server, database, and game engine. The frontend user interface
provides an interactive environment for learners to engage with programming quizzes and
activities. The backend server manages user accounts, progress tracking, the database stores
user information, and performance metrics.
12
3.2 Process Model
A Process Model tells us about how the data is processed and how the data flows from one
table to another to gather the required information. This model consists of the Functional
Decomposition.
quizzes study
Profile About Exit Signout
Fig.1
A use case diagram will be created to illustrate the various interactions and functionalities of
the game-based learning application from the perspective of different user roles, including
learners, instructors, and administrators. The use case diagram will help identify the primary
use cases and system requirements of the application, guiding the development and testing
processes.
13
Fig.2
The testing and evaluation phase will involve pilot testing the application with a small group
of participants to identify and address any usability issues, technical bugs, or design flaws.
Iterative testing cycles will be conducted to refine and improve the application based on user
feedback and testing results.
Ethical considerations will be prioritized throughout the research process to ensure the
protection of participants' rights and confidentiality. Informed consent will be obtained from
all participants, and their privacy will be safeguarded by anonymizing data and securely
storing sensitive information. Participants will be informed of their right to withdraw from
the study at any time without penalty, and measures will be taken to minimize any potential
risks or discomfort associated with participation.
User needs will be identified through a combination of literature review, needs assessment
surveys, and user feedback sessions. Understanding the diverse needs, preferences, and
learning styles of the target audience will inform the design and development of the
educational application, ensuring that it effectively addresses users' learning goals and
objectives.
14
CHAPTER FOUR
SYSTEM IMPLEMENTATION
4.1 Overview
In this chapter, we explore the findings from the research on the design and implementation
of an educational app aimed at teaching programming to newbies. The research sought to
assess the effectiveness of the app in improving the programming knowledge of beginner
learners, particularly focusing on how different features of the app influenced the learning
process. By analyzing the demographic characteristics of the respondents and discussing the
results in relation to age, social interaction, symbolic rewards, and hands-on experiences, this
chapter provides a detailed interpretation of the data. Additionally, recommendations based
on these findings are proposed to improve the app's functionality and learner engagement.
4.2 Programming Language and Technologies used
The technologies used in this are Flutter: mobile UI framework for building cross-platform
apps. Dart is the programming language used, as it is the primary language for Flutter
development. Dart was chosen for its cross-platform capabilities, Firebase backend services
for authentication and firestore database is the database. Other technologies used include
Android Studio, it simplified the writing of the code and debugging process. Android Studio
was chosen because it is easy to install, offers excellent support for Flutter, and its auto-
complete feature makes coding easier. Additionally, it helps identify syntax errors during
development.
The user will be asked to choose which preferred email logged in on the phone will be
registered on the database and be use for frequent login by the user.
15
Figure 3 Signup/Login interface
4.3.3 Home Page: The home page is the first page on this website after the user is logged in
through which other pages can be accessed. This page consists of features that leads to pages
like the Progress, Setting page, Study page, and the three languages Quizzes. This page is
shown in the figure below:
16
The progress page is a crucial component of this mobile app that showcases individual
progress after taking studying and taking the quizzes. In this page is a user will be able to
know his progress and to improve.
The "About App" page on this app serves as a place to communicate the version, purpose of
the app. it’s part of establishing credibility and connecting with users.
17
The background button is a pivotal button in the educational app, allowing users to choose
the background of the app either dark or light selections, giving this option gives chances to
those who prefer darkmode to use the app app conviniently.
4.3.7 StudyButton
This is the Button that gives access to the material to study get user prepared for the
challenges, this button bring up three different material each book for it language quizze.
The button gives access to users to choose among th three integrated quizzes from three
different languages.
18
Figure 4.7 Quizzes
CHAPTER FIVE
5.1 Summary
This research aims to address the challenges faced by beginners in learning programming
languages by developing an educational app that provides an interactive, user-friendly
platform for hands-on coding exercises, tutorials, and real-time feedback. The app features a
structured curriculum, designed to enhance learning and skill-building. In Nigeria, the
adoption of educational technology like this can significantly contribute to promoting
programming literacy, driving innovation, and empowering a new generation of developers,
ultimately supporting economic growth by closing the programming skills gap and opening
up career opportunities in the tech industry.
5.2 Conclusion
The findings from this research demonstrate that the educational app designed to teach
programming to newbies has a profound impact on learners’ engagement and success. The
combination of functional programming features, social interactions, symbolic rewards, and
experiential learning opportunities created a comprehensive educational experience that
effectively addressed the needs of beginner programmers. The app’s user-friendly design,
flexible learning paths, and real-time feedback mechanisms were particularly successful in
helping newbies build confidence and competence in programming.
5.3 Recommendations
To enhance the effectiveness of the educational app, further development of interactive
features such as integrating an IDE, live coding sessions and personalized feedback systems
is recommended. These features would allow users to engage in real-time problem-solving
with instructors or peers, while receiving more detailed, individualized guidance.
Additionally, broader age-group inclusivity should be a priority by incorporating beginner-
friendly materials for older adults and users unfamiliar with technology. This could involve
slower-paced lessons and more video-based tutorials to accommodate different learning
speeds and styles.
The app would also benefit from a stronger focus on real-world coding projects, giving users
the opportunity to apply their skills to problems faced by professional developers. Enhancing
social collaboration through group challenges, coding competitions, and team-based exercises
could foster a sense of community and increase user engagement. Lastly, introducing more
advanced programming topics like data structures, algorithms, and object-oriented
19
programming would provide a continuous learning path for users, allowing them to progress
beyond the basics.
20
REFERENCES
Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz, R., Konwinski, A., Lee, G.,
Patterson, D. A., Rabkin, A., Stoica, I., & Zaharia, M. (2010). A view of cloud
computing. Communications of the ACM, 53(4), 50-58.
Bandura, A. (1977). Social learning theory. Prentice Hall.
Biggs, J. (1996). Enhancing teaching through constructive alignment. Higher Education,
32(3), 347-364.
Chandler, P., & Sweller, J. (1991). Cognitive load theory and the format of instruction.
Cognition and Instruction, 8(4), 293-332.
Csikszentmihalyi, M. (1990). Flow: The psychology of optimal experience. Harper & Row.
Deci, E. L., & Ryan, R. M. (1985). Intrinsic motivation and self-determination in human
behavior. Plenum.
Gee, J. P. (2008). Learning and games. In Salen, K. (Ed.), The Ecology of Games:
Connecting Youth, Games, and Learning (pp. 21-40). The MIT Press.
Grigorik, I. (2013). High performance browser networking: What every web developer
should know about networking and web performance. O'Reilly Media.
Hamari, J., Shernoff, D. J., Rowe, E., Coller, B., Asbell-Clarke, J., & Edwards, T. (2016).
Challenging games help students learn: An empirical study on engagement,
flow and immersion in game-based learning. Computers in Human Behavior,
54, 170-179.
Johnson, L., Adams, S., & Cummins, M. (2011). The NMC Horizon Report: 2011 K-12
Edition. The New Media Consortium.
Kolb, D. A. (1984). Experiential learning: Experience as the source of learning and
development. Prentice-Hall.
Lave, J., & Wenger, E. (1991). Situated learning: Legitimate peripheral participation.
Cambridge University Press.
Plass, J. L., Homer, B. D., & Kinzer, C. K. (2015). Foundations of game-based learning.
Educational Psychologist, 50(4), 258-283.
Skinner, B. F. (1954). The science of learning and the art of teaching. Harvard Educational
Review, 24(2), 86-97.
21