Content area
This study was influenced by the University of Trinidad & Tobago first year students' perception that programming is difficult. The study started with researching publications on problems faced when teaching an introductory programming course which represented the lecturers' perspective. Interviews with some 1st year programming students and analyses of the solutions submitted by these students represented the students' perspective. The approach being proposed is teaching the programming language as teaching a foreign language. The issue of problem solving in programming was separated from programming. This was dealt with prior to programming through using Input Processing Output (IPO) table. The results obtained from using this approach for six years are shown.
Abstract - This study was influenced by the University of Trinidad & Tobago first year students' perception that programming is difficult. The study started with researching publications on problems faced when teaching an introductory programming course which represented the lecturers' perspective. Interviews with some 1st year programming students and analyses of the solutions submitted by these students represented the students' perspective. The approach being proposed is teaching the programming language as teaching a foreign language. The issue of problem solving in programming was separated from programming. This was dealt with prior to programming through using Input Processing Output (IPO) table. The results obtained from using this approach for six years are shown.
Keywords: Introductory programming, problem-solving, foreign language, syntax, logic
1Introduction
The University of Trinidad & Tobago (UTT) was established in 2004 and consists of three main campuses. UTT is the most recent university in Trinidad and thus, must prove itself credible. A new university, a new approach, a new cure, a different solution, a new recipe, all share one thing in common, it must be given a chance. This requires a lot of marketing, demonstrating, and sampling to get the attention of people who are comfortable with the existing approach. The same applies to teaching using new techniques.
1.1Motivation for study
The existing and accepted approach to teaching general courses in the school system is reading, explaining, understanding and imparting. The only exceptions to this would be teaching Mathematics and Programming which requires the additional skill of problem solving. The teaching of Mathematics starts at an early age so students have been exposed and experienced the teaching of Mathematics. Even though teaching of Mathematics starts at an early age, a lot of students dislike Mathematics. Scarpello (2007) reports that seventy-five percent of Americans stop the study of mathematics and stay away from many careers or anything that related to mathematics. Students believe that Mathematics is required for programming so their opinion of Mathematics is reflected in programming. Students find any degree course that involved programming difficult to learn (Kunkle & Allen, 2016, Daly 2011, Kaplan 2010). The uneasy feeling by students such as panic, lost, clueless and helplessness when working on something related to mathematics tends to affect performance (Wondimu et al, 2012). Scarpello (2007) identifies mathematics anxiety as one of the main reason for this uneasy feeling.
Programming is a first time course for most students and the approach would be new since programming is heavily based on problem solving approach. In an attempt to reflect UTT as a state of the art institution in its approach to teaching Introduction To Programming, research was carried out to discover the main problems experienced in teaching this course. Then an approach was designed in an attempt to overcome these problems.
1.2Sample for study
The sample used in this study was 1st year students of the University of Trinidad & Tobago, Point Lisas campus. The students came from Mechanical & Process Engineering and Electrical & Instrumental Engineering. The course selected was Introduction to Computers & Programming. This course consists of three main sections, computer systems (25%), spreadsheets (20%) and introduction to logic and programming (55%). The programming consists of sequential, decision and repetition structures. This course had no final examination. The introduction to logic and programming was assessed by designing logic to problems (15%) and programming lab (40%). This course was taught in a computer lab and each lab can hold a maximum of 30 students. This sample was used for 6 consecutive years.
2Research Review
The heavy dependence on ICT in this technological age would suggest a large enrollment in the ICT department. However, at UTT, the ICT department enrollment is quite low. The outreach to secondary schools plays an important role. UTT has two important factors in attracting students, pass rate and credibility of university. The pass rate of the course Introduction To Programming was researched.
2.1 Problems in teaching programming
The high proportion of Computer Science degree students that do not graduate is mainly due to high dropout and failure rates in the introductory programming course (Gomes, Areias, Henriques & Mendes, 2008; O'Kelly & Gibson, 2006). This failure rate can reach a high of 30-40% [Beaubouef and Mason 2005]. This disenchantment persists and student express a dislike and reluctance to take programming courses.
Introductory programming has no prerequisite, hence it is a new concept to most, if not all students. As with all new things, the biggest challenge is to capture the interest. Motivating the students is crucial. The traditional approach to teaching would mainly focus on syntax of a specific language and not motivating students into meaningful programming activities (Schulte 2006). Professional programming languages e.g. C, C++ and Java have extensive and complex syntax (Jenkins, 2002). The concepts also pose difficulty to students because they are abstract. Students are required use these abstract concept to analyze the problem, to design a solution, to solve the problem, implement the solution and test the solution, all in a sensible manner (Esteves 2008). This abstract concept has no real world analogy. Understanding and solving alone is difficult but that is combined with the implementation of the solution (Lahtinen et al, 2005]
2.2 Perspectives
Students perceive programming courses as sitting in front of a computer, glaring at the monitor, locating and correcting computer programming errors. The major reasons for students feeling lost and clueless were as follows:
* Inability to relate the problem to knowledge in computing
* Overwhelming initial amount of syntax errors
* Lack of understanding of what is the error and how to fix it
* Isolated work
* Abstract programming concepts which poses difficulty in relating to real life
* Programming structures e.g. for, switch, array are different to grasp.
* Repetition required to develop this skill is lengthy and arduous
The structures used in programming are not similar to anything in life and require a different kind of thinking (Kelleher & Pausch, 2005). These are the common problems that frustrate the students causing them to give up (Porter & Calder, 2004).
The lecturers' perspective, teaching introductory programming whose concepts are new to students poses the biggest challenge. How to get the students attention so as to captivate their interest when the concepts are new and very different? This implies that not only the fact that students have different learning styles more importantly for new concepts the problem of the students having different background is challenging (Pregitzer & Clements, 2013).
2.3Approach in study
It is well accepted that effective problems engage the students' interest and motivate them to probe for deeper understanding of the concepts being introduced (O'Kelly & Gibson, 2006). The problems attempted to be addressed in this study are sighted in teaching an introductory programming course are too complex syntax, difficulty in debugging, disinterested students, isolated work, confusion when solving problems and implementing the solution using the programming language.
This study uses an approach to teaching introductory programming as a foreign language. First the students are reminded that a language is a form of communication and is made up of syntax and semantics. This will introduce familiar concepts and offer a greater chance of acceptance by the students. In other words, the prerequisite for introductory programming is the student's native language. The aim of this approach is to instigate familiarity in the students so they become comfortable and eager to learn as a result of eliminating the lost feeling. The concepts of a language are illustrated by comparing English language and Programming language thereby offering students the opportunity to appreciate the use and purpose of syntax. Figure 1 below shows some of the concepts that are addressed.
From the table, it can be seen that the idea of a dictionary is used and the students are encouraged to build a programming dictionary with any reserved words that are encountered.
The lecturer speaks normal English in class and the students write the programming language to represent what was said. This is done to build on familiarity and to appreciate the way of communicating to the computer. By writing an English composition, the framework is designed and each point is expanded. In a similar manner, students are encouraged to start and build a simple program that does absolutely nothing. This first program is always the same and it is called an empty shell. The empty shell is a complete program and must be compiled and able to run. It will do nothing. The purpose of the empty shell is to establish accessing the free functions. The empty shell is shown below in Figure 2.
The use of this empty shell is to eliminate syntax errors caused by the free functions. This reduces the probability that a syntax error message is being referred to an incorrect line. Thus, a student can more easily correct the syntax error since the line flagged is usually where the error is.
The satisfaction and encouragement of seeing a compiled and executed basic program so quickly will motivate the students to build more challenging programs. It should be noted that this basic program (empty shell) contains no code within the "main" function. The student is then encouraged to take one part at a time and implement and run each stage. This can only be achieved if the logic of the problem is separated from the implementation, which is the coding.
2.3.1 Problem Solving
Problem solving is a skill and a skill has to be understood and practiced to be mastered. In programming, the problem solving must be familiar concepts, thus, it must be as close to English as possible. Input Processing Output (IPO) is very similar to English. The students collaborate and work out the processing, however, the most important step is the testing. Testing is carried out as if it were the CPU. Figure 3 shows the IPO and testing for a repetition structure. This is the logic for determining the highest mark obtained from a number of students' marks. The mark of -1 was used to signify that no more marks.
2.3.2 Student's Isolation
The problem of student's isolation was addressed in this study in two different ways. The first approach was centered on team spirit building. A problem is discussed, implemented and tested with the entire class using the white board. The students are then asked to implement the solution using the programming language. When a student's program is working properly, he/she is encouraged to assist his/her fellow classmates. The students are told that explaining re-enforces their own knowledge. Additionally, the student receiving assistance is no longer feeling lost and in isolation. The second approach used was to send a weak student on the projector while the class collectively work together in discussing the code. The student at the projector has the important role of implementing by typing the code as well as working in collaboration with the other students.
2.4Implementation
The students were all the same age and the majority (>85%) were male. The IPOs given for assessment were structural, decision and repetition structures. Questions were supplied and the students were required to determine the logic for the problems given. Then, the design for a solution was implemented using the IPO format and lastly, but most importantly, the logic of the solution was tested using 2 types of data. Assessment labs were of the format:
Problem
Data provided to test solution
Respective result for the above data
Four labs were given and each lab was worth 10%. Each lab consisted of 2 problem questions. Lab 1 was based on structural programming with question 1 being a formula to implement and question 2 being a real world problem. Figure 4 shows an example of this.
2.5Result
The results obtained from the labs were very encouraging. It must be noted that the students implemented the solution using the computer. An additional provision is that the students had an option to use an extra 30 minutes for the labs. All the students passed the labs, that is, obtaining more than 50%. Figure 9 shows the number of students for each year since the entire class passed the labs in the 6 consecutive years of teaching introductory programming.
3Conclusions
This study suggests that separating the syntax and the logic in introductory programming may be a contributing factor in decreasing drop outs and improving pass rates. The size of each class was never larger than 30 students so this study was carried out using a relatively small class size. The positive feedback and questions from the students in class and out of class indicates that the students have become more receptive to learning Introduction To Programming.
4References
[1] Beaubouef, T., and Mason, J. 2005. Why the high attrition rate for computer science students: some thoughts and observations. CM SIGCSE Bulletin, 37(2), 103-106.
[2] Daly, T. (2011). Minimizing to maximize: An initial attempt at teaching introductory programming using Alice. Journal of Computer Science in Colleges, 26(5), 23-30.
[3] Gomes, A., Areias, C. M., Henriques, J. & Mendes, A. (2008). Aprendizagem de programa?ao de computadores: dificuldades e ferramentas de suporte. Revista Portuguesa De Pedagogia, 42(2), 161-179.
[4] Jenkins, T. (2002). On the difficulty of learning to program. In Proceedings of 3rd Annual LTSN_ICS Conference, Loughborough University, UK, August 21-29, 53-58. York: The Higher Education Academy
[5] Kaplan, R. (2010). Choosing a first programming language. Proceedings of the 2010 ACM Conference on Information Technology Education, 163-164.
[6] Kelleher, C., & Pausch, R. (2005). Lowering the barriers to programming: A taxonomy of programming environmnet and languages for novice programmers. ACM Computing Surveys, 37 (2), 83-137.
[7] Kunkle, W. and Allen, R. (2016) The Impact of Different Teaching Approaches and Languages on Student Learning of Introductory Programming Concepts, ACM Transactions on Computing Education, 16 (1), 3.
[8] Lahtinen, E., Mutka, K. A. & Jarvinen, H. M. (2005). A study of the difficulties of novice programmers. In Proceedings of the 10th Annual SIGSCE Conference on Innovation and Technology in Computer Science Education (ITICSE 2005), New York: ACM Press, 14-18.
[9] Milne, I., Rowe, G. (2002), Difficulties in Learning and Teaching Programming - Views of Students and Tutors, Education and Information Technologies, 7(1), 55-56.
[10] Nikula, U., Gotel, O., and Kasurinen, J. 2011. A motivation guided holistic rehabilitation of the first programming course. ACM Transactions on Computing Education, 11(4), 24.
[11] TfKelly, J. & Gibson, J. P. (2006). Rob°Code & problem-based learning: a non-prescriptive approach to teaching programming. In Proceedings of the 11th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education, ITICSE ?06. New York: ACM, 2006, 217-221.
[12] Porter, R. & Calder, P. (2004). Patterns in learning to program: an experiment? Proceedings of the Sixth Conference on Australasian Computing Education 30, 241-246.
[13] Robins A., Rountree, J. & Rountree, N. (2003), Learning and Teaching perogramming: A review and Discussion, Computer Science Education;, Vol. 13 (2), 137-172.
[14] Scarpello, G. (2007). Helping Students Get Past Math Anxiety. Techniques: Connecting Education and Careers (J1), 82(6), 34-35.
[15] Schulte, C. & Bennedsen, J. (2006). What do teachers teach in introductory programming? In Proceedings of the Second International Workshop on Computing Education Research, Canterbury, UK, 17-28. ICER '06. New York: ACM.
[16] WiedenbeckS., Labelle D. Kain V N R., (2004). Factors affecting course outcomes in Introductory Programming. Proceedings of the 16th Workshop of Psychology of Programming, 97-109.
[17] Wondimu A., Alexander M., Hans K. & Greetje V.D.W. (2012). Reciprocal relationships between math self-concept and math anxiety. Journal of Elsevier 22, 385-389.
Copyright The Steering Committee of The World Congress in Computer Science, Computer Engineering and Applied Computing (WorldComp) 2018