skip to main content
10.1145/3563767.3568131acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Expressions in Java: Essential, Prevalent, Neglected?

Published:01 December 2022Publication History

ABSTRACT

Expressions are the building blocks of formal languages such as lambda calculus as well as of programming languages that are closely modeled after it. Although expressions are also an important part of programs in languages like Java, that are not primarily functional, teaching practices typically don’t focus as much on expressions.

We conduct both a theoretical analysis of the Java language, as well as an empirical analysis of the use of expressions in Java programs by novices, to understand the role expressions play in writing programs. We then proceed by systematically analyzing teaching materials for Java to characterize how they present expressions.

Our findings show that expressions are an essential construct in Java, that they are prevalent in student code, but that current textbooks do not introduce expressions as the central, general, and compositional concept they are.

References

  1. Byron Weber Becker. 2002. Pedagogies for CS1: A Survey of Java Textbooks. manuscript, http://www. math. uwaterloo. ca/∼ bwbecker/papers/javaPedagogies. pdf, last visited, 03–01. Google ScholarGoogle Scholar
  2. G. M. Bierman, M. J. Parkinson, and A. M. Pitts. 2003. MJ: An Imperative Core Calculus for Java and Java with Effects. University of Cambridge, Computer Laboratory. https://doi.org/10.48456/tr-563 Google ScholarGoogle ScholarCross RefCross Ref
  3. Denis Bogdănaş. 2015. A Complete Semantics for Java. Ph. D. Dissertation. Alexandru Ioan Cuza University of Iaşi. Google ScholarGoogle Scholar
  4. Jürgen Börstler, Mark S. Hall, Marie Nordström, James H. Paterson, Kate Sanders, Carsten Schulte, and Lynda Thomas. 2010. An Evaluation of Object Oriented Example Programs in Introductory Programming Textbooks. ACM SIGCSE Bulletin, 41, 4 (2010), Jan., 126–143. issn:0097-8418 https://doi.org/10.1145/1709424.1709458 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Neil Christopher Charles Brown, Michael Kölling, Davin McCall, and Ian Utting. 2014. Blackbox: A Large Scale Repository of Novice Programmers’ Activity. In Proceedings of the 45th ACM Technical Symposium on Computer Science Education (SIGCSE ’14). Association for Computing Machinery, New York, NY, USA. 223–228. isbn:978-1-4503-2605-6 https://doi.org/10.1145/2538862.2538924 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Neil C. C. Brown, Pierre Weill-Tessier, Maksymilian Sekula, Alexandra-Lucia Costache, and Michael Kölling. 2022. Novice Use of the Java Programming Language. ACM Transactions on Computing Education, July, https://doi.org/10.1145/3551393 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Luca Chiodini, Igor Moreno Santos, Andrea Gallidabino, Anya Tafliovich, André L. Santos, and Matthias Hauswirth. 2021. A Curated Inventory of Programming Language Misconceptions. In Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 1 (ITiCSE ’21). Association for Computing Machinery, New York, NY, USA. 380–386. isbn:978-1-4503-8214-4 https://doi.org/10.1145/3430665.3456343 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Paul J. Deitel and Harvey M. Deitel. 2018. Java: How to Program Early Objects (11th edition ed.). Pearson, New York. isbn:978-0-13-474335-6 lccn:QA76.73.J38 D45345 2018 Google ScholarGoogle Scholar
  9. Frank DeRemer and Hans Kron. 1975. Programming-in-the Large versus Programming-in-the-Small. ACM SIGPLAN Notices, 10, 6 (1975), April, 114–121. issn:0362-1340 https://doi.org/10.1145/390016.808431 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Rodrigo Duran, Juha Sorva, and Otto Seppälä. 2021. Rules of Program Behavior. ACM Transactions on Computing Education, 21, 4 (2021), Nov., 33:1–33:37. https://doi.org/10.1145/3469128 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Joyce Farrell. 2019. Java Programming (nineth edition ed.). Cengage, Australia United States. isbn:978-1-337-39707-0 lccn:QA76.73.J38 F38 2019 Google ScholarGoogle Scholar
  12. Ken Goldman, Paul Gross, Cinda Heeren, Geoffrey Herman, Lisa Kaczmarczyk, Michael C. Loui, and Craig Zilles. 2008. Identifying Important and Difficult Concepts in Introductory Computing Courses Using a Delphi Process. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education (SIGCSE ’08). ACM, New York, NY, USA. 256–260. isbn:978-1-59593-799-5 https://doi.org/10.1145/1352135.1352226 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. 2000. The Java Language Specification. Addison-Wesley Professional. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Cay S. Horstmann. 2019. Big Java. Early Objects (seventh edition ed.). John Wiley & Sons, Inc, Hoboken, NJ. isbn:978-1-119-49944-2 978-1-119-49909-1 lccn:QA76.73.J38 Google ScholarGoogle Scholar
  15. Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. 2001. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM Transactions on Programming Languages and Systems, 23, 3 (2001), May, 396–450. issn:0164-0925 https://doi.org/10.1145/503502.503505 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Michael Kölling and David Barnes. 2017. Objects First With Java: A Practical Introduction Using BlueJ (sixth ed.). Pearson. isbn:978-0-13-447736-7 Google ScholarGoogle Scholar
  17. John Lewis and William Loftus. 2017. Java Software Solutions: Foundations of Program Design (ninth edition ed.). Pearson, NY, NY. isbn:978-0-13-446202-8 lccn:QA76.73.J38 L49 2017 Google ScholarGoogle Scholar
  18. Guillaume Marceau, Kathi Fisler, and Shriram Krishnamurthi. 2011. Do Values Grow on Trees?: Expression Integrity in Functional Programming. In Proceedings of the Seventh International Workshop on Computing Education Research - ICER ’11. ACM Press, Providence, Rhode Island, USA. 39. isbn:978-1-4503-0829-8 https://doi.org/10.1145/2016911.2016921 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Davood Mazinanian, Ameya Ketkar, Nikolaos Tsantalis, and Danny Dig. 2017. Understanding the Use of Lambda Expressions in Java. Proceedings of the ACM on Programming Languages, 1, OOPSLA (2017), Oct., 1–31. issn:2475-1421 https://doi.org/10.1145/3133909 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. T. J. Parr and R. W. Quong. 1995. ANTLR: A Predicated-LL(k) Parser Generator. Software: Practice and Experience, 25, 7 (1995), 789–810. issn:1097-024X https://doi.org/10.1002/spe.4380250705 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Benjamin C. Pierce. 2002. Types and Programming Languages. MIT Press, Cambridge, Mass. isbn:978-0-262-16209-8 lccn:QA76.7 .P54 2002 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Walter Savitch and Kenrick Mock. 2015. Absolute Java (6th edition ed.). Pearson, Boston. isbn:978-0-13-404167-4 Google ScholarGoogle Scholar
  23. 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–775. issn:1939-2176 https://doi.org/10.1037/a0025140 Google ScholarGoogle ScholarCross RefCross Ref
  24. JDT/Core Team. 2022. JDT Core Component | The Eclipse Foundation. https://www.eclipse.org/jdt/core/index.php. Google ScholarGoogle Scholar

Index Terms

  1. Expressions in Java: Essential, Prevalent, Neglected?

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          SPLASH-E 2022: Proceedings of the 2022 ACM SIGPLAN International Symposium on SPLASH-E
          November 2022
          69 pages
          ISBN:9781450399005
          DOI:10.1145/3563767

          Copyright © 2022 ACM

          Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 1 December 2022

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader