Computer Science Education

Book: Java by Comparison

Co-authored with Simon Harrer and Jörg Lenhard.

Java by Comparison: Become a Java Craftsman in 70 Examples Improve your coding skills by comparing your code to that of expert programmers, so you can write code that’s clean, concise, and to the point: code that others will read with pleasure and reuse.

Get hands-on advice to level up your coding style through small and understandable examples that compare flawed code to an improved solution. Discover handy tips and tricks, as well as common bugs an experienced Java programmer needs to know.

Make your way from a Java novice to a decent developer.

Learning and Teaching Good Code Quality

In collaboration with Simon Harrer, Jörg Lenhard, Adam Tornhill (CodeScene) and colleagues at the University of Bamberg.

Teaching programming effectively is challenging, particularly when focusing on both functional correctness and clean, maintainable code. At university, the emphasis often leans toward functionality, neglecting the industry’s demand for developers skilled in writing clean code. Over six years, we refined a feedback-driven teaching concept for second- and third-year college students that has been successful, earning a faculty teaching award. Our evaluation, based on static code analysis tools and analyzing 18 student submissions, showed significant progress in students’ coding practices.

We identified that the bottleneck in scaling the course was the time spent correcting assignments. To address this, we proposed creating a knowledge base of Java code examples, structured as before-and-after comparisons, to speed up feedback and enhance its quality. By referencing these examples, students could better understand coding issues and solutions. Additionally, using a curated list of static code analysis checks helped identify code violations more efficiently, accelerating the feedback process. This approach serves as a foundation for scaling online courses on clean code to hundreds of students.

We also explored the potential of code process metrics, which are widely used in large-scale software projects, to gain insights into programming education. Our analysis of two courses at the University of Bamberg revealed weak correlations between eight code process metrics and student scores. A deeper analysis indicated that the scope of the assignments and the students’ focus on functionality over software engineering practices limited the effectiveness of these metrics. We concluded that larger-scale projects would be more suitable for revealing the impact of code process metrics, offering practical advice for interpreting these metrics in educational contexts.

Publications

  • Java by Comparison. Pragmatic Bookshelf’18
  • Teaching Clean Code. ISEE’18
  • Code Process Metrics in University Programming Education. ISEE’19