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.
- 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 Scholar
- 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 ScholarCross Ref
- Denis Bogdănaş. 2015. A Complete Semantics for Java. Ph. D. Dissertation. Alexandru Ioan Cuza University of Iaşi. Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. 2000. The Java Language Specification. Addison-Wesley Professional. Google ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- Benjamin C. Pierce. 2002. Types and Programming Languages. MIT Press, Cambridge, Mass. isbn:978-0-262-16209-8 lccn:QA76.7 .P54 2002 Google ScholarDigital Library
- Walter Savitch and Kenrick Mock. 2015. Absolute Java (6th edition ed.). Pearson, Boston. isbn:978-0-13-404167-4 Google Scholar
- 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 ScholarCross Ref
- JDT/Core Team. 2022. JDT Core Component | The Eclipse Foundation. https://www.eclipse.org/jdt/core/index.php. Google Scholar
Index Terms
- Expressions in Java: Essential, Prevalent, Neglected?
Recommendations
Evaluating the Java Native Interface JNI: Leveraging Existing Native Code, Libraries and Threads to a Running Java Virtual Machine
This article aims to explore JNI features and to discover fundamental operations of the Java programming language, such as arrays, objects, classes, threads and exception handling, and to illustrate these by using various algorithms and code samples. ...
Evaluating the Java Native Interface JNI: Data Types and Strings
This article describes how the java native interface JNI is a powerful feature of the java platform that started to draw attention in the latter years as an efficient programming framework for building and delivering innovative technological ...
Usage of the Java Language by Novices over Time: Implications for Tool and Language Design
SIGCSE '21: Proceedings of the 52nd ACM Technical Symposium on Computer Science EducationJava is a popular programming language for teaching at university level. BlueJ is a popular tool for teaching Java to beginners. We provide several analyses of Java use in BlueJ to answer three questions: what use is made of different parts of Java by ...
Comments