0% found this document useful (0 votes)
23 views30 pages

Programming Tutor

This project report details the design and implementation of a programming tutor application aimed at helping beginners learn programming concepts. The app features interactive modules, quizzes, and a user-friendly interface to enhance engagement and understanding. The study highlights the importance of accessible programming education and proposes recommendations for further improving the application.

Uploaded by

gistmedugu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views30 pages

Programming Tutor

This project report details the design and implementation of a programming tutor application aimed at helping beginners learn programming concepts. The app features interactive modules, quizzes, and a user-friendly interface to enhance engagement and understanding. The study highlights the importance of accessible programming education and proposes recommendations for further improving the application.

Uploaded by

gistmedugu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

COVER PAGE

DESIGN AND IMPLEMENTATION OF PROGRAMMING TUTOR

BY

STEPHEN GIDEON

(CSC/17U/4317)

A PROJECT REPORT SUBMITTED TO THE DEPARTMENT OF COMPUTER


SCIENCE, FACULTY OF PHYSICAL SCIENCE, IN PARTIAL FULFILLMENT OF
THE REQUIREMENTS FOR THE AWARD OF BACHELOR OF TECHNOLOGY
(B. TECH) DEGREE IN COMPUTER SCIENCE MODIBBO ADAMA UNIVERSITY,
YOLA

SUPERVISED

BY

MR M.A ALIYU

OCTOBER, 2024

i
APPROVAL PAGE

This project report/thesis entitled “Design and Implementation of A Programming Tutor"


meets the regulations governing the award of Degree of the Modibbo Adama University of
Technology, Yola and is approved for its contribution to knowledge and literary presentation.

___________________________________ __________________
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

In today's technology-driven world, programming has become an essential skill across


various disciplines. The ability to code not only enhances problem-solving skills but also
opens doors to numerous career opportunities. However, learning to program can be
challenging, especially for beginners who are unfamiliar with the concepts and terminologies.
This study explores the development of an educational application designed to teach
programming to beginners, aiming to bridge the gap between complex programming concepts
and novice learners.

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.

1.1 Background of the Study

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.

1.2 Statement of the Problem

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.

1.3 Aims and Objectives of the Study

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.

1.4 Significance of the Study

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.

1.6 Definition of Terms


Here are the 19 terms in alphabetical order:
1. Backend Server: The part of the application that manages data storage, user
authentication, and communication between the front end (user interface) and the
database. The backend server ensures the smooth operation and security of the
application.
2. Educational Content: The programming topics, questions, and exercises integrated
into the application. This content is designed to teach and reinforce fundamental
programming concepts through interactive gameplay.
3. Engagement: The level of interest, motivation, and active participation
demonstrated by users while using the application
4. Feedback: Information provided to users regarding their performance and progress
within the application. Feedback includes immediate responses to user actions,
such as correct or incorrect answers, as well as cumulative scores and rewards that
motivate continued learning.
5. Learning Outcomes: The measurable results of the educational process, including
learners' acquisition of programming knowledge, skills, and competencies.
Learning outcomes are assessed through tests, surveys, and user performance data.
6. Mixed-Methods Research Design: A research approach that combines quantitative
and qualitative methods to provide a comprehensive evaluation of the application.

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

2.1 Overview of the Study

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.

2.2 Historical Review

The evolution of programming education has undergone significant transformations, shaped


by advancements in technology and pedagogical approaches. Understanding the historical
context of programming education provides insights into the current challenges and
opportunities for innovative methods, such as game-based learning, to enhance the learning
experience.

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 introduction of high-level programming languages such as FORTRAN (1957), Java


(1995), and Python (1991) marked a significant milestone in programming education. These
languages abstracted much of the complexity of machine code, making programming more
accessible. Python, in particular, was designed with education in mind and was widely
adopted in schools and universities. It allowed beginners to write simple programs without
needing deep technical knowledge, thus democratizing access to programming.

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.

CodeCombat, launched in 2013, takes a different approach by immersing learners in a fantasy


game environment where they write code to control their characters and complete quests.
This platform targets older students and provides a more complex programming environment,
teaching languages like Python and JavaScript.

Today, the integration of educational application in programming education continues to


evolve, driven by advancements in technology such as artificial intelligence, virtual reality,
and augmented reality. These technologies have the potential to create even more immersive
and personalized learning experiences. For instance, VR environments can simulate real-
world programming challenges, while AI can provide adaptive learning paths and
personalized feedback.

Research has consistently shown the benefits of educational application in increasing


engagement, motivation, and retention of knowledge. Studies indicate that students who learn
through the use of applications often show improved problem-solving skills, higher levels of
persistence, and a more positive attitude towards learning (Plass et al., 2015; Hamari et al.,
2016).

However, challenges remain in the widespread adoption of educational application in


programming education. Issues such as the cost of development, the need for robust
evaluation metrics, and ensuring inclusivity and accessibility are critical areas that need to be
addressed.

In conclusion, the historical trajectory of programming education highlights a continuous


trend towards making programming more accessible and engaging. From the early days of
machine language to the current era of educational application, each phase has contributed to
lowering barriers and enhancing the learning experience. This study aims to build on this rich
history by exploring the effectiveness of an educational application designed specifically for
novice programmers, contributing to the ongoing evolution of programming education.

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.

2.3.1 Constructivist Learning Theory

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).

In the context of game-based learning, constructivist principles are embodied in the


interactive and exploratory nature of games. Games provide a rich, immersive environment
where learners can experiment, make mistakes, and receive immediate feedback, aligning
with the constructivist emphasis on active engagement and experiential learning. By
scaffolding challenges within the game, learners are guided through their ZPD, gradually
building their skills and knowledge (Dickey, 2005).

2.3.2 Situated Learning Theory

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.

Game-based learning leverages situated learning by placing learners in realistic, context-rich


environments where they must apply programming concepts to solve problems. For example,
games that simulate real-world scenarios or project-based tasks provide an authentic context
for learners to practice coding, enhancing their understanding and retention of programming
skills (Gee, 2008). Moreover, multiplayer or collaborative games foster social interaction and
teamwork, further reinforcing situated learning principles.

2.3.4 Cognitive Load Theory

Cognitive Load Theory (CLT), developed by John Sweller, focuses on the limitations of

Game-based learning can be designed to minimize extraneous cognitive load by presenting


information in a clear, intuitive manner and using visual and interactive elements to support
understanding. By structuring challenges and providing scaffolding within the game,
designers can manage intrinsic cognitive load and enhance germane cognitive load,
facilitating deeper learning and comprehension (Chandler & Sweller, 1991).

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.

2.3.6 Constructive Alignment Theory

Constructive Alignment Theory, developed by John Biggs, emphasizes the alignment


between learning objectives, teaching activities, and assessment methods (Biggs, 1996). This
theory advocates for a learner-centered approach, where educational activities are designed to
align with desired learning outcomes and assessments measure the achievement of those
outcomes.

In game-based learning, constructive alignment is achieved by designing game activities that


directly support the learning objectives of programming education. For example, if the
objective is to teach loops and conditionals, the game might include puzzles that require the
use of these constructs to progress. Assessment within the game can be integrated through
challenges that test the learner's understanding and application of programming concepts,
providing immediate feedback and opportunities for improvement.

2.3.7 Social Learning Theory

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.

2.4 Challenges in Learning Programming

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.

1. Conceptual Complexity: Programming involves mastering abstract concepts and


logical thinking, which can be challenging for beginners. Concepts such as variables,
loops, and conditional statements may be difficult to grasp initially, particularly for
individuals with no prior exposure to programming languages (Ben-Ari, 1998).

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

3.0 Research Design

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).

3.0.1 Data Collection

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.

Qualitative data will be collected through semi-structured interviews with participants to


explore their perceptions, experiences, and attitudes towards using the learning application.
Observations and field notes will also be recorded during the implementation phase to
capture contextual insights and observations.

3.0.2 Research Methodology

The methodology used in realizing this project is iterative and incremental development life
cycle of software development called the agile model.

3.0.3 Analysis of Existing System

Existing educational apps for teaching programming to beginners, such as SoloLearn,


Codecademy, Grasshopper, and Mimo, provide accessible and interactive platforms to
introduce coding. These systems excel in offering structured, mobile-friendly lessons, real-
time feedback, and gamification elements, making programming more engaging for learners.
However, many of these platforms focus primarily on basic concepts and often oversimplify
programming topics, making it challenging for learners to transition to advanced coding.
Additionally, some platforms restrict access to advanced content behind paywalls, limiting
the progression of users unless they subscribe to premium versions.

3.0.4 Advantages of Existing Educational Programming Systems:

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

3.0.5 Disadvantages of Existing Educational Programming Systems

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).

3.0.6 Functional Requirement

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:

1. User Registration and Login


o The system allows users to register with personal information using gmail
account
2. User Dashboard
o The system displays a personalized dashboard with progress tracking, current
lessons, and quizzes.
3. Interactive Coding Lessons
o The system should offer interactive, beginner-friendly coding tutorials across
multiple programming languages Python, Java and HTML.
o Lessons includes learners with real-time feedback to guide learners through
correct and incorrect answers.
o The system provides solutions to users stuck on quizzes.
4. Quizzes and Assessments
o The system should provide quizzes after each lesson to assess user
comprehension.
o Users should receive instant feedback on quiz performance, with explanations
for incorrect answers.
5. Progress Tracking
o The system should track and display users' progress, including completed
lessons, coding challenges, and quizzes.
o Users should be able to view detailed statistics, such as time spent on lessons,
number of errors corrected, and overall performance.
6. Multiple Programming Languages

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.

3.0.7 Analysis of the Proposed System

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.

1. Allow Admin to update quizzes and study materials.


2. Progress: provides user to view progress.
3. Real-time corrections: provides the user with the correct scored immediately after
answering a question.

3.0.8 Non-Functional Requirement

1. Performance – The system would be built to provide reasonable performance, with


minimal delay in response time to the users clicks.
2. Security – The security of accessing the application will be enhanced using Gmail
logins to ensure that only authorized users can access the system.
3. Usability – The proposed system would have a simple and intuitive user interface, in
order to make it easy to use for the user.

3.0.9 Justification of the Proposed System

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.

3.1 System Architecture

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.

3.2.1 Functional Decomposition Diagram

A decomposition diagram shows a top-down functional decomposition of a system and


exposes the system's structure. The objective of the Functional Decomposition is to break
down a system step by step, beginning with the main function of a system and continuing
with the interim levels down to the level of elementary functions. Figure 1 shows the
Functional Decomposition Diagram for this project.

User Login/sign page

Home Progress Settings

quizzes study
Profile About Exit Signout

Fig.1

3.3 Use Case Diagram

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

3.4 Testing and Evaluation

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.

3.5 Ethical Considerations

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.

3.6 User Needs

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.

4.3 Components of the system


The system is made up of several components; these components are discussed below:

4.3.1 User’s Signup Page

Signing up refers to the process of registering or creating an account on a website,


application, or platform. It typically involves providing certain information to gain access to
specific features, services, or content. In the case of this application, the following
information will be required from the user in order to gain access to the course materials and
quizzes.

4.3.2 Gmail Account

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:

Figure 4 Home page

4.3.4 The Progress Page

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.

Figure 5 Progress page.

4.3.5 About App

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.

Figure 6 About App

4.3.6 Background button

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.

Figure 7 Background Button

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.

Figure 8 Study Button

4.3.8 Quizzes Buttons

The button gives access to users to choose among th three integrated quizzes from three
different languages.

18
Figure 4.7 Quizzes

CHAPTER FIVE

SUMMARY, CONCLUSION AND RECOMMENDATIONS

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

You might also like