Sunday, March 21, 2021

Belajar HTML #Mengenal HTML

Daftar Isi : [Tampil]

HyperText Markup Language (HTML) adalah singkatan dari Hypertext Markup Language. HTML memungkinkan seorang user untuk membuat dan menyusun bagian paragraf, heading, link atau tautan, dan blockquote untuk halaman web dan aplikasi. Dokumen HTML mirip dengan dokumen tulisan biasa, hanya dalam dokumen ini sebuah tulisan bisa memuat instruksi yang ditandai dengan kode atau lebih dikenal dengan TAG tertentu.Elemen HTML dibedakan dari teks lain dalam dokumen dengan "tags", yang terdiri dari nama elemen yang dikelilingi oleh "<" dan ">".

Cara Penulisan Standar HTML


  <!-- Contoh Penulisan HTML -->
  <!DOCTYPE HTML>
  <head>
  <title></title>
  </head>
  <body>
  </body>
  

Keterangan

  • "<!--" "-->" : Tulisan yang berada di antara TAG tersebut akan di anggap sebagai komentar/tidak akan dibaca oleh mesin.
  • "<head>" "</head>" : Tulisan yang berada di antara TAG tersebut berada di TAB browser yang kita gunakan.
  • "<title>" "</title>" : Untuk menulis judul di TAB Browser.
  • "<body>" "</body>" : Tulisan yang berada di antara TAG tersebut akan menjadi isi dari halaman yang kita tulis.

Terimakasih ...

Share:

Tuesday, March 16, 2021

Makalah Tugas Kelompok Bahasa Inggris

Daftar Isi : [Tampil]

The Effects of Web 2.0 Technologies Usage in Programming Languages Lesson on the Academic Success, Interrogative Learning Skills and Attitudes of Students towards Programming Languages

1. Introduction

Changes consistently occur in communities due to environmental factors. Within this process, communities which do not comply with technological developments fall behind the developing world and cannot contribute to their social development (Gokçearslan $ Bayir, 2011). Communities need to comply with technological developments. It is easy for communities adapting to technological changes to find their places among developed communities (Akkoyunlu et al., 2010). Particular developments are being experienced also in computational fields as well as in other fields of technology. Occurring developments create a particular effect on communities’ lives. These developments also lead to changes in learning and teaching processes. Therefore the adaptation of learning individuals to technological developments and their raising as individuals accessing information easily with the help of technology are very important (Seferoglu, 2009). Technology has been being used in educational environments since 19th century (Ritz $ Martin, 2013). Technology use in communities enable students the opportunities of developing their skills with different activities and of creating products they develop in different ways in order to increase their self-confidence. Moreover students have the chance to control their products again with the help of technology (Autio et al., 2015). Positive attitudes of instructors as well as students towards technology are important in terms of affecting students’ attitudes in positive way (Rohaan et al.,2012). Changes occur also in educational technologies according to the needs of communities (Goktas et al., 2012). Erdogmus and Cagiltay (2009) define educational technologies as the usage of technology which emerges with facts created by behavioral and physical sciences in educational environments in order to increase learning environments’ productiveness. Within the time we live in, communities need to place enough importance on education in order to lead a comfortable life and to not fall behind the world. Therefore individuals who catch on technological improvements quicker and who are used to life-long learning should be raised (Akpinar et al., 2005).

Today, individuals have the opportunity to realize their learning easily with interacting with themselves without time and place limitations thanks to developments experienced in information and communication technologies (Genc, 2010). In 2003, O’Reilly Media put forward a new term named “Web 2.0” which enables the easier sharing of information on internet. All internet users take advantage of the opportunities of producing information and developing the existing information with the help of Web 2.0 technologies. Also contents they produce can be shared more easily by other users (Karaman, Yildirim, $ Kaban, 2008). Applications which operate depending on internet show increase and with this increase, online learning concept has been occurred (Yılmaz et al., 2005). Owing to online learning technologies, learning process is realized more rapidly and productively with the opportunity of studying without time and place limitations of individuals. Additionally, individuals have the opportunity to access information they desire without the help of anyone else (Mutlu et al., 2005).

Clements and Gullo (1984) reached to the conclusion that computer programming increases problem solving skills in their study related to computer programming. The fact that individuals are not interested in programming languages causes their consideration of programming as boring and difficult (Genc $ Karakus, 2011). Several problems are faced in terms of the way of teaching in programming languages lessons, programming languages to be taught and learners. One of the biggest problems which individuals newly learning programming languages face is that programming languages have a complex structure (Catlak et al., 2015). Computers have a big place in our lives now. Individuals have the opportunity to solve problems they face in their daily lives with computer software products developed for this purpose. This reveals the importance of computer software products. This reveals the conclusion that individuals receiving education in the field of programming need to receive good quality education in order to develop the mentioned software products (Perry, 2009).

One of the instruction applications of constructivist learning is interrogative learning. Directing questions to individuals in the learning process is important in terms of community’s possession of thinking individuals. Primarily, questions are posed in learning based on interrogation. Afterwards, solutions to these questions are produced. A result is reached by collecting relative information regarding the posed question. Lastly the individuals analyse the process. In constructivist learning process, besides their interrogation skills, also research skills of individuals develop and their interest in learning increase (Akinoglu, 2004). Interrogative learning strategy is one of the most efficient learning strategies instructors use primarily (Cotton, 1989). Interrogative learning is defined as a strategy type in which students learn information they gain depending only on instructors, books, experiments and activities they perform in a way different than traditional methods in the literature. The main goal of interrogative learning is the realization of learning in which students interrogate the information they encounter from childhood to adulthood (Celik et al., 2005). Just as in cooperative learning methods, students produce ideas by studying as groups also in interrogative learning method. They structure the new information they gain by sharing the results they found as a result of idea generation process with other group members in their minds (Taskoyan, 2008).

When analysing researches regarding Web 2.0 technologies:

Karaman, Yildirim and Kaban (2008) concluded in their studies named “Learning 2.0 Becomes Widespread: Researches Regarding The Usage of Web 2.0 Applications in Education and Their Results” that Web 2.0 applications support learning, create an appropriate environment for group works and serve to develop high-level thinking skills.

80 computer teacher candidates receiving education in the faculty of education of a state-owned university are reached in a study by Korucu and Cakir (2014) named “Opinions of Computer Teacher Candidates Towards Dynamic Web Technologies” and it is determined that a big majority of computer teacher candidates use dynamic web technologies for communication, sharing and social purposes. Moreover, it is also determined in the study that they do not use dynamic web technologies for educational purposes. Besides, they suggest that teacher candidates should be taught regarding technology use and a lesson regarding how to use cooperative

When analysing studies regarding programming languages:

Ozyurt and Ozyurt (2015) have reached to 325 students receiving education in Computer Technologies Department in their studies named “A Study Regarding the Determination of Attitudes of Computer Programming Students towards Programming and Their Programming Self-Efficacies”. Data obtained in the study were analysed with Mann Whitney U-test, Kruskal-Wallis test and Spearman Brown’s rank correlation coefficient. According to the results obtained in the research, attitudes of students towards programming showed up as positive and their programming self-efficacies are at medium-level. It is determined that there are meaningful differences in terms of sexes, class levels and education types of students towards programming. Besides, it is revealed that there is a positive and medium-level correlation between the attitudes and self-efficacies of students towards programming. They suggest that activities which enable the development of problem-solving and critical thinking skills should be performed in programming lessons in order to fertilize this positive attitude even more.

Lau and Yuen (2008) reached to 217 secondary students between the ages of 14 and 19 in their studies named “Exploring the Effects of Gender and Learning Styles on Computer Programming Performance: Implications for Programming Pedagogy”. The effects of sex and learning styles on computer programming are sought in the study. As a result of the study, they concluded that academic skills have a different effect on programming knowledge and that sequent students show better performance in general when compared to randomly selected students.

As a result of their studies named “The Beliefs of Electrical and Computer Engineering Students’ Regarding Computer Programming”, Anastasiadou and Karakos (2011) suggested that positive attitude development of students towards computer programming reflects positively on the professional lives of students and that factors causing negations in students should be eliminated.

1.1 Goal and Importance of the Research

Computers play a big role in our lives now. Software products developed for computers are increasing day by day. In order to show ourselves as a country in the field of software and to raise individuals capable of coding, programming lessons given in universities should be productive. This study is considered to be able to contribute to the productive delivery of programming lessons. Programming languages is a lesson in which applied works can be more successful rather than theoretical studies. Additionally, the product which will be produced as a result of group work will probably be more successful than that of individual work. This study is important because students interact with each other more easily in their studies owing to Web 2.0 technologies. Due to widespread usage of Web 2.0 technologies, it is estimated that these technologies can be easily integrated into programming lessons and this study is important because it can create positive effect on students’ attitudes towards the lesson.

It is obvious that academic success in programming lessons is low in general. As a result of this lowness, decreases are experienced in motivation of the students. Therefore they usually fail in learning process (Jenkins, 2002). The goal of this study is to analyse the effect of Web 2.0 technologies usage in programming lesson on students’ attitudes towards programming languages, academic success and interrogative learning skills.

Within this framework, research questions directing this study are as the following:

  • Is there a meaningful difference between the “academic success” of students using cooperative learning environment developed by Web 2.0 technologies and of those not using cooperative learning environments?
  • Is there a meaningful difference between the “attitudes towards programming languages” of students using cooperative learning environment developed by Web 2.0 technologies and of those not using cooperative learning environments?
  • Is there a meaningful difference between the “interrogative learning skills” of students using cooperative learning environment developed by Web 2.0 technologies and of those not using cooperative learning environments?

2. Conceptual Framework

2.1 Constructivist Learning

According to Constructivism, individuals are restructuring old knowledge with new knowledge. The constructivist approach is not like traditional teaching methods, but an approach in which the student is active. Individual characteristics and learning environment are important in organizing information, which is structured by individuals according to their own information and that individuals acquire information in different forms (Ozmen, 2004). In the constructivist learning approach, learning by discovering and learning information is an important part of individuals. Individuals need to make efforts to solve these problems in the face of problems they encounter (Yasar, 1998).

2.2 Cooperative Learning

There are many definitions in the literature about cooperative learning. When these definitions are examined; Collaborative learning is defined as the process by which individuals with different abilities, genders and abilities are grouped in the direction of a determined common goal, and by continuing to work cooperatively in these groups (Holm et al., 1987).

2.3 Web 2.0

It is a second generation web-based web services announced by O’Reilly Media in 2004, such as social networking sites, virtual webmasters, and tools for online communication. Web 2.0 is defined as the new generation of new technologies that meet the needs of individuals as well as their needs on the web (Sendag, 2008). Web 2.0 technologies include Youtube, Delicious, MySpace, Facebook, Second Life, Library Thing, Ning, Flickr, Twitter, Meebo, etc. (Peltier-Davis, 2009).

2.4 Delphi Programming Language

It is based on the built-in Pascal programming language (Akpinar, 2008). It is a completely visual programming language. Because of the widespread use of Pascal training, many students prefer the Delphi programming language (Alabay, 2001).

3. method

3.1 Research Group

The work group chosen from the population for this study consists of N=75 computer teacher candidates in total from two branches (2B, experimental group-N=40 and 2A, control group-N=35) receiving education in the 2nd grade of Computer and Instructional Technologies Teaching Department of Faculty of Ahmet Kelesoglu, Necmettin Erbakan University in 2015-2016 academic year. Table 1 demonstrates the sex status of the work group.

Table 1. Sex distribution of work group

Sex Experimental Group Control Group Experimental & Control Group
f % f % f %
Male 22 55,0 19 54,3 41 54,7
Female 18 45,0 16 45,7 34 45,3
Total 40 100,0 35 100,0 75 100,0

3.2 Research Model

Quantitative research model is adopted in this study as research model and “Pre-test-Post-test Control Group Quasi-Experimental Design Model” is used (Campbell & Stanley, 1966). In studies where pre-test-post-test control group experimental design is used; academic works are applied with the measurement of the experimental subject in terms of the dependent variable both before and after the research application. Besides, in cases where all variables can’t be controlled (Cohen et al., 2013) and particularly in studies performed in education technology field, it is the most frequently used design by researchers (Kılıc-Cakmak et al., 2013). Participants are divided into two groups as experimental and control group in the research (Karasar, 1999). These groups are formed randomly. The effect of the experimental operation on different variables is analysed by applying data collection tools to both groups before and after the application. In other words, measurements are realized in both groups in the same way before and after the experiment (Buyukozturk et al., 2012).

The independent variables of the research are; learning method supported by face to face and cooperative learning method supported by face to face and with Web 2.0 technologies. The dependent variables of the research are: academic success, attitude towards programming languages and interrogative learning skill. Experimental design used in this research is shown on Table 2.

Table 2. Quasi-experimental design table regarding the research model

Groups Pre-test Method Post-test
GD O1 XİÖ O2
GK O2 XYYÖ O2

GD=Experimental group
GK=Control group
XİÖ=Learning method supported by Web 2.0 technologies
XYYÖ=Face to face learning method
O1=Experimental and Control group pre-test application
O2=Experimental and Control group post-test application

3.3 Data Collection Tools

“Academic Success Test” developed by researcher in order to determine academic success of students, “Attitude Towards Programming Languages Scale” which is translated into Turkish by Durak (2013) and “Interrogative Skills Scale” developed by Aldan, Kandemir and Saracoglu (2013) are used as data collection tools in the study. A table of specifications related to achievements is prepared while preparing Academic Success Test and each achievement consists at least of 2 questions. “Attitude towards Programming Languages Scale” is developed as “Attitude towards Mathematics Scale” by Tapia and Marsh in 2014. Cronbach Alfa credibility coefficient of the scale is found as 0,97. As a further stage, Durak (2013) translated the scale which is adapted towards Programming Languages into Turkish. Durak (2013) evaluated the scale in terms of language and meaning unity in the direction of Turkish and foreign language experts’ opinions. The Turkish form of the scale is completed in the direction of received opinions by performing the necessary arrangements. As its current situation, the scale is named as “Attitude towards Programming Languages Scale”. The scale consists of 4 factors, 40 articles and 5 point likert type in total. The Cronbach Alfa credibility coefficient of the scale is found as 0,93. “Interrogative Skills Scale” is developed by Aldan, Karademir and Saracoglu in 2013. Interrogative Skills Scale consists of 3 factors, 14 articles and 5 point likert type, 3 factor structure is obtained and each factor is named respectively as “Knowledge Acquisition”, “Controlling Knowledge” and Self-confidence” in the accordance with theoretical framework. Cronbach-alpha value related to each factor in the scale and to the entirety of the scale is calculated. Cronbach-alpha credibility coefficients are; .76 for “Knowledge Acquisition”, .66 for “Controlling Knowledge”, .82 for “Self-confidence” and .82 for the entirety of the scale.

3.4 Analysis of Data

SPSS 21 (Statistical Package for Social Sciences) version program is used for the analysis of data obtained during the research. T-test for related samples is used for the comparison of data obtained from pre-test applied to students before the research and from post-test applied to students after the research. T-test for unrelated samples can be used for testing whether the difference between two unrelated sample averages is meaningful or not (Buyukozturk, 2011).

4. Findings and Interpretations

4.1 Findings Regarding Academic Success

4.1.1 Research Question 1

Is there a meaningful difference between the “academic success” of students using cooperative learning environment developed by Web 2.0 technologies and of those not using cooperative learning environments?

4.1.1.1 Experimental Group Pre-Test-Post-Test Comparison (Paired T Test)

Comparison results of pre-tests and post-tests realized to determine the academic development status of experimental group students at the end of application are shown in Table 3.

Experimental
Group
Test N Ss Sd t P
Pre-test 40 59,05 15,09 39 24,733 .000
Post-test 40 85,87 10,10

*p<0.05.

A difference is observed between the pre-test grades and post-test grades of experimental group (pre-test average is =59,05; post-test average is =85,87) statistically for *p<.05 relevance level (p<0.05). It is determined that experimental group students increased their academic success as a result of cooperative application supported by Web 2.0 technologies (Table 3).

4.1.1.2 Control Group Pre-Test-Post-Test Comparison (Paired T Test)

Comparison results of pre-tests and post-tests realized to determine the academic development status of control group students at the end of application are shown in Table 4.

Table 4. Comparison results of pre-test-post-test of control group

Control
Group
Test N Ss Sd t P
Pre-test 35 55,22 14,77 34 22,108 .000
Post-test 35 78,48 10,93

*p<0.05.

A difference is observed between the pre-test grades and post-test grades of control group (pre-test average is =55,22; post-test average is =78,48) statistically for *p<.05 relevance level (p<0.05). It is determined that there is a meaningful difference in their academic success as a result of application (Table 4).

4.1.1.3 Experimental-Control Group Post-Tests Comparison (Independent T Test)

When compared the “Academic Success” of students used cooperative learning environment (experimental group) and of students who didn’t used cooperative learning environment (control group), the results are shown on Table 5.

Table 5. Inter-groups (experimental and control) post-test comparison (t-test) results

Groups N S Sd t P
Post-test Experimental Group 40 85,87 10,10 73 3,040 .003
Control Group 35 78,487 10,93

*p<0.05.

The result is .00<.05 thus is meaningful for *p<.05 relevance level in post-tests performed on experimental and control groups after application. It is determined that post-test grades of experimental group are higher than those of control group in post-tests performed (experimental group post-test average is =85,87; control group post-test average is =78,487) (Table 5). This result demonstrates that the realized application is in favour of the experimental group. Besides, eta-squared value is calculated in order to determine the magnitude of the effect of cooperative learning environment designed with Web 2.0 technologies on academic success. Effect magnitude values are calculated as η2=.112. In these circumstances, when considering the effect magnitude value (η2=0.112), it can be stated that cooperative learning environment designed by Web 2.0 technologies has a “broad” effect magnitude on academic success.

4.2 Findings Regarding the Attitude towards Programming Languages

4.2.1 Research Question 2

Is there a meaningful difference between the “attitudes towards programming languages” of students using cooperative learning environment developed by Web 2.0 technologies and of those not using cooperative learning environments?

4.2.1.1 Experimental-Control Group Post-Tests Comparison (Independent T-Test)

When compared the “Attitudes Towards Programming languages” of students used cooperative learning environment developed by Web 2.0 technologies (experimental group) and of students who didn’t used cooperative learning environment (control group), the results are shown on Table 6.

Table 6. Inter-groups post-test comparison results

Groups N S Sd t P
Post-test Experimental Group 40 150,10 18,53 73 3,040 .000
Control Group 35 134,42 14,95

*p<0.05.

The result is .00<.05 thus is meaningful for *p<.05 relevance level in post-tests performed on experimental and control groups after application. It is determined that post-test grades of experimental group are higher than those of control group in post-tests performed (experimental group post-test average is =150,10; control group posttest average is =134,42) (Table 6). This result demonstrates that the realized application is in favour of the experimental group. Besides, eta-squared value is calculated in order to determine the magnitude of the effect of cooperative learning environment designed with Web 2.0 technologies on attitudes towards programming languages. Effect magnitude values are calculated as η2=.179. In these circumstances, when considering the effect magnitude value (η2=0.179), it can be stated that cooperative learning environment designed by Web 2.0 technologies has a “broad” effect magnitude on attitudes towards programming languages.

4.3 Findings Regarding Interrogative Learning Skills

4.3.1 Research Question 3

Is there a meaningful difference between the “interrogative learning skills” of students using cooperative learning environment developed by Web 2.0 technologies and of those not using cooperative learning environments?

4.3.1.1 Experimental-Control Group Post-Tests Comparison (Independent T-Test)

When compared the “Interrogative learning skills” of students used cooperative learning environment developed by Web 2.0 technologies (experimental group) and of students who didn’t used cooperative learning environment (control group), the results are shown on Table 7.

Table 7. Inter-groups post-test comparison results

Groups N S Sd t P
Post-test Experimental Group 40 39,40 14,68 73 2,638 .010
Control Group 35 30,77 13,46

*p<0.05.

The result is .00 <.05 thus is meaningful for *p<.05 relevance level in post-tests performed on experimental and control groups after application. It is determined that post-test grades of experimental group are higher than those of control group in post-tests performed (experimental group post-test average is =39,40; control group posttest average is =30,77) (Table 7). This result demonstrates that the realized application is in favour of the experimental group. Besides, eta-squared value is calculated in order to determine the magnitude of the effect of cooperative learning environment designed with Web 2.0 technologies on interrogative learning skills. Effect magnitude values are calculated as η2=.087. In these circumstances, when considering the effect magnitude value (η2=0.087), it can be stated that cooperative learning environment designed by Web 2.0 technologies has a “medium” effect magnitude on interrogative learning skills.

5. Discussion and Conclusion

This study aims the easy and efficient understanding of programming languages by students and the provision of increase of its permanence with new methods rather than traditional methods. In accordance with this goal, control group students are requested to perform programming languages lesson with traditional methods for 1 semester and experimental group students are requested to perform programming languages lesson with new technologies for 1 semester and to complete a project they determine in groups by using new technologies.

Web 2.0 technologies play an efficient role in the process of information accession (Kitsantas et al., 2016). It is observed that Web 2.0 technologies earn cooperative working habits, increase the quality of learning, earn high-level thinking skills, help constructivist learning, provide positive effect on individual development and provide individuals to take responsibilities in educational environments (Karaman et al., 2008). Within this context, a difference is observed between the pre-test grades and post-test grades of experimental group (pre-test average is =59,05; post-test average is =85,87) statistically for *p<.05 relevance level (p<0.05) as a result of comparison of pre-tests and post-tests performed in order to determine the effect of Web 2.0 technologies on academic success. It is determined that experimental group students increased their academic success as a result of cooperative application supported by Web 2.0 technologies. Ekici and Kiyici (2012) also observed that academic success of students using Web 2.0 technologies is higher than those of students receiving traditional education. It is stated that the quality of education can be increased by integrating Web 2.0 technologies into learning processes of students (Karaman, Ekici, & Akgun, 2011). There is a positive correlation between social networks within the Web 2.0 technologies and face-to-face communication (Jacobsen & Forste, 2011). Usage of information and communication technologies in educational environments contributes positively to increasing educational efficiency and to constructivist learning (Venkateshvd, 2016). AlJeraisy, Mohammad, Fayyoumi and Alrashideh (2015) state that academic success of students increased and students react to these technologies positively as a result of Web 2.0 technologies usage in educational environments. In line with this, a difference is observed between the pre-test grades and post-test grades of control group (pre-test average is =55,22; post-test average is =78,48) statistically for *p<.05 relevance level (p<0.05) as a result of comparison of pre-tests and post-tests performed in order to determine the status of academic success of control group students. It is determined that there is a meaningful difference in their academic success as a result of application.

When compared the “Academic Success” of students used cooperative learning environment (experimental group) and of students who didn’t used cooperative learning environment (control group), the result is .00<.05 thus is meaningful for *p<.05 relevance level in post-tests performed on experimental and control groups after application. It is determined that post-test grades of experimental group are higher than those of control group in post-tests performed. This result demonstrates that the realized application is in favour of the experimental group. Besides, eta-squared value is calculated in order to determine the magnitude of the effect of cooperative learning environment designed with Web 2.0 technologies on academic success. Effect magnitude values are calculated as η2=.112. In these circumstances, when considering the effect magnitude value (η2=0.112), it can be stated that cooperative learning environment designed by Web 2.0 technologies has a “broad” effect magnitude on academic success.

Several problems are faced in terms of the way of teaching in programming languages lessons, programming languages to be taught and learners. One of the biggest problems which individuals newly learning programming languages face is that programming languages have a complex structure (Catlak et al., 2015). When compared the “Attitudes Towards Programming languages” of students used cooperative learning environment developed by Web 2.0 technologies (experimental group) and of students who didn’t used cooperative learning environment (control group), the result is .00<.05 thus is meaningful for *p<.05 relevance level in post-tests performed on experimental and control groups after application. It is determined that post-test grades of experimental group are higher than those of control group in post-tests performed. This result demonstrates that the realized application is in favour of the experimental group. Besides, eta-squared value is calculated in order to determine the magnitude of the effect of cooperative learning environment designed with Web 2.0 technologies on attitudes towards programming languages. Effect magnitude values are calculated as η2=.179. In these circumstances, when considering the effect magnitude value (η2=0.179), it can be stated that cooperative learning environment designed by Web 2.0 technologies has a “broad” effect magnitude on attitudes towards programming languages. There are a number of applications which are able to facilitate this process and to maximize the learning in programming education. With these applications, individuals are able to comprehend how to write software more easily and to determine mistakes they do (Kert & Ugras, 2009).

In accordance with constructivist approach, the minds of individuals in educational environments are defined as empty plates and this provides individuals learning according to their lives. Ausbel argues that what is important in educational environments is that the learning should be meaningful (Ozmen, 2004). Interrogative learning is defined as a strategy type in which students learn information they gain depending only on instructors, books, experiments and activities they perform in a way different than traditional methods. The main goal of interrogative learning is the realization of learning in which students interrogate the information they encounter from childhood to adulthood (Celik et al., 2005). When compared the “interrogative learning skills” of students used cooperative learning environment developed by Web 2.0 technologies (experimental group) and of students who didn’t used cooperative learning environment (control group), as the result of the research, the realized application is in favour of the experimental group. Besides, eta-squared value is calculated in order to determine the magnitude of the effect of cooperative learning environment designed with Web 2.0 technologies on interrogative learning skills. Effect magnitude values are calculated as η2=.087. In these circumstances, when considering the effect magnitude value (η2=0.087), it can be stated that cooperative learning environment designed by Web 2.0 technologies has a “medium” effect magnitude on interrogative learning skills

It is obvious in the conclusion of the research that the usage of Web 2.0 technologies in programming languages lesson contributes to a more efficient learning of programming languages by students and to the learning of programming knowledge permanently and meaningfully by students. Moreover, the usage of Web 2.0 technologies in educational environments increases the quality of the education (Tuzun, 2007).

References

Akinoglu, O. (2004). Constructivist learning and geography teaching. Marmara Geographical Review, 10,73-94.
Akkoyunlu, B., Soylu, M. Y., & Caglar, M. (2010). A study on developing “digital empowerment scale” for university students. Hacettepe University Journal of Education, 39, 10-19.
Akpinar, A. G. E., Aktamis, A. G. H., & Ergin, O. (2005). Students’ opinions regarding the use of educational technology in science lessons. The Turkish Online Journal of Educational Technology, 4(1), 93-100.
Alabay, M. N. (2001). Delphi’ye Giriş. Ankara: Gazi Academic Publishing.
AlJeraisy, M. N., Mohammad, H., Fayyoumi, A., & Alrashideh, W. (2015). Web 2.0 in education: The impact of discussion board on student performance and satisfaction. TOJET: The Turkish Online Journal of Educational Technology, 14(2), 247-259.
Anastasiadou, S. D., & Karakos, A. S. (2011). The beliefs of electrical and computer engineering students’ regarding computer programming. International Journal of Technology, Knowledge & Society, 7(1), 37-51. https://doi.org/10.18848/1832-3669/CGP/v07i01/56170
Autio, O., Soobik, M., Thorsteinsson, G., & Olafsson, B. (2015). The development of craft and technology education curriculums and students’ attitudes towards technology in Finland, Estonia and Iceland. International Journal of Contemporary Educational Research, 2(1), 22-34.
Buyukozturk, S. (2011). Sosyal Bilimler İçin Veri Analizi El Kitabı. Ankara: Pegem Academy Publishing. Catlak, S., Tekdal, M., & Baz, F. T. (2015). The status of teaching programming with scratch: A document review work. Journal of Instructional Technologies & Teacher Education, 4(3), 13-25.
Celik, S., Senocak, E., Bayrakceken, S., Taskesenligil, Y., & Doymus, K. (2005). A review study on active learning strategies. Ataturk University Journal of Kazım Karabekir Education Faculty, 11(1), 155-185.
Clements, D. H., & Gullo, D. F. (1984). Effects of computer programming on young children’s cognition. Journal of Educational Psychology, 76(6), 1051-1058. https://doi.org/10.1037/0022-0663.76.6.1051
Cotton, K. (1989). Classroom questioning Close-up No. 5. Portland, OR: Northwest Regional Educational Laboratory.
Durak, G. (2013). The online teaching of programming languages: Examining learner’s attitudes, satisfaction and success (Published PhD thesis). Anadolu University Graduate School of Social Sciences, Eskisehir,Turkey.
Ekici, M., & Kiyici, M. (2012). Using social networks in educational context. Usak University Journal of Social Sciences, 5(2), 156-167.
Erdogmus, F. U., & Cagiltay, K. (2009, February). General trends in master and doctoral dissertations in the field of educational technology in Turkey. XI. Academic Computing Conferences, Sanliurfa. Retrieved from https://goo.gl/2WDP9B
Genc, Z., & Karakus, S. (2011, September). Learning through design: Using scratch in instructional computer games design. In 5th International Computer & Instructional Technologies Symposium. Elazig. Retrieved from http://dspace.beu.edu.tr:8080/xmlui/handle/123456789/451
Genç, Z. (2010, February). Use of web 2.0 advancements in education: A case study of facebook in education. Academic Computing Conferences, Muğla. Retrieved from https://goo.gl/gAZVlz
Gokcearslan, S., & Bayir, E. A. (2011, April). Examination of numerical competence levels of teacher candidates. In 2nd International Conference on New Trends in Education and Their Implications. Antalya. Retrieved from http://www.iconte.org/FileUpload/ks59689/File/200.pdf
Goktas, Y., Kucuk, S., Aydemir, M., Telli, E., Arpacık, O., Yildirim, G., & Reisoglu, I. (2012). Educational technology research trends in turkey: A content analysis of the 2000-2009 decade. Educational Sciences: Theory & Practice, 12(1), 177-199.
Holm, A., Schultz, D., Winget, P., & Wurzbach, L. (1987). Cooperative Activities for the Home: Parents Working with Teachers to Support Cooperative Learning. Califomia State Department of Education, Sacramento.
Jacobsen, W. C., & Forste, R. (2011). The wired generation: Academic and social outcomes of electronic media use among university students. Cyberpsychology, Behavior, and Social Networking, 14(5), 275-280. https://doi.org/10.1089/cyber.2010.0135
Karademir, Ç. A., & Saracaloglu, A. S. (2013). The development of inquiry skills scale: Reliability and validity study. Asian Journal of Instruction, 1(2), 56-65.
Karaman, K., Ekici, M., & Akgun, E. (2011, June). Examining effects of different levels of blended learning activities on student achievement and retention of learning. In International Conference on New Horizons in Education. Guarda. Retrieved from https://goo.gl/JGC4if
Karaman, S., Yildirim, S., & Kaban, A. (2008, December). Learning 2.0 is becoming common: Research and results on the use of Web 2.0 applications in education. XIII. Internet Conference of Turkey, Ankara. Retrieved from http://inet-tr.org.tr/inetconf13/kitap/karaman_yildirim_inet08.pdf
Kert, S. B., & Ugras, T. (2009, May). Simplicity in programming training and entertainment: Scratch example. In The First International Congress of Educational Research. Canakkale. Retrieved from https://goo.gl/9KOxOt
Kitsantas, A., Dabbagh, N., Chirinos, D. S., & Fake, H. (2016). College students’ perceptions of positive and negative effects of social networking. In Social Networking and Education (pp. 225-238). Springer International Publishing. https://doi.org/10.1007/978-3-319-17716-8_14
Korucu, A. T., & Cakir, H. (2014, February). The view about dynamic web technologies of computer teacher candidates’. Academic Computing Conferences, Mersin. Retrieved from http://ab.org.tr/ab14/bildiri/299.pdf
Lau, W. W., & Yuen, A. H. (2009). Exploring the effects of gender and learning styles on computer programming performance: Implications for programming pedagogy. British Journal of Educational Technology, 40(4), 696-712. https://doi.org/10.1111/j.1467-8535.2008.00847.x
Mutlu, M. E., Erorta, O. O., & Gumus, S. (2005, June). Information management training in the internet environment: Example of associate degree program in information management. Biltek 2005 International Information Congress, Eskisehir. Retrieved from https://goo.gl/3mB77g
Ozmen, H. (2004). In science teaching, learning theories and technology-assisted constructivist learning. The Turkish Online Journal of Educational Technology, 3(1), 100-111.
Ozyurt, O., & Ozyurt, H. (2015). A study for determining computer programming students’ attitudes towards programming and their programming self-efficacy. Journal of Theory and Practice in Education, 11(1), 51-67.
Peltier-Davis, C. (2009). Web 2.0, library 2.0, library user 2.0, librarian 2.0: Innovative services for sustainable libraries. Computers in Libraries, 29(10), 16-21.
Perry, G. (2009). Absolute Beginner’s Guide to Programming (Converting: Timur Aksoy). İstanbul: Sistem Publishing.
Ritz, J. M., & Martin, G. (2013). Research needs for technology education: An international perspective. International Journal of Technology and Design Education, 23(3), 767-783. https://doi.org/10.1007/s10798-012-9215-7
Rohaan, E. J., Taconis, R., & Jochems, W. M. (2012). Analysing teacher knowledge for technology education in primary schools. International Journal of Technology and Design Education, 22(3), 271-280. https://doi.org/10.1007/s10798-010-9147-z
Seferoglu, S. S. (2009, February). The use of technology in elementary schools and the perspectives of managers. Academic Computing Conferences, Sanliurfa. Retrieved from https://goo.gl/I162Jv
Sendag, S. (2008). New trends on the web: Integration into learning environments. Proceedings of 8th International Educational Technology, 995-1001.
Tapia, M., & Marsh, G. E. (2004). An instrument to measure mathematics attitudes. Academic Exchange Quarterly, 8(2), 16-21.
Taskoyan, S. N. (2008). The effect of inquiry learning strategies on students? skills of inquiry learning, academic success and attitudes (Published PhD thesis). DokuzEylül University Institute of Educational Sciences, Izmir, Turkey.
Tuzun, H. (2007, January-Februay). Programming 2.0: Using innovative internet tools in programming education. IX. Academic Computing Conferences, Kutahya. Retrieved from http://ab.org.tr/ab07/kitap/tuzun_AB07.pdf
Venkatesh, V., Rabah, J., Fusaro, M., Couture, A., Varela, W., & Alexander, K. (2016). Factors impacting university instructors’ and students’ perceptions of course effectiveness and technology integration in the age of web 2.0. McGill Journal of Education/Revue des sciences de l'éducation de McGill, 51(1), 533-562. https://doi.org/10.7202/1037358ar
Yasar, S. (1998). Structuralist theory and learning-teaching process. Anadolu Journal of Educational Sciences International, 8(1-2), 68-75.
Yilmaz, R., Gumus, S., & Okur, M. R. (2005, September). Online learning in higher level teaching in Turkey. 5th International Educational Technology Conference, Sakarya. Retrieved from https://goo.gl/6KqNQt

Share:

Saturday, March 13, 2021

Makalah Tugas Individu Bahasa Inggris

Daftar Isi : [Tampil]

Programming Language Use in US Academia and Industry

1. Introduction: Programming Language Adoption

The process by which organizations and individuals adopt technology trends is complex, as it involves many diverse factors; it is also paradoxical and counter-intuitive, hence difficult to model (Clements, 2006; Warren, 2006; John C, 2006; Leo and Rabkin, 2013; Geoffrey, 2002; Geoffrey, 2002a; Yi, Li and Mili, 2007; Stephen, 2006). This general observation applies to programming languages in particular, where many carefully designed languages that have superior technical attributes fail to be widely adopted, while languages that start with modest ambitions and limited scope go on to be widely used in industry and in academia. In (Dios, Mili, Wu and Wang, 2005) we used an empirical approach to build a statistical model that captures the evolution of programming language adoption by a variety of stakeholder classes (industry, academia, government, etc), and in (Bai and Mili, 2011; Ben Arfa Rabai, Bai and Mili, 2011; Ben Arfa Rabai, Bai and Mili, 2009) we generalize this model to a broader class of software technology trends.

In this paper, we present factual data on the adoption of programming languages in academia and industry, and attempt to identify trends over time, by comparing current data against 2010 data; we also analyze possible cross-influences between adoption trends in academia and industry; we also analyze possible correlations between language adoption decisions in academia and institutional rankings. This information may be of interest to academic decision makers, as they may want to consider what languages are being used across academia, and may be of interest to industry decision makers and recruiters, as they contemplate what background graduating students have in terms of knowledge of programming languages and paradigms.

2. Programming Language Adoption in Industry

The Tiobe Software company (http://www.tiobe.com) offers one of the most comprehensive, and most timely, surveys of programming language use. This survey appears to use online resources to assess the use of programming languages in industrial practice worldwide, and updates its estimates on a monthly basis. For our purposes, we are interested to review the degree of usage of the most common programming languages as of April 2013; in order to analyze evolutionary trends, and to compare with the data we collected on the use of programming languages in academia, we also record usage data for April 2010. This data is shown in the Table 1:

Table 1

Tiobe Programming Community Index, 2010–2013

Language Rank 2013 Percentage 2013 Rank 2010 Percentage 2010 Evolution Percentage Evolution Rank
C 1 17.86 1 18.06 -0.20 0
Java 2 17.68 2 18.05 -0.37 0
C++ 3 9.71 3 9.71 0.01 0
Objective-C 4 9.60 11 2.29 7.31 7
C# 5 6.15 6 4.43 1.71 1
PHP 6 5.43 4 9.66 -4.23 -2
Visual Basic 7 4.70 5 6.39 -1.69 -2
Python 8 4.44 7 4.20 0.24 -1
Perl 9 2.33 8 3.55 -1.22 -1
Ruby 10 1.97 12 2.22 -0.25 2
JavaScript 11 1.51 10 2.47 -.096 -1
VB .NET 12 1.09
Lisp 13 0.90
Pascal 14 0.89 16 0.65 0.24 2
Delphi 15 0.84 9 2.71 -1.87 -6
Bash 16 0.84
Transact-SQL 17 0.72
PL/SQL 18 0.71 14 0.71 0.00 4
Assembly 19 0.71
Lua 20 0.65 20 0.52 0.13 0

Interestingly, the three top contenders remain the same, and in the same order, namely C, Java then C++. The big winner, in terms of positive evolution over the three year period is Objective-C, which jumps forward a full seven ranks, thanks to an increase of 7.310 in its adoptive population. The biggest loser in terms of adoptive population is PHP, which loses 4.234 percent of the programmer population; and the biggest loser in terms of ranking is Delphi, which drops by six positions (from 9th to 15th). In the next section we explore the ranking of languages in academia.

Considering alternative sources of information, we have looked at data from the site http://langpop.com/, which dates back to the same period (Fall 2013). Specifically, we have focused on two metrics that this site is interested in, namely:

  • Programming language use. In this metric, the authors attempt to gauge the level of use of programming languages by combining data from a variety of sources, including google search (a generic search for references to programming langua-ges), github (a search that focuses on open source software), google files (a search of files with language-specific extensions), craigslist (a search of job postings on craigslist), Ohloh (which measures the number of programmers contributing code to open source projects). We ran the normalized computation on the basis of github and google search (assigning a weight of 0 to the other three), giving google search a weight of 2 and github a weight of one, because google search is more generic (whereas github is specific to open source). We give the other three a weight of zero: google files because it is biased (some languages generate more files per application than others), ohloh because it is redundant with github (which is more widely known and used), and craigslist because its data is incidental (it is a broad spectrum site, in which software job posting are only a small fraction, and is not the prime destination of software professionals). With these weights, we find the following twenty languages at the top: C, Java, C++, Objective-C, PHP, JavaScript, Python, Ruby, C#, Visual Basic, Perl, Shell, SQL, Delphi, ASP, Assembler, Scala, Cobol, Pascal, Lua. Out of these twenty languages, a full sixteen are in the Tiobe survey; and the four top languages (i.e. C, Java, C++, Objective-C) are in the same order in the two lists.
  • Programming language interest. It has always been our belief, and our observation, that what makes a language popular is not necessarily its intrinsic quality attributes, but a host of incidental environmental and circumstantial extrinsic factors; so that we feel vindicated that the site http://langpop.com/ finds it necessary to survey languages according to their level of interest, in addition to a survey based on language usage. To this effect, they collect data from sites that programmers visit to talk about programming languages; they argue that what languages programmers are interested in, and are experimenting with, are not necessarily the same as what languages programmers are paid to use. The site refers to three sources, namely: Lambda the Ultimate, which is rather academically oriented, and attracts programming language researchers; programming.reddit.com, which is a combined news site/ social networking site for programmers; and slashdot.org, which has a similar audience to reddit, but is smaller and less influential. We computed normalized results by giving reddit a weight of 2 and Lambda a weight of 1 (to lower its impact, since it is academically oriented and we are interested in industrial trends) and Slashdot a weight of 1 (due to its lower impact/ importance). The resulting table provides the following list as the twenty most interesting programming languages far the Fall 2013: Java, Java Script, Python, PHP, Perl, C++, Ruby, C, SQL, Lisp, Scheme, Haskell, C#, Shell, D, Erlang, Cobol, Assembler, Scala, Objective C. Out of these languages, only thirteen are part of the Tiobe survey, and many that are in both surveys are at widely different ranks.

Another source of programming language use in industry is RedMonk, which shows a table of language usage in two forums, namely Stack Overflow (an open forum for professional programmers) and GitHub (an open source forum). In the right hand corner of the chart, RedMonk shows the languages that are the quarter percentile of both rankings; these include Java, Java Script, PHP, Python, C++, Ruby, C#, C, CSS, Objective C, R, Perl, Shell, Scala, and Haskell. Of these, ten are among Tiobe’s list of twenty top languages.

In a recent posting on http://www.mashable.com, Todd Wasserman lists the following languages as important languages that a modern programmer ought to know: Java, Java Script, C#, PHP, C++, Python, C, SQL, Ruby, Objective C, Perl, .NET, Visual Basic, R, Swift. These languages are selected and ordered on the basis of their importance for programmers at the high end of the pay scale, according to the online learning platform Lynda (http://www.lynda.com/). Out of these fifteen languages, no less than thirteen show up in Tiobe’s list for April 2013 (whereas the mashable list is dated 2015, it must be noted).

Overall, it is fair to consider that the Tiobe list is a faithful indicator of the state of the practice in language usage in the software industry

3. Programming Language Adoption in Academia

During the spring semester 2013 (January to April 2013) we have conducted a survey across US institutions of higher education, collecting data on programming language use for teaching; specifically, we collected the following data:

  • What programming language is used for the first computing course; some institutions (such as NJIT, for example) have an introductory computing course that precedes the first programming course, and is a prerequisite thereof. Such a course is intended to expose incoming freshmen to general computing concepts, inclu-ding (but not limited to) programming; hence the programming part of the course is covered using a user-friendly language that is not necessarily the language of their first programming course.
  • What programming language is used for the first programming course? The focus of this course is to teach programming using a programming language as a medium, though it is not uncommon for this course to be geared towards teaching the programming language as much as (or more than) it is geared towards teaching a programming discipline.
  • What programming language is used for the first data structures course? Of course, this is most typically the same language as that used for the first programming course, but sometimes (more often than we thought) they are different.
  • What languages are covered in the programming language course; this is typically a junior level course that explores general issues of programming languages, such as programming language analysis, programming language design, programming language processing, programming language compilers and interpreters, and programming paradigms, and exposes students to some programming languages for practical assignments.

In order to record evolutionary trends, we have collected this data for the spring semester 2013 and the spring semester 2010. We have collected this data for 134 institutions across the US, ranked 1 to 134 in the latest US News and World Report Survey. For the Spring 2013 semester, this data is collected by merely inspecting relevant course catalogs, course schedules and (when available) course sites. For the Spring semester 2010, it is more difficult to collect this data, as it requires that we find three year old course sites, course catalogs, or course syllabi; occasionally we had to write individual emails to instructors and/or administrators, with limited success; hence we have fewer data points for 2010 than for 2013.

3.1. First Programming Course

Table 2 shows the data pertaining to the programming language used in the first programming course in the spring semester 2013 and the spring semester 2010.

Table 2

Programming Language Adoption in Academia, 2010–2013

First programming Course

Language Rank 2013 Percentage 2013 Rank 2010 Percentage 2010 Evolution Percentage Evolution Rank
Java 1 44.44 1 51.66 -7.22 0
C++ 2 19.26 2 26.66 -7.41 0
Python 3 17.04 4 5.00 12.04 1
C 4 13.33 3 10.00 3.33 1
MatLab 5 1.481 6 1.66 -0.18 1
C# 6 0.74 7 0.00 0.74 1
Haskell 6 0.74 7 0.00 0.74 1
PHP 6 0.74 7 0.00 0.74 1
JavaScript 6 0.74 7 0.00 0.74 1
Scheme 6 0.74 5 3.33 -2.59 -1
Racket 6 0.74 7 0.00 0.74 1
Ruby 7 0.00 6 1.66 -1.66 -1

Before we compare these results with the Tiobe data, we need to make the following observations:

  • While the data in this table pertains exclusively to academic institutions, the data collected by Tiobe Software is based on “the number of skilled engineers worldwide, courses, and third party vendors”. Assuming that “courses” refer to industrial courses, in addition, possibly to academic courses, we feel it is fair to consider that the Tiobe data reflects primarily the industrial trends of the moment.
  • While our data pertains exclusively to US academic institutions, the Tiobe data reflects industrial practice worldwide. We see no compelling reason to believe that industrial practice in the US (in terms of programming language preferences) should be radically different from industrial practice elsewhere, but we need to be mindful of this qualification.

With these qualifications in mind, we make the following observations:

  • C, Java and C++ are in the top four languages in academia and in industry, in 2010 and in 2013. But while C is ranked #1 in industry in 2001 and 2013 (perhaps due to the weight of legacy software), it is ranked 4th in academia in 2013, and 3rd in 2010. Academic institutions have more latitude in switching between languages than does industry.
  • The distribution of languages in academia is less uniform than the distribution of languages in industry: Java is ranked first in academia with a whopping 44.44%, whereas C is ranked first with a mere 17.862%.
  • Another language to watch, besides the three top languages cited above, is Python. With 17.037 % of the market share in academia in 2013, it is nearly as prevalent as the top languages in industry (17.862% for C, and 17.681% for Java). Perhaps more interestingly, its presence jumps from 5.00% in 2010 to 17.037% in 2013. In industry, this language garners 4.442% of the market in 2013, slightly up from its showing of 2010 (4.205 %).
  • Among the languages that are used in industry but shunned in academia, it is worth pointing to Object-C, whose market share is a significant 9.598 %, and to C#, whose market share in industry is 6.150 %.
  • Some of the languages that appear in academia but not industry include MatLab, Haskell, Scheme and Racket. The rationale for using a language that is not used in industry is that we want a language that best supports a programming discipline, and that once students acquire a sound discipline, migrating to another language is a simple matter (Yi, Li and Mili, 2007).

In order to get a clearer sense of which languages are gaining ground in academia (in a first programming course), and which languages are losing ground, we have considered the four top languages of the table above and recorded how universities have (or have not) changed their adopted language from 2010 to 2013. The results are summarized in the matrix below, where rows represent the languages adopted in 2010 and columns represent the languages adopted in 2013. The diagonal represents the number of institutions that have maintained their choice of language, and outside the diagonal we represent the number of institutions that have moved from the language represented

2013
2010
C++ Java Python C Loss
C++ 16 1 1 2
Java 1 29 4 1 6
Python 5 1 1
C 2 1 7 3
Gain 1 3 5 3

in row to the language represented in column. From this table, it is clear that Python is showing the greatest positive evolution (loss of 1, gain of 5), even though it currently has the lowest adoption rate.

An interesting question that we want to explore is whether the choice of languages for the first programming course is correlated with institutional rank; to this effect, we divide our sample of 134 institutions into four quartiles according to their ranking in the latest US News and World Report survey (1 to 33, 34 to 66, 67 to 99, and finally 100 to 134). For completeness, we have also added a column for language adoption in MOOCs (Massive Open Online Course), including sites such as Coursera, edX, Udacity, Udemy, Codecademy, Lynda.com and Treehouse. The results, which we limit to the nine top languages of Tiobe’s survey for April 2013, are summarized in the Table 3:

The only trend that appears to be monotonic is the percentage of adoption of C++, which increases from 14.286 % for first tier institutions to 34.286 % for fourth tier institutions. From the first tier to the third tier, the adoption of Java drops precipitously, and is compensated almost perfectly by the adoption of Python. Except for the fact that it includes many languages (such as Ruby, JavaScript, CSS, HTML, HTML5) that are not part of the sample, the set of languages adopted by MOOCs looks closer to the column of top tier universities (ranks 1 to 33); many of the MOOCs are operated by top-tier institutions, which justifies this observation.

Table 3

Programming Language Adoption vs. Institutional Ranking First Programming Course, 2013

Language Institutional Ranking MOOCS
1 to 33 34 to 66 67 to 99 100 to 134
C 14.29 16.67 11.76 11.43 7.77
Java 60.71 46.67 35.29 42.86 15.55
C++ 14.29 16.66 23.53 34.29 7.77
Objective-C 0.00 0.00 0.00 0.00 0.00
C# 3.57 0.00 0.00 0.00 7.77
PHP 3.57 0.00 0.00 0.00 4.44
Visual Basic 0.00 0.00 0.00 0.00 0.00
Python 3.57 20.00 29.41 11.43 10.00
Perl 0.00 0.00 0.00 0.00 0.00

3.2. First Data Structures Course

Whereas, for the sake of convenience, it is natural to use the same programming language in the first programming course and the first data structures course, there is also some rationale for using different languages. Indeed, one may argue that these two courses deal with distinct/orthogonal programming disciplines (top down versus bottom up) and distinct design approaches (functional decomposition versus data modeling). Hence we were only moderately surprised, though surprised nevertheless, when we found that a full 32 % of institutions in our sample used different languages in the first programming course and the first data structures course. Table 4 shows, side by side, the percentage of languages used for the first programming course and the first data structures course in our sample.

The difference between the distribution of languages in the first programming course and the distribution of languages in the first data structures course is sufficiently large to indicate that in fact, institutions do not automatically adopt the same language for these two courses. The following table (Table 5) further elucidates this observation by showing how institutions are distributed in terms of language adoption for the first programming course (in rows) and for the first data structures course (in columns) – where we restrict our attention to the main languages cited in section 3.1.

3.3. First Computing Course

Most universities we have surveyed offer a first computing course distinct from the first programming course, though it includes a significant programming component. By contrast with the first programming course, which focuses specifically on teaching a programming discipline, the first computing course introduces students to a wide range of computing topics, and is usually used as a prerequisite to subsequent CS courses, and/

Table 4

First Programming Course, versus First Data Structures Course, 2013

Language 1st Programming Course 1st Programming Course
Rank Percentage Rank Percentage
Java 1 44.44 1 46,73
C++ 2 19.26 2 44.60
Python 3 17.04 4 2.80
C 4 13.33 3 4.67
MatLab 5 1.48 6 0.00
C# 6 0.74 6 0.00
Haskell 6 0.74 6 0.00
PHP 6 0.74 6 0.00
JavaScript 6 0.74 6 0.00
Scheme 6 0.74 5 0.93
Racket 6 0.74 6 0.00
Ruby 7 0.00 6 0.00

Table 5

Transitions from First Programming Course to First Data Structures Course

Data Structure
Programming
C Java C++ Python Java Script C# MATLAB Haskell PHP
C 3 6 8
Java 3 42 15 1
C++ 2 5 21 1
Python 2 7 9 1
JavaScript 1 1
C# 1
MATLAB 1 1 1
Haskell 1
PHP 1 1

or as an introductory computing course for non CS majors. Programming languages for the first computing course have to meet a different set of requirements from those of programming courses; they are typically chosen for their user-friendliness, their ease of learning and their ease of use, rather their relevance in industry. Hence it is not surprising that very few universities (only 2 out of our sample of 134) use the same programming language for the first computing course and the first programming course. Our data is summarized in Table 6:

Two observations are striking: First, the choice of programming language for the first computing course appears to be taken without consideration for what is in vogue in industry; second, this decision appears to be in flux, in light of the broad swings that we find in adoption figures between the 2010 data and the 2013 data. It bears pointing out that we have far less data for 2010 than we have for 2013, due to the difficulty of collecting archival data. Table 7 shows the adoption pattern as a function of institutional ranking.

3.4. Programming Languages Course

Whereas languages for the first computing course are chosen for their ease of use, whereas languages for the first programming course are chosen with an eye on the market, and whereas languages for the first data structures course are chosen to support data structure representation and manipulation, languages for the programming languages course are chosen for their educational value (if they embody a meaningful/ unique programming paradigm), their design attributes (if they capture meaningful design principles), or their historical significance (if they have influenced subsequent languages, or spawned many variations). Consequently, the list of languages chosen for the programming language course cover a broader range than the earlier lists, and include older languages, and less mainstream languages; also, because of the criteria used to select these languages, they tend to evolve more slowly from year to year, as they are not subject to market pressures. Our data is summarized in Table 8:

Table 6

Programming Language Adoption in Academia, 2010–2013

First Computing Course

Language Rank
2013
Percentage
2013
Rank
2010
Percentage
2010
Evolution
Percentage
Evolution
Rank
MATLAB 1 26.15 12 0.00 26.15 11
Python 2 23.08 2 16.67 6.41 0
Visual Basic 3 12.31 4 5.56 6.75 1
Scratch 4 4.61 12 0.00 4.61 8
JavaScript 5 3.08 4 5.56 –2.48 –1
Alice 5 3.08 12 0.00 3.08 7
Fortran 5 3.08 4 5.56 –2.48 –1
HTML 5 3.08 4 5.56 –2.48 –1
Racket 10 1.54 12 0.00 1.54 2
Ruby 10 1.54 12 0.00 1.54 2
Scheme 10 1.54 4 5.56 –4.02 –6
Mathematica 10 1.54 12 0.00 1.54 2
C 10 1.54 4 5.56 –4.02 –6
Sway 10 1.54 12 0.00 1.54 2
Maple 10 1.54 4 5.56 -4.02 -6
Second Life 10 1.54 12 0.00 1.54 2
C++ 10 1.54 3 11.11 -9.57 -7
Java 10 1.54 1 27.78 -26.24 -9
PHP 10 1.54 4 5.56 -4.02 -6
CSS 10 1.54 12 0.00 1.54 2

Table 7

Programming Language Adoption vs. Institutional Ranking

First Computing Course, 2013

Language Institutional   Ranking
1 to 33 34 to 66 67 to 99 100 to 134
MATLAB 27.78 38.46 50.00 26.67
Python 44.44 38.46 0.00 13.33
Visual Basic 0.00 15.38 33.33 26.67
Scratch 11.11 7.69 0.00 6.67
JavaScript 11.11 0.00 0.00 0.00
Alice 5.56 0.00 16.67 0.00
Fortran 0.00 0.00 0.00 13.33
HTML 0.00 0.00 0.00 13.33

Among the top fifteen languages, we find Prolog ranked very high, in second position, even though it is nowhere to be seen in the Tiobe survey, nor in the list of programming languages used in other courses; this language is used as a vehicle for discussing logic programming. Another impressive showing is the collective figure of functional

Table 8

Programming Language Adoption in Academia, 2010–2013

Programming Language Course

Language Rank
2013
Percentage
2013
Rank
2010
Percentage
2010
Evolution
Percentage
Evolution
Rank
Java 1 13.02 2 11.76 1.26 1
Prolog 2 11.76 1 12.50 -0.73 -1
C++ 3 10.92 3 10.29 0.63 0
Schema 4 9.66 3 10.29 -0.63 -1
Python 5 7.56 5 8.82 -1.26 0
Haskell 6 7.14 6 6.62 0.52 0
ML 7 5.46 8 5.15 0.31 1
Lisp 8 4.21 9 3.68 0.52 1
Racket 9 3.78 17 0.73 3.05 8
Ada 10 3.36 13 2.20 1.15 3
C++ 10 3.36 7 5.88 -2.52 -3
OCAML 10 3.36 10 2.94 0.42 0
Perl 13 2.52 10 2.94 -0.42 -3
SML 13 2.52 10 2.94 -0.42 0
SmallTalk 15 2.10 13 2.20 -0.10 -3
Algol 16 1.26 17 0.73 0.52 -3
Scala 16 1.26 17 0.73 0.52 -2
Erlang 18 0.84 27 0.00 0.84 1
Pascal 18 0.84 13 2.20 -1.36 1
Lua 18 0.84 17 0.73 0.10 9
CAML 21 0.42 17 0.73 -0.31 -5
Coq 21 0.42 17 0.73 -0.31 -1
Simula 21 0.42 27 0.00 0.42 6
Cool 21 0.42 27 0.00 0.42 6
Modula2 21 0.42 27 0.00 0.42 6
Oz 21 0.42 27 0.00 0.42 6
Salsa 21 0.42 27 0.00 0.42 6
JavaScript 21 0.42 17 0.73 -0.31 -4
Squeak 21 0.42 17 0.73 -0.31 -4
Fortran 21 0.42 17 0.73 -0.31 -4
MATLAB 31 0.00 17 0.73 -0.73 -14
Ruby 31 0.00 13 2.20 -2.20 -18

programming languages, which include Scheme (ranked 4th), Haskell (ranked 6th), ML (ranked 7th), Lisp (ranked 8th), OCAML (ranked 10th), SML (ranked 13th), and CAML (ranked 21); together, they account for a total of 32.772 %, and support the practice of functional programming. The interest of Ada (ranked 10th) is that it was developed through a worldwide competition, and that it embodies the state of the art in language design for its era (late seventies/ early eighties); it has many advanced features, that are not found in any of the languages that are currently in use. Smalltalk (ranked 15th), Simula (ranked 21st) and Modula (also ranked 21st) are languages that support modular programming by providing object oriented functionalities. As far as evolution between 2010 and 2013, the empirical data bears out our expectation that the distribution of the main languages remains relatively unchanged: the top eight languages have maintained the same rankings between 2010 and 2013, within a limit of 1.

Table 9 shows the distribution of the top twelve languages (those with a percentage of use greater than 3.00) divided according to institutional ranking.

Third tier institutions (ranked 67 to 99) use Java and C++ the least, and use Prolog, Scheme, Haskell and Lisp the most. First tier institutions use OCAML the most, and their use decreases with institutional ranking. The use of C increases monotonically from first tier to fourth tier.

4. Cross Influences

In (Ben Arfa Rabai, Bai and Mili, 2011) we had speculated on whether and to what extent language choices in academia and industry influence each other: Industries may take the lead in adopting a language, forcing universities to follow in a bid to better prepare their students for the job market; conversely, universities may take the lead in adopting a language, producing generations of students who are proficient in this language, who in time may propagate the language in industry. To test whether our data bears out one hypothesis or the other, we compute statistical correlations between language adoption in 2013 by one stakeholder (academia or industry) and language adoption in 2010 by the other stakeholder; we do so for the most common languages in our sample, namely those that have a significant following in both academia and industry in 2013 and 2010. For academic courses, we consider the first programming course, because it is the course that is most likely to be influenced by industry trends, and is most likely to influence industry trends.

Table 9

Programming Language Adoption vs. Institutional Ranking

Programming Language Course, 2013

Language Institutional   Ranking
1 to 33 34 to 66 67 to 99 100 to 134
Java 17.02 16.67 10.41 20.00
Prolog 12.77 14.58 16.67 13.33
C++ 19.15 14.58 10.42 13.33
Scheme 8.51 10.42 20.83 8.89
Python 8.51 6.25 6.25 13.33
Haskell 6.38 10.42 12.50 4.44
ML 8.51 4.17 6.25 6.67
Lisp 4.25 4.17 20.83 8.89
Racket 4.25 4.17 6.25 4.44
Ada 0.00 6.25 4.17 2.22
C++ 2.13 4.17 4.17 4.44
OCAML 8.51 4.17 0.00 0.00

Table 10 shows the adoption figures for relevant languages in 2010 and 2013, for aca-demia and industry; and Table 11 shows statistical correlations between these columns. The correlations between academia 2010 and industry 2013, as well as the correlation between industry 2010 and academia 2013 appear to be both moderate, and virtually identical; this precludes any claim of a significant influence one way or the other (which does not mean there is no influence, only that our data does not reveal any). What is also possible is that while one stakeholder influences the other, it takes more than 3 years for the effect to show.

5. Conclusion

This paper presents some factual data about the adoption of programming languages in academia and industry, for years 2013 and 2010. Among the most striking results that came out of our survey, we cite the following:

  • C, C++ and Java occupy top places in the ranking of language use in industry, and in the ranking of language use in the first programming course in academia.
  • irtually all of the languages that were developed in academia with the express goal of supporting education are uniformly shunned by academic institutions, and rarely used outside their home institution.

    Table 10

    Cross Influences, Academia and Industry 2010–2013

    Language Academia Industry
    2013 2010 2013 2010
    Java 4.44 51.66 17.68 18.05
    C 13.33 10.00 17.68 18.06
    C++ 19.26 26.66 9.71 9.71
    C# 0.74 0.00 6.15 4.43
    Python 17.04 12.04 4.44 4.20
    JavaScript 0.74 0.74 1.51 2.47
    PHP 0.74 0.74 5.43 9.66
    Ruby 0.00 1.66 1.97 2.22

    Table 11

    Correlation between Adoption Figures 2010–2013

    Academia Industry
    2013 2010 2013 2010
    Academia 2013 1
    Academia 2010 0.977 1
    Industry 2013 0.739 0.700 1
    Industry 2010 0.693 0.662 0.996 1
  • There is no measurable cross-influence of industry and academia in terms of programming language adoption, i.e. none appears to directly influence the adoption decision of the other, at least not within the three-year lead time that we have considered for our data collection.

A question that our data elicits is: why does industry keep using programming languages that date back to the late sixties/ early seventies (C), as well as variations thereof (C++, Java), at the expense of more modern languages, that represent modern ideas of language design, and feature interesting attributes such as support for modularity, exception handling, genericity, information hiding, etc. The answer to this question lies in two orthogonal premises:

  • First, our investigation of software technology trends in general (Rabai et al., 2011), and of programming language adoption trends in particular (YaoFei et al., 2005) shows that intrinsic quality attributes of software artifacts play a minor role in adoption decisions, in favor of extrinsic factors pertaining to the circumstances in which the artifacts arose and evolved. Indeed, (YaoFei et al, 2005) analyze the correlations of eleven intrinsic factors to the adoption of languages by practicing programmers, and find that out of the eleven factors, only three have a correlation greater than 0.5, and six have a correlation less than 0.1; this is further borne out by (Meyerovitch and Rabkin, 2013) who have a section titled Extrinsic Properties Dominate Intrinsic Ones, in which they discuss how environmental considerations far outweigh language attributes in determining language adoption decisions. The relative insignificance of intrinsic factors in adoption decisions is actually plain to see even for the casual observer: how else can we explain that a language such as C, which was developed by two lone systems programmers to help them develop an operating system (Unix) has achieved worldwide success and has influenced so many subsequent languages, whereas a language such as Ada, which was designed by a team of experts selected through a worldwide competition, and embodied state of the art ideas about language design and modular programming, would fare so poorly as to disappear completely from the scene.
  • Second, adoption of programming languages in industry is subject to many constraints that are not applicable in academia; these include, for example,
    • The cost of training programmers and analysts on a new programming lan○○guage, along with possibly new programming environments and new software development processes.
    • The cost that stems from lower staff productivity and lower product quality ○○resulting from adopting a new programming language, until such time as the software personnel gets up to speed on the new language.
    • The need to maintain staff expertise in languages that are used for legacy ○○software, so as to support software maintenance; companies will find it much easier to manage their human resources if maintenance and new development depended on the same expertise, than if they were compartmentalized.
    • Market pressures, short-term business goals, and risk aversion limit the lati○○tude that industry has to experiment with new languages or new paradigms, even if these could be justified in the long run.

In (Meyerovitch and Rabkin, 2013) Meyrovitch and Rabkin conduct a detailed survey of the factors that determine programming language adoption in academia and industry, and conclude that industry finds that “existing code, existing expertise, and open source libraries are the main drivers of adoption”. Interestingly, they also find that older programmers are more resistant to adopt new languages than younger programmers; given that university students are, by definition, younger than the average industry programmer, existing expertise is a much bigger constraint in industry than it is in academia.

By contrast, the adherence of academia to such languages in the absence of the constraints above is rather puzzling, especially in light of the following observations:

  • These languages, especially C, are woefully inadequate for the purposes of programmer education: they are too complex, have too many quirks, and are too implementation-dependent (expose the underlying machinery) to serve as models of computation for first year programming students. First year programming textbooks often make matters worse by shifting the focus of the course from teaching a discipline of programming using a programming language to teaching the programming language instead, including all its obscure, esoteric, quirky details.
  • Academia has the latitude to lead: The debate of whether academic trends should lead or follow industrial trends applies to programming language choice as much as to any technology trend. Yet, the fact that industrial developers decide on what programming language to use based, at least in part, on their education (according to [Meyerovitch and Rabkin, 2013]) means that academic choices do affect industrial choices.
  • Academia has the means to lead: Because developers learn new languages frequently and rapidly, a student can learn to program in one language and later practice software development in another language with minimal cost/ effort/ disruption; hence academia does not have to select languages according to industry choices, but ought to define and follow its own selection criteria. This supports the view that academia should select programming languages according to purely education criteria, rather than the myopic concern of preparing students to be immediately operational on the job.
  • Academia has the incentive to lead: It is all the more critical for academia to follow its own selection criteria that they appear to differ significantly from industrial criteria: an ideal language for education is one that favors simplicity over computing power, and supports language-enforced correctness rather than expressive constructs; yet Meyerovitch and Rabkin find that industrial developers use the exact opposite criteria.
  • Academia has ample opportunity to lead: many dedicated educators and scholars have gone to the effort and trouble of creating small programming languages dedicated specifically for programmer education. The include: Alice [Dann et al., 2012]; BlueJ [Koelling et al., 2003]; Haskell [Hudak, 2000]; Racket [Felleisen, 2000]; Ruby [Flanagan and Matsumoto, 2008]; Scratch [McManus, 2013], Squeak [Ducasse, 2005]; Oz [Van Roy and Haridi, 2004]. Unfortunately, most of these languages are barely used for the purpose of programmer education.

In conclusion, we argue that academic decision makers ought to take the lead in setting the agenda of programmer education, through the judicious selection of programming languages that are designed for this purpose, that help the student develop a sound discipline of programming, and that ultimately help raise the level of software engineering education and the level of software practice. Understandably, the ACM/ IEEE taskforce on computing curricula stays clear of making any recommendations on the choice of programming languages, because it views them as means to an educational end, rather than an end; as a result, it reasons exclusively in terms of programming paradigms, and makes recommendations regarding object oriented programming, functional programming, reactive programming, logic programming, and concurrency and parallelism, leaving academic decision-makers all the latitude they need to choose the languages that best convey these paradigms.

6. References

ACM (2013). Computer Science Curricula 2013. Curriculum Guidelines for Undergraduate Programs in Computer Science. December 20, 2013. ACM/IEEE Computer Society.
Agresti, A. (2002). Categorical Data Analysis (2d edition). Wiley Interscience, Florida.
Bai, Yanzhi., Mili, A. (2007). Monitoring software technology evolution, one trend at a time. In: SEDE 2007, 349–355.
Barry, B. (1981). Software Engineering Economics. Prentice Hall.
Ben Arfa Rabai, L., Bai, Y.Z., and Mili, A. (2009). Modeling the evolution of software engineering trends – a bottom up approach. In: ICSOFT 2009, 1, 47–54.
Ben Arfa Rabai, L., Bai, Y.Z., and Mili, A. (2011). A quantitative model for software engineering trends. Information Sciences, 181(22), 4993–5009.
Clements, PC. (2006). Future trends of software technology and applications: software architecture. In: Thirtieth Annual Conference on Computer Software and Applications.
Dann, W., Cooper, S., Pausch, R. (2012). Learning to Program with Alice. Prentice-Hall.
Ducasse, S. (2005). Squeak: Learn Programming with Robots. TIA: Technology in Action. Apress.
Felleisen, M. et al. (2001). How to Design Programs: An Introduction to Programming and Computing. MIT Press.
Flanagan, D., Matsumoto, Y. (2008) The Ruby Programming Language. O’Reilly.
Geoffrey, A.M. (2002). Crossing the Chasm: Marketing and Selling Disruptive Products to Mainstream Customers. Harper Collins Publishers.
Geoffrey, A.M. (2002a). Living on the Fault Line: Managing for Shareholder Value in any Economy. Harper Collins Publishers.
Hudak, P. (2000). The Haskell School of Expression: Learning Functional Programming through Multimedia. Cambridge University Press, New York.
Jerry, L. (2000). Statistics in reliability. Journal of the American Statistical Association, 451(95), 989–992.
John C.K. (2006). Future trends of software technology and applications: model based development. In: Thirtieth Annual Conference on Computer Software and Applications.
Kölling, M., Quig, B., Patterson, A., Rosenberg, J. (2003). The BlueJ system and its pedagogy. Journal of Computer Science Education (Special issue on Learning and Teaching Object Technology), 13(4), 249–268.
McManus, S. (2013). Scratch programming in easy steps: covers Versions 2.0 and 1.4. In: Easy Steps Limi-ted.
Meyerovitch, L.A., Rabkin, A. (2013). Empirical analysis of programming language adoption. In: OOPSLA’13, Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications. ACM, New York, 1–18.
Richard, A,J. (2002). Applied Multivariate Statistical Analysis. Prentice Hall.
Roy, V., Haridi, P., Haridi, S. (2004). Concepts, Techniques and Models of Computer Programming. MIT Press.
Stephen, S.Y. (2006). Future trends of software technology and applications. In: Thirtieth Annual Conference on Computer Software and Applications.
Warren, H. (2006). Future trends of software technology and applications: the phone is the computer. In: Thirtieth Annual Conference on Computer Software and Applications.
Yaofei, C., Dios, R., Mili, A., Wu, L., Wang, K. (2005). An empirical study of programming language trends. IEEE Software, 22(3), 72–78.
Yi, P., Li, F., Mili, A. (2007). Modeling the evolution of operating systems: an empirical study. Journal of Systems and Software, 80(1): 1–15.

Share: