0% found this document useful (0 votes)
16 views4 pages

Employability

This paper discusses the challenges faced by computer science students in developing programming skills and suggests methodologies to improve their proficiency. It highlights the importance of understanding problem domains, utilizing software engineering techniques like pair programming, and incorporating practical examples and game development into the curriculum. Recommendations include introducing software modeling early, refining problem-solving skills, and using debugging tools to enhance learning outcomes.

Uploaded by

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

Employability

This paper discusses the challenges faced by computer science students in developing programming skills and suggests methodologies to improve their proficiency. It highlights the importance of understanding problem domains, utilizing software engineering techniques like pair programming, and incorporating practical examples and game development into the curriculum. Recommendations include introducing software modeling early, refining problem-solving skills, and using debugging tools to enhance learning outcomes.

Uploaded by

Phoenix raj
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

SAI Computing Conference 2016

July 13-15, 2016 | London, UK

Recommendations to Improve Programming Skills


of Students of Computer Science

Fatmah Yousef Assiri


Faculty of Computing and Information Technology
King Abdulaziz University
Jeddah, KSA 21589
Email: [email protected]

Abstract—Computer programming is one of the main skills students’ understanding of programming subjects, and thereby,
that students gain when they graduate from computer science increase their programming skills (Section II).
programs. However, students often have significant difficulties
with their programming skills. This paper is based on a survey sectionStudent Difficulties with Programming
study that summarizes the primary reasons for students diffi-
culties in this area. In addition, methodologies, such as seeing
Students face many difficulties when learning computer
the software big picture and pair programming, are suggested programming. In an investigation into the reasons for these
by which students can improve their programming skills. These difficulties, Mow [1] suggested that these issues may be
methods are adapted from software engineering subdisciplines. related to difficult programming languages and/or development
environments. Programming languages’ syntax and semantics
Keywords—Programming skills; Students; difficulties; Pair pro- are very different; students/programmers need to understand
gramming; Game development, Practical examples; Practice.
the details of programming languages to be proficient in them.
In addition, students need expertise with different development
I. I NTRODUCTION environments to use the compiler, read error messages, and
understand memory usage. Mow also mentioned the difficulty
Computer programming is the process of solving problems students have in differentiating between a problem and a
by creating executable programs, which are also known as solution; problems need to be understood before solutions are
computer software. To develop a specific type of software, designed.
developers study software requirements and implement them
through the use of programming languages, such as Java, C#, Tan et al. [2] investigated the difficulties of understanding
Visual Basic .NET (VB.NET), etc. programming subjects among 182 undergraduate students.
They found the main difficulty for students is understanding
Computer programming is challenging, and students strug- how programs are executed. These results are similar to those
gle to be proficient in this skill. Many factors can negatively found by Milne and Rowe [3]. Moser [4] relates the difficultes
impact the degree to which students are interested in the to the way programming langauges are explained to the stu-
topic and their ability to obtain the required knowledge. dents; explaining programming languages in a single context
Researchers have investigated factors that cause students to may negatively impact their ability to learn other programming
have difficulty when learning programming subjects. Some languages [4].
relate the difficulties to the required wide-ranging knowledge
of different areas, such as problem-solving skills and deep There are other factors can impact students’ ability to
understanding of different programming languages. Others learn. For example, many students do not have previous
relate the drop out rate in programming subjects to lack of experience in programming. Therefore, student struggles might
student understanding of program execution that increases the be due to course contents that do not cover related background
difculty in comprehending programming subjects. materials, assuming they were covered in previous classes. In
addition, different levels of student skills in one classroom
We found that students’ lack of understanding of the might intimidate them learning the subjects [1].
problem domain, programming languages, and/or development
environments is among the main reasons for student difficulties II. I MPROVING P ROGRAMMING S KILLS A MONG
with programming subjects. Many suggestions were proposed S TUDENTS
in the literature to improve students programming skills, such
as game development and practical exercises. However, no The education process can help students strengthen their
studies propose to use software engineering methodologies as a programming skills. Therefore, this paper presents specific
way to improve student performance in programming courses. methodologies with which educators can help their students
develop skills in this area.
The present research is a survey study to: (1) summarize
some of the factors that can negatively influence student ability A. Seeing the Big Picture
to become proficient in programming subjects (Section I),
and (2) propose methods using software engineering sub- Problem solving, which is the process of understanding
disciplines, such as software modeling, software debugging, the problem domain, identifying solutions, and transferring the
and pair programming, along with other methods, to improve solutions into the computer using programming languages, is a

978-1-4673-8460-5/16/$31.00 2016 IEEE 886 | P a g e


SAI Computing Conference 2016
July 13-15, 2016 | London, UK

crucial skill for developers. Students need to be trained to gain C or higher. In Cockburn [13], 74% of students reported that
a thorough understanding of the problem before beginning to pair programming helped them to answer all their questions,
determine a solution. and 84% learned new technology faster and better.
Training in software modeling helps students gain this These findings establish pair programming as an effective
understanding of the problem. This is the first step in software learning technique, because it helps students perform better
development cycles after collecting requirements. Software on projects and exams. More controlled empirical studies are
modeling involves gaining the required background knowledge needed to study the impact of pair programming as a method
of the problem, studying the requirements that are necessary to improve student programming skills.
to solve the problem, and using modeling languages, such
as the Unified Modeling Language (UML), to model a sys- C. Practical Examples
tem’s structure. UML models a system in terms of classes, Research identifies the use of examples as the best option
attributes, operations, and relationships between classes [5], for educators to help their students learn [1], [2], [10]. The
[6]. It provides the overall picture of a system’s different parts use of examples, especially practical examples, can simplify
and the connections between these parts. Figure 1 is a UML programming subjects for students. For example, the physical
class diagram for a system that models phone call originating space of the classroom can be used to represent a class in
and billing. The system consists of eight classes (PhoneBill, Object-Oriented Programming (OOP). Students can represent
PhoneCall, Phone, Origin, ModileOrigin, MobileCall, Cell- the objects. In addition, information from each student (e.g.,
Phone, and FixedPhone) and the relationships. A UML class name, age, and major) can act as the class attributes, and
diagram can help students understand a system’s architecture different values of these attributes can be used as object states.
before proceeding with implementation in detail. Using this method, the concept of OOP can become a logical
There are other UML diagams that can be used to model and approachable topic for students. In addition, educators can
different perspective of the systems. For example, use case incorporate examples into lectures. These examples can be
diagrams describe the relationships between the user and the made engaging to students by targeting their interests, such
system and sequence diagrams describe the relationships of as building robots or creating sustainable food systems.
objects using ordered sequences of messages [7]. Researchers
D. Game Development
have investigated the benefits of using UML modeling to
improve developers’ understanding of the system and software Students can be encouraged and motivated to learn pro-
quality [8], [9]. Using UML improved system correctness gramming languages. Therefore, it is important for educators
significantly (54% increase in program correctness) [9]. There to pay close attention to the coursework that they design,
has been no empricial study that investigated the benefits of including projects, assignments, and lab sessions. Students
using UML modeling to improve students’ understanding of will become more engaged when solving and implementing
the problem and thus thier programming skills; we plan to computer games. A study by Cagiltay [18], [19] reveals that
study this in future research. developing computer games strengthens problem-solving skills
in students, helps them to learn independently, and refines their
academic performance in general. Akcaoglu [20] evaluated
B. Practice problem-solving skills for middle school students who attended
Learning by doing improves student programming a summer program and practiced programming through a game
skills [1], [2], [10]. With this approach, rather than exclusively development. The results showed a significant improvement
listening to lectures, students have more time to practice in students’ problem-solving skills: system analysis, design,
coding. Practice can be completed in laboratory sessions and decision-making, and troubleshooting.
when independently completing coursework. When students Game development helps students improve their problem-
practice in a lab, the educator acts as a guide to help students solving skills or thinking skills, since they have to gain a full
solve problems. In addition, students can work collaboratively understanding of the game techniques before implementing.
in groups of two using a pair programming approach. Pair Thus, they will learn the problem domain (how the game
programming is a development technique in which two pro- works), propose a solution (how to implement it), and then
grammers work together in same design, code, or algorithm; implement the solution (write the game code).
one is the code writer, and the other is the observer [11].
E. Programming Environments
Research shows that pair programming improves the qual-
ity of generated code within a shorter time period compared Programming environments, also known as integrated de-
to individual programming in economic models [12], [13], velopment environments (IDE), enable developers to program
[14]. Other studies have been conducted on the use of pair in different programming languages. It consist of source code
programming in computer science courses [12], [15], [16], editors and a set of tools to compile and execute code. They
[17]. Nagappan et al. [15] investigated about 700 students also offer debugging tools, which are used to track source code
in two consecutive semesters, and they found that students behavior by moving through the code and checking variable
groups that pair programmed performed better (higher scores) values at each step. Debugging is a rich process that can be
on exams and projects. Mendes [17] studied the impact of pair used to help students understand a program’s behavior [1].
programming for 300 second-year computer science students Therefore, educators can help students by introducing them to
at the University of Auckland in 2004. Pair programming and encouraging them to use programs and tools, including
improved the success percentage, which was defined as the debugging, to understand code execution. As a result, their
percentage of students who passed the class with a grade of programming skills can be improved.

978-1-4673-8460-5/16/$31.00 2016 IEEE 887 | P a g e


SAI Computing Conference 2016
July 13-15, 2016 | London, UK

Fig. 1: UML class diagram for a phone call system.

F. Psychological Effects begin to code. In future research, I plan to study the difficulties
that students have with programming at King AbdulAziz
Past experience can have a major impact on a student’s University and to develop course curricula that overcome the
ability to learn and practice programming. The range of pro- main difficulties students have with programming subjects.
gramming capabilities that students have can be intimidating
to students [1]. It is the educator’s responsibility to encourage
students to write code, to allow them to make mistakes, and R EFERENCES
to help them understand error messages. Educators may find
[1] I. Mow, “Issues and difficulties in teaching novice computer program-
it helpful to share their past experiences in programming with ming,” in Innovative Techniques in Instruction Technology, E-learning,
their students. This will also let students know that the educator E-assessment, and Education, M. Iskander, Ed. Springer Netherlands,
once experienced the same difficulties that the students face, 2008, pp. 199–204.
thereby helping students see their potential to become skilled [2] P.-H. Tan, C.-Y. Ting, and S.-W. Ling, “Learning difficulties in program-
programmers. ming courses: Undergraduates’ perspective and perception,” in Com-
puter Technology and Development, 2009. ICCTD ’09. International
Conference on, vol. 1, Nov 2009, pp. 42–46.
III. R ECOMMENDATIONS [3] I. Milne and G. Rowe, “Difficulties in learning and teaching pro-
grammingviews of students and tutors,” Education and Information
The following recommendations will help students technologies, vol. 7, no. 1, pp. 55–66, 2002.
strengthen their programming skills: [4] R. Moser, “A fantasy adventure game as a learning environment: why
learning to program is so difficult and what can be done about it,” in
• It is highly recommended to introduce students to ACM SIGCSE Bulletin, vol. 29, no. 3. ACM, 1997, pp. 114–116.
software modeling before they complete computer [5] S. S. Alhir, Unified Modeling Language (UML).
programming courses to help them formalize a prob- John Wiley & Sons, Inc., 2002. [Online]. Available:
lem and understand a system’s structure prior to http://dx.doi.org/10.1002/0471028959.sof365
proceeding with coding. [6] J. B. Warmer and A. G. Kleppe, “The object constraint language:
Precise modeling with uml (addison-wesley object technology series),”
• Students need to refine their problem-solving skills, 1998.
which involves understanding the problem domain, [7] G. Booch, The unified modeling language user guide. Pearson
analyzing and solving the problem that is under study, Education India, 2005.
and translating the solution into executable code. [8] H.-E. Eriksson and M. Penker, “Business modeling with uml,” Business
Patterns at Work, John Wiley & Sons, New York, USA, 2000.
• Debugging tools are rich material that can help stu- [9] W. Dzidek, E. Arisholm, and L. Briand, “A realistic empirical evaluation
dents to understand program execution by tracking of the costs and benefits of uml in software maintenance,” Software
Engineering, IEEE Transactions on, vol. 34, no. 3, pp. 407–432, May
variables and methods. It is highly beneficial to in- 2008.
troduce students to debugging tools along with pro- [10] E. Lahtinen, K. Ala-Mutka, and H.-M. Järvinen, “A study of the
gramming subjects. difficulties of novice programmers,” in ACM SIGCSE Bulletin, vol. 37,
no. 3. ACM, 2005, pp. 14–18.
• Educators can challenge students through lab work
[11] L. Williams and R. Kessler, Pair programming illuminated. Addison-
and assignments that are completed outside of class Wesley Longman Publishing Co., Inc., 2002.
to improve their programming performance. [12] L. Williams, R. R. Kessler, W. Cunningham, and R. Jeffries, “Strength-
ening the case for pair programming,” IEEE software, no. 4, pp. 19–25,
IV. C ONCLUSION 2000.
[13] A. Cockburn and L. Williams, “The costs and benefits of pair program-
This paper suggests that the education process is the ming,” Extreme programming examined, pp. 223–247, 2000.
main factor leading to the difficulties that students have with [14] L. Williams and R. L. Upchurch, “In support of student pair-
programming. Bridging the gap between the real world and programming,” in ACM SIGCSE Bulletin, vol. 33, no. 1. ACM, 2001,
pp. 327–331.
programming subjects through the use of practical examples
[15] N. Nagappan, L. Williams, M. Ferzli, E. Wiebe, K. Yang, C. Miller,
and game development can improve student understanding of and S. Balik, “Improving the cs1 experience with pair programming,”
programming concepts and make the topic more enjoyable. in ACM SIGCSE Bulletin, vol. 35, no. 1. ACM, 2003, pp. 359–362.
Students can be introduced to modeling and debugging tools to [16] A. Begel and N. Nagappan, “Pair programming: what’s in it for me?”
improve their knowledge of the system under study before they in Proceedings of the Second ACM-IEEE international symposium on

978-1-4673-8460-5/16/$31.00 2016 IEEE 888 | P a g e


SAI Computing Conference 2016
July 13-15, 2016 | London, UK

Empirical software engineering and measurement. ACM, 2008, pp.


120–128.
[17] E. Mendes, L. B. Al-Fakhri, and A. Luxton-Reilly, “Investigating pair-
programming in a 2 nd-year software development and design computer
science course,” in ACM SIGCSE Bulletin, vol. 37, no. 3. ACM, 2005,
pp. 296–300.
[18] N. E. Cagiltay, “Teaching software engineering by means of computer-
game development: Challenges and opportunities,” British Journal of
Educational Technology, vol. 38, no. 3, pp. 405–415, 2007.
[19] M. Feldgen and O. Clua, “Games as a motivation for freshman students
learn programming,” in Frontiers in Education, 2004. FIE 2004. 34th
Annual, Oct 2004.
[20] M. Akcaoglu, “Learning problem-solving through making games at the
game design and learning summer program,” Educational Technology
Research and Development, vol. 62, pp. 583–600, 2014.

978-1-4673-8460-5/16/$31.00 2016 IEEE 889 | P a g e

You might also like