Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

What Happens When Students Switch (Functional) Languages (Experience Report)

Published: 31 August 2023 Publication History

Abstract

When novice programming students already know one programming language and have to learn another, what issues do they run into? We specifically focus on one or both languages being functional, varying along two axes: syntax and semantics. We report on problems, especially persistent ones. This work can be of immediate value to educators and also sets up avenues for future research.

Supplementary Material

Auxiliary Archive (icfp23main-p129-p-archive.zip)
The paper appendix.

References

[1]
Dibyendu Brinto Bose, Gerald C Gannod, Akond Rahman, and Kaitlyn Cottrell. 2022. What Questions Do Developers Ask about Julia? In Proceedings of the 2022 ACM Southeast Conference (ACM SE ’22). Association for Computing Machinery, New York, NY, USA. 224–228. isbn:978-1-4503-8697-5 https://doi.org/10.1145/3476883.3520205
[2]
Paul Denny, Brett A. Becker, Nigel Bosch, James Prather, Brent Reeves, and Jacqueline Whalley. 2022. Novice Reflections During the Transition to a New Programming Language. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education - Volume 1 (SIGCSE 2022, Vol. 1). Association for Computing Machinery, New York, NY, USA. 948–954. isbn:978-1-4503-9070-5 https://doi.org/10.1145/3478431.3499314
[3]
Alejandro Espinal, Camilo Vieira, and Valeria Guerrero-Bequis. 2022. Student Ability and Difficulties with Transfer from a Block-Based Programming Language into Other Programming Languages: A Case Study in Colombia. Computer Science Education, 1–33. issn:0899-3408 https://doi.org/10.1080/08993408.2022.2079867
[4]
Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2018. How to Design Programs: An Introduction to Programming and Computing (2 ed.). MIT Press. https://htdp.org/
[5]
Kathi Fisler, Shriram Krishnamurthi, Benjamin S. Lerner, and Joe Gibbs Politz. 2023. A Data-Centric Introduction to Computing (2023-02-21 ed.). https://dcic-world.org/
[6]
Kathi Fisler, Shriram Krishnamurthi, and Preston Tunnell Wilson. 2017. Assessing and Teaching Scope, Mutation, and Aliasing in Upper-Level Undergraduates. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education (SIGCSE ’17). Association for Computing Machinery, New York, NY, USA. 213–218. isbn:978-1-4503-4698-6 https://doi.org/10.1145/3017680.3017777
[7]
Max Fowler, David H. Smith IV, Mohammed Hassan, Seth Poulsen, Matthew West, and Craig Zilles. 2022. Reevaluating the Relationship between Explaining, Tracing, and Writing Skills in CS1 in a Replication Study. Computer Science Education, 32, 3 (2022), July, 355–383. issn:0899-3408 https://doi.org/10.1080/08993408.2022.2079866
[8]
Diana Franklin, Charlotte Hill, Hilary A. Dwyer, Alexandria K. Hansen, Ashley Iveland, and Danielle B. Harlow. 2016. Initialization in Scratch: Seeking Knowledge Transfer. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education (SIGCSE ’16). Association for Computing Machinery, New York, NY, USA. 217–222. isbn:978-1-4503-3685-7 https://doi.org/10.1145/2839509.2844569
[9]
Dedre Gentner. 1983. Structure-Mapping: A Theoretical Framework for Analogy. Cognitive Science, 7, 2 (1983), 155–170. issn:0364-0213 https://doi.org/10.1016/S0364-0213(83)80009-3
[10]
James J. Gibson and Eleanor J. Gibson. 1955. Perceptual Learning: Differentiation or Enrichment? Psychological Review, 62, 1 (1955), 32–41. issn:1939-1471 https://doi.org/10.1037/h0048826
[11]
Dwight Guth. 2013. A Formal Semantics of Python 3.3. Ph. D. Dissertation. University of Illinois at Urbana-Champaign. https://hdl.handle.net/2142/45275
[12]
Yvonne Kao, Bryan Matlen, and David Weintrop. 2022. From One Language to the Next: Applications of Analogical Transfer for Programming Education. ACM Transactions on Computing Education, 22, 4 (2022), 1–21. https://doi.org/10.1145/3487051
[13]
Claudius M. Kessler and John R. Anderson. 1986. Learning Flow of Control: Recursive and Iterative Procedures. Human– Computer Interaction, 2, 2 (1986), June, 135–166. issn:0737-0024 https://doi.org/10.1207/s15327051hci0202_2
[14]
Michael Kölling, Neil CC Brown, and Amjad Altadmri. 2015. Frame-Based Editing: Easing the Transition from Blocks to Text-Based Programming. In Proceedings of the Workshop in Primary and Secondary Computing Education (WiPSCE ’15). Association for Computing Machinery, New York, NY, USA. 29–38. isbn:978-1-4503-3753-3 https://doi.org/10.1145/2818314.2818331
[15]
Shriram Krishnamurthi. 2001. Linguistic Reuse. Ph. D. Dissertation. Rice University. United States – Texas. isbn:0493326707 https://scholarship.rice.edu/handle/1911/17993
[16]
Shriram Krishnamurthi and Kathi Fisler. 2020. Data-Centricity: A Challenge and Opportunity for Computing Education. Commun. ACM, 63, 8 (2020), July, 24–26. issn:0001-0782, 1557-7317 https://doi.org/10.1145/3408056
[17]
Mike Lopez, Jacqueline Whalley, Phil Robbins, and Raymond Lister. 2008. Relationships between Reading, Tracing and Writing Skills in Introductory Programming. In Proceedings of the Fourth International Workshop on Computing Education Research (ICER ’08). Association for Computing Machinery, New York, NY, USA. 101–112. isbn:978-1-60558-216-0 https://doi.org/10.1145/1404520.1404531
[18]
John Maloney, Mitchel Resnick, Natalie Rusk, Brian Silverman, and Evelyn Eastmond. 2010. The Scratch Programming Language and Environment. ACM Transactions on Computing Education (TOCE), 10, 4 (2010), 1–15. https://doi.org/10.1145/1868358.1868363
[19]
Luke Moors, Andrew Luxton-Reilly, and Paul Denny. 2018. Transitioning from Block-Based to Text-Based Programming Languages. In 2018 International Conference on Learning and Teaching in Computing and Engineering (LaTICE). IEEE, 57–64. issn:2475-1057 https://doi.org/10.1109/LaTICE.2018.000-5
[20]
Roy D. Pea. 1986. Language-Independent Conceptual “Bugs” in Novice Programming. Journal of educational computing research, 2, 1 (1986), 25–36. issn:0735-6331 https://doi.org/10.2190/689T-1R2A-X4W4-29J2
[21]
Joe Gibbs Politz, Alejandro Martinez, Mae Milano, Sumner Warren, Daniel Patterson, Junsong Li, Anand Chitipothu, and Shriram Krishnamurthi. 2013. Python: The Full Monty. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’13). Association for Computing Machinery, New York, NY, USA. 217–232. isbn:978-1-4503-2374-1 https://doi.org/10.1145/2509136.2509536
[22]
George J. Posner, Kenneth A. Strike, Peter W. Hewson, and William A. Gertzog. 1982. Accommodation of a Scientific Conception: Toward a Theory of Conceptual Change. Science Education, 66, 2 (1982), 211–227. issn:1098-237X https://doi.org/10.1002/sce.3730660207
[23]
Kris Powers, Stacey Ecott, and Leanne M. Hirshfield. 2007. Through the Looking Glass: Teaching CS0 with Alice. ACM SIGCSE Bulletin, 39, 1 (2007), March, 213–217. issn:0097-8418 https://doi.org/10.1145/1227504.1227386
[24]
Mitchel Resnick, John Maloney, Andrés Monroy-Hernández, Natalie Rusk, Evelyn Eastmond, Karen Brennan, Amon Millner, Eric Rosenbaum, Jay Silver, and Brian Silverman. 2009. Scratch: Programming for All. Commun. ACM, 52, 11 (2009), 60–67. issn:0001-0782 https://doi.org/10.1145/1592761.1592779
[25]
K. Andrew R. Richards and Michael A. Hemphill. 2018. A Practical Guide to Collaborative Qualitative Data Analysis. Journal of Teaching in Physical education, 37, 2 (2018), 225–231. issn:0273-5024 https://doi.org/10.1123/jtpe.2017-0084
[26]
Igor Moreno Santos, Matthias Hauswirth, and Nathaniel Nystrom. 2019. Experiences in Bridging from Functional to Object-Oriented Programming. In Proceedings of the 2019 ACM SIGPLAN Symposium on SPLASH-E (SPLASH-E 2019). Association for Computing Machinery, New York, NY, USA. 36–40. isbn:978-1-4503-6989-3 https://doi.org/10.1145/3358711.3361628
[27]
Jean Scholtz and Susan Wiedenbeck. 1990. Learning Second and Subsequent Programming Languages: A Problem of Transfer. International Journal of Human-Computer Interaction, 2, 1 (1990), 51–72. issn:1044-7318 https://doi.org/10.1080/10447319009525970
[28]
Jean Scholtz and Susan Wiedenbeck. 1991. Learning a New Programming Language: A Model of the Planning Process. In Proceedings of the Twenty-Fourth Annual Hawaii International Conference on System Sciences. 2, 3–12. https://doi.org/10.1109/HICSS.1991.183956
[29]
Jean Scholtz and Susan Wiedenbeck. 1992. An Analysis of Novice Programmers Leaming a Second Language. In Empirical Studies of Programmers: Fifth Workshop (PPIG 1992). 187–205. https://ppig.org/papers/1992-ppig-4th-scholtz/
[30]
Jean Scholtz and Susan Wiedenbeck. 1993. Using Unfamiliar Programming Languages: The Effects on Expertise. Interacting with Computers, 5, 1 (1993), March, 13–30. issn:0953-5438 https://doi.org/10.1016/0953-5438(93)90023-M
[31]
Daniel L. Schwartz, Catherine C. Chase, Marily A. Oppezzo, and Doris B. Chin. 2011. Practicing versus Inventing with Contrasting Cases: The Effects of Telling First on Learning and Transfer. Journal of educational psychology, 103, 4 (2011), 759. issn:1939-2176 https://doi.org/10.1037/a0025140
[32]
Nischal Shrestha, Colton Botta, Titus Barik, and Chris Parnin. 2020. Here We Go Again: Why Is It Difficult for Developers to Learn Another Programming Language? In Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering (ICSE ’20). Association for Computing Machinery, 691–701. isbn:978-1-4503-7121-6 https://doi.org/10.1145/3377811.3380352
[33]
The Pyret Crew. [n. d.]. The Pyret Programming Language. http://pyret.org
[34]
Ethel Tshukudu. 2019. Towards a Model of Conceptual Transfer for Students Learning New Programming Languages. In Proceedings of the 2019 ACM Conference on International Computing Education Research (ICER ’19). Association for Computing Machinery, New York, NY, USA. 355–356. isbn:978-1-4503-6185-9 https://doi.org/10.1145/3291279.3339437
[35]
Ethel Tshukudu. 2022. Understanding Conceptual Transfer in Students Learning a New Programming Language. Ph. D. Dissertation. University of Glasgow. https://theses.gla.ac.uk/82984/
[36]
Ethel Tshukudu and Quintin Cutts. 2020. Semantic Transfer in Programming Languages: Exploratory Study of Relative Novices. In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE ’20). Association for Computing Machinery, New York, NY, USA. 307–313. isbn:978-1-4503-6874-2 https://doi.org/10.1145/3341525.3387406
[37]
Ethel Tshukudu and Quintin Cutts. 2020. Understanding Conceptual Transfer for Students Learning New Programming Languages. In Proceedings of the 2020 ACM Conference on International Computing Education Research (ICER ’20). Association for Computing Machinery, New York, NY, USA. 227–237. isbn:978-1-4503-7092-9 https://doi.org/10.1145/3372782.3406270
[38]
Ethel Tshukudu, Quintin Cutts, and Mary Ellen Foster. 2021. Evaluating a Pedagogy for Improving Conceptual Transfer and Understanding in a Second Programming Language Learning Context. In Proceedings of the 21st Koli Calling International Conference on Computing Education Research (Koli Calling ’21). Association for Computing Machinery, New York, NY, USA. 1–10. isbn:978-1-4503-8488-9 https://doi.org/10.1145/3488042.3488050
[39]
Ethel Tshukudu, Quintin Cutts, Olivier Goletti, Alaaeddin Swidan, and Felienne Hermans. 2021. Teachers’ Views and Experiences on Teaching Second and Subsequent Programming Languages. In Proceedings of the 17th ACM Conference on International Computing Education Research (ICER 2021). Association for Computing Machinery, New York, NY, USA. 294–305. isbn:978-1-4503-8326-4 https://doi.org/10.1145/3446871.3469752
[40]
Ethel Tshukudu and Siri Annethe Moe Jensen. 2020. The Role of Explicit Instruction on Students Learning Their Second Programming Language. In United Kingdom & Ireland Computing Education Research Conference. (UKICER ’20). Association for Computing Machinery, New York, NY, USA. 10–16. isbn:978-1-4503-8849-8 https://doi.org/10.1145/3416465.3416475
[41]
Karen P. Walker and Stephen R. Schach. 1996. Obstacles to Learning a Second Programming Language: An Empirical Study. Computer Science Education, 7, 1 (1996), Jan., 1–20. issn:0899-3408 https://doi.org/10.1080/0899340960070101
[42]
Kristin M. Weingartner and Amy M. Masnick. 2019. Refutation Texts: Implying the Refutation of a Scientific Misconception Can Facilitate Knowledge Revision. Contemporary Educational Psychology, 58 (2019), July, 138–148. issn:0361-476X https://doi.org/10.1016/j.cedpsych.2019.03.004
[43]
David Weintrop. 2019. Block-Based Programming in Computer Science Education. Commun. ACM, 62, 8 (2019), July, 22–25. issn:0001-0782 https://doi.org/10.1145/3341221
[44]
David Weintrop, Alexandria K. Hansen, Danielle B. Harlow, and Diana Franklin. 2018. Starting from Scratch: Outcomes of Early Computer Science Learning Experiences and Implications for What Comes Next. Proceedings of the 2018 ACM Conference on International Computing Education Research, Aug., 142–150. isbn:9781450356282 https://doi.org/10.1145/3230977.3230988
[45]
David Weintrop and Uri Wilensky. 2015. Using Commutative Assessments to Compare Conceptual Understanding in Blocks-based and Text-based Programs. In Proceedings of the Eleventh Annual International Conference on International Computing Education Research (ICER ’15). Association for Computing Machinery, New York, NY, USA. 101–110. isbn:978-1-4503-3630-7 https://doi.org/10.1145/2787622.2787721
[46]
David Weintrop and Uri Wilensky. 2019. Transitioning from Introductory Block-Based and Text-Based Environments to Professional Programming Languages in High School Computer Science Classrooms. Computers & Education, 142 (2019), 103646. issn:0360-1315 https://doi.org/10.1016/j.compedu.2019.103646
[47]
Susan Wiedenbeck and Jean Scholtz. 1996. Adaptation of Programming Plans in Transfer between Programming Languages: A Developmental Approach. In Empirical Studies of Programmers: Sixth Workshop. 233–253.
[48]
Quanfeng Wu and John R. Anderson. 1990. Problem-Solving Transfer Among Programming Languages. Carnegie Mellon University. https://apps.dtic.mil/sti/citations/ADA225798

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 7, Issue ICFP
August 2023
981 pages
EISSN:2475-1421
DOI:10.1145/3554311
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 31 August 2023
Published in PACMPL Volume 7, Issue ICFP

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Language transfer
  2. Programming language learning
  3. Pyret
  4. Python
  5. Racket

Qualifiers

  • Research-article

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 433
    Total Downloads
  • Downloads (Last 12 months)356
  • Downloads (Last 6 weeks)35
Reflects downloads up to 16 Oct 2024

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media