Juena Ahmed Noshin and Syed Ishteaque Ahmed Abstractthis paper focuses on solving the problems faced buy non-CS major programming students at undergraduate level who are also non-native English language speakers in learning programming language. In this context a nine step approach has been proposed which try to take into notion a lot of problems faced by the non-programmers and counteract them with possible solutions. Following this approach will help lower the problems faced by the non-CS major students to some extent and fulfill their aim in being professional or conversational or end- user programmers according to their career choices. Keywordsteaching non-CS majors undergraduate-level programming non-native English speakers Introduction A lot of focus has been given in teaching programming to CS Major Students. However till now due to a variety of different reasons the same importance is not given to the teaching methodology of non-CS major students. But this tactic has to be changed as even in other disciplines coding has become a necessity. Graduates from other majors specially engineering and business studies have started taking programming seriously as it enhances weight of their resume to potential recruiters.
Now a days in the job market programming language skill is compared equivalent to having English language skill. But it is not always necessary that all programmers will code as most programmers do not write a single line of code in their professional career. Bur they spend a lot of time conversing with developers. This gives rise to the need to understand programming language and have influenced the necessity of employees who are fluent in conversing with programmers. Another class of programmers is the end-user programmers who need to know programming for research or job related work though they are not professional programmers.
From these scenarios it is evident that programming should be given emphasis by even non-CS major students as it will help them take their career to an even more lucrative path after graduation. In this regard more concentrated teaching methodology dedicated to only non-CS major students should be implemented as it has become very important for all students even those who are from non-CS background to have skills in the programming domain. RELATED WORK Various researchers have thought about different techniques in teaching introductory programming courses to CS major students. However, not too much concentration has been given in teaching non-CS major students programming language. To some extent this scenario has started to change since the last decade. This change occurred mainly because of the rise of computer professionals and the necessity to communicate with them in daily basis. Though not many, but some unconventional research work has been done to help beginners learn programming which is discussed here.
Novice coders face a lot of problems when learning a programming language. This is because concepts like variables and loops are new and something that they do not have to think about while solving everyday problems. Moreover trying to maintain grammatical aspects i.e. syntax leads to greater complexity and demotivates beginners. Most of the new students solve coding problems based on trial and error rather than trying to perceive the underlying problem. In 1 it has been found that at an earlier stage of a programmers life concentration should be given not only on coding but also on software engineering concepts like documentation, reusability, coding style etc.
This will benefit the programmers in their professional career. Non- CS last year students at undergraduate level may need software and programming skill to help with their thesis and research work. So what they require is a short and effective course which will help them learn the basics of programming. This is of course not an easy task as it is pretty time consuming even for a CS major to learn programming and it may take them years to get a firm grasp in coding. However, non-CS majors are not granted this luxury of infinite time.
To solve this problem a hybrid approach combining the American and Chinese teaching practices has been adopted in 2 where concentration is given on teaching programming to non-programmers through the use of loops. To make the approach interesting, gaming with loops is introduced along with interactive one error solving problems that help non -programmers grasp the concepts easily. This approach has been quite effective and adopted by a number of reputed institution.
For novice learners generally programming seems difficult irrespective of what major they are from. Almost all popular programming languages are English language based. This deems as an obstacle for non-native English speakers. On one hand there is difficulty in understanding various syntax of programming language. On the other hand, the pressure of understanding English vocabulary is added. Does these two problems combined together enhance the suffering of new learners is the main research question of 3.
To find that out a conceptual model have been proposed that chooses important programming language keywords and ask student if they know the meaning in English context and also programming context. This helps to understand if there is direct correlation between English language efficiency and programming language efficiency. Conventionally programming is taught to students in a grammar first approach. This research 4 focuses on understanding the problem first and considering the grammatical aspect later.
Firstly a program is selected and by studying it in groups students try to enhance their knowledge rather than the teacher describing every aspect in details. The research has proved its efficiency through a four year procedure followed in an reputed institution. This study 5 focuses on teaching methodology of programming language to students from age group 5 to 16 years. Here school teachers have suggested strategies like pair programming, real life examples, algorithm, error tracing and physical activities as effective ways to teach beginners code writing. A new class of programmers is the conversional programmers 6,8. They are non-CS major programmers whose main aim is to be able to understand and communicate in programming language. The major incentive for these new era programmers is the value of this skill in job market.
This conversing skill of potential employees can be compared equivalent to the skill of learning a foreign language to recruiters. This paper 6 deals with the research question Should the non-programmers, conversational programmers and end user programmers be taught programming the same way Moreover from this research it has been concluded that introductory programming courses gave non-CS majors the understandability that coding is not typing but rather solving problems. Understanding this fact has garnered respect for IT professionals in the mind of the non-CS majors which is required as they have to work side by side throughout their professional career. In this research 7 music was incorporated to make programming seem more interesting and exciting to non-CS majors coders. In this regard, a musical learning platform was introduced which helped teach basics of programming like loops, variables etc.
by incorporating music based lab tasks. The approach significantly increased student interest in programming. A lot of programmers now a days do not want to do coding professionally rather they want to learn coding so that they can converse with developers 8. This enhances their marketability to a great extent. However a research question arises that should a new pedagogy be introduced where communication using programming jargon is taught rather than raw coding Most students have a fixed mindset about programming even before starting a course that it is very hard and boring. To get this notion out of their mindset this research 9 uses Alice as an introductory programming language. Alice is a animated language that does not give any syntactical error so the students can focus on the coding concepts rather than grammar.
The advantage of using this sort of language is that students find it interesting and easy. But the disadvantage is that learning languages like Alice is not a marketable skill. Thinking skill and logical understanding of humans can be enhanced through learning of programming languages which have been stated in 10. The concept has been verified through the use of programming language Karel. Though some research work have been done regarding teaching programming at introductory level and many effective approaches have been introduced by teachers and researchers alike, to our knowledge very few researches have been done giving full concentration on teaching programming to non-programmers at undergraduate level majoring in engineering who are non-native English speakers. Our research solely focuses on this problem and works towards finding an appropriate approach to come up with a solution. OUR APPROACH The approach proposed here concentrates on non-CS students who are majoring in engineering taking their first official programming course at undergraduate level.
Only those students who are non-native English speakers are taken into consideration. To help them grasp the topics of programming some steps can be taken. The steps are listed in the following points. Choosing Appropriate Langugae Students as a whole find it difficult to program initially. To solve this deficiency especially for the non-major undergraduate students languages like Alice and Karel can be used. However these languages almost have next to no value in the job field.
So after much consideration C was chosen as an appropriate language for teaching introductory programming to non-major students. Subset of Original Syllabus Since most non-major programmers take introductory coding courses to become conversational programmers it is a better approach to teach them basics rather than involving too much conceptual topics. In this regard a subset of the C syllabus of CS major students is taken as the syllabus for the non-CS major students. This tactic will enhance non-CS majors coding skill and gave some sorts of equilibrium with the CS students in their knowledge level. Kinesthetic Learning From previous studies it is evident that physical hands-on training really helps students learn. This approach has already been tried at middle school level however we have tried to incorporate kinesthetic learning in undergraduate level also. It is evident that visual aids help student learn. For example topics like loops can be taught involving student volunteers who physically demonstrate their usage with ropes.
Vocabulary Workshop For this research only non-native English language speakers have been considered. It is a challenge in itself for a non-native English speaker to understand English properly. To add the dynamic of a logical language adds to the trivia. So it becomes near to impossible for new learners to grasp on the subject matter of programming language easily. To help this agenda a vocabulary workshop can be held to help to clear the English meaning of the C language keywords along with the meaning of the keyword in the programming context. This will help the students grasp the subject matter easily. Problem Description A practice that is evident in students is that programming is just typing.
So whenever they are given a task they start typing the syntax without further thinking. This practice should be strictly opposed from the beginning. Students shall be taught to first think and then start to code.
In this regard the teachers will first discuss about the problem in detail and how solving it through programming will decrease human work load in the long run. This will motivate the students and also help them understand coding better. Contextual Tasks There is no alternative to solving lab exercises to understand the C topics better. However if lab tasks are given based on the major of the students they find more enthusiasm in solving the problems. For example if EEE majors are given exercises based on circuits then its more related to their subject matter hence they find it more interesting and easier to solve. This approach will help the students clarify that programming is needed in every field.
Pair Programming Usually software engineering concepts are introduced much later on in a CS majors life i.e. usually on the third year. However in this approach pair programming which is a concept of software engineering is introduced at introductory level as it will help students learn from each other. It will also develop the habit of conversing in programming jargon which most non-CS majors aim to do in their job life. Learning to Troubleshoot To understand a programming language deeply it is not enough to just learn how to code.
A student must also learn to find errors in an existing code know the output from seeing a given code without using compilers, even be able to finish an incomplete code if given. These practices will help them gain a deeper understanding of C language which will help them become better programmers later on in life. Internal Documentation From the very beginning of their programming education students should learn to put comments on their code. This approach will help them understand the code they have written even better and also help them in reusing the codes in future assignments. Moreover, internal documentation i.e. commenting helps other students understand the code which in turn aids in pair programming.
The steps mentioned above if followed properly will ensure that a novice programmer gain enough knowledge to survive in the ever evolving industry which now considers programming language as a competitive skill near equivalent to speaking in English fluently. CONCLUSION In this modern era it is considered a top notch skill to be able to understand and converse in programming language. However, for non-CS majors it is not a very easy task to acquire this skill. To help these non-CS major introductory students some steps have been proposed in this paper which will aid them with overall learning process and in turn will help the students become great conversers and programmers in their professional careers.. REFERENCES Biswajit Saha and Utpal Kumar Ray, Learning Programming An Indian Perspective, ArXiv, 2015 Retrieved from HYPERLINK https//arxiv.
08712.pdf Zhen Jiang, Eduardo B. Fernandez and Liang Cheng, A Pedagogical Pattern for Teaching Computer Programming to Non-CS Majors, Proceedings of the 18th Conference on Pattern Languages of Programs, 2011. Retrieved from HYPERLINK http//www.hillside.net/plop/2011/papers/E-22-Jiang.pdf http//www.
hillside.net/plop/2011/papers/E-22-Jiang.pdf Ashok Kumar Veerasamyand Anna Shillabeer, Teaching English Based Programming Courses to English Language Learners/Non-Native Speakers of English, International conference on Education and Management Innovation, 2014.
Retrieved from HYPERLINK https//www.researchgate.net/publication/304024941_Teaching_English_based_programming_courses_to_English_learnersnon-native_speakers_of_English https//www.
researchgate.net/publication/304024941_Teaching_English_based_programming_courses_to_English_learnersnon-native_speakers_of_English Rongfang Gao, Reforming to Improve the Teaching Quality of Computer Programming Language, ICCSE,2011. Retrieved from HYPERLINK https//academic.microsoft.com//detail/2162193683FORMDACADP https//academic.
microsoft.com//detail/2162193683FORMDACADP Sue Sentence and Andrew Csizmadia,Teachers perspectives on successful strategies for teaching Computing in school, IFIP TC3,2015. Retrieved from HYPERLINK https//www.researchgate.net/publication/301525438_Teachers27_perspectives_on_successful_strategies_for_teaching_Computing_in_school https//www.researchgate.net/publication/301525438_Teachers27_perspectives_on_successful_strategies_for_teaching_Computing_in_school Parmit K.
Chilana, Celena Alcock, Shruti Dembla, Anson Ho, Ada Hurst, Brett Armstrong, and Philip J. Gu, Perceptions ofNon-CS Majors in Intro Programming The Rise of the Conversational Programmer, IEEE Symposium on Visual Languages and Human-Centric Computing, 2015. Retrieved from HYPERLINK http//ieeexplore.
ieee.org/document/7357224/ http//ieeexplore.ieee.org/document/7357224/ Tacksoo Im, Sebastien Siva, Jason Freeman, Brian Magerko, Greg Hendler, Shelly Engelman, Morgan Miller, Brandi Villa and Tom McKlin, Incorporating music into an introductory college level programming course for non-majors, IEEE Integrated STEM Conference, 2017. Retrieved from HYPERLINK https//www.
researchgate.net/publication/316530770_Incorporating_music_into_an_introductory_college_level_programming_course_for_non-majors https//www.researchgate.net/publication/316530770_Incorporating_music_into_an_introductory_college_level_programming_course_for_non-majors Parmit K.
Chilana, Rishabh Singh and Philip J. Guo, Understanding Conversational Programmers A Perspective from the Software Industry, Conference on Human-Computer Interaction, 2016. Retrieved from HYPERLINK https//www.microsoft.
com/en-us/research/publication/understanding-conversational-programmers-a-perspective-from-the-software-industry/ https//www.microsoft.com/en-us/research/publication/understanding-conversational-programmers-a-perspective-from-the-software-industry/ Azad Ali and David Smith, Teaching an Introductory Programming Language in a General Education Course, Journal of Information Technology Education Innovations in Practice, 2014. Retrieved from HYPERLINK https//eric.ed.
gov/idEJ1084462 https//eric.ed.gov/idEJ1084462 Dennis R. Goldenson, Why Teach Computer ProgrammingSome Evidence About Generalization and Transfer, National Educational Computing Conference, 1996. Retrieved from HYPERLINK https//eric.ed.gov/idED398886 https//eric.ed.gov/idED398886 PAGE MERGEFORMAT 4 Y, dXiJ(x(I_TS1EZBmU/xYy5g/GMGeD3Vqq8K)fw9xrxwrTZaGy8IjbRcXIu3KGnD1NIBsRuKV.ELM2fiVvlu8zH(W uV4(Tn7_m-UBww_8(/0hFL)7iAs),Qg20ppf DU4pMDBJlC52FhsFYn3E6945Z5k8Fmw-dznZxJZp/P,)KQk5qpN8KGbe Sd17 paSR 6Q