Accelerate Literature Icon
Want to do a literature review? Try our new Literature Review workflow

Model‐based automatic grading of object‐oriented programming assignments

  • Abstract
  • Literature Map
  • Similar Papers
Abstract
Translate article icon Translate Article Star icon

Abstract Automatic grading of object‐oriented programming (OOP) assignments is an important problem from practical, theoretical, and educational viewpoints. Apart from computing a specific grade, an effective grading method needs to provide systematic feedback comments to both the design and code elements. Existing works have proposed grading methods that make various assumptions about the design. However, none of these methods have considered using a design language for the program model. A challenge here is to use a language that eases learning and application in program design. In this paper, we propose a novel grading method, named OOPGRADER, which automatically grades OOP assignments constructed based on an essentially detailed program model. This model is defined in an embedded design language, which directly uses the annotation feature of OOP language to express the essential design rules. We explain how programming assignments can be designed with this language and propose a program checker and a grader for both student and teacher to use in working on the assignments and in grading them. We implement these components in a tool and develop an Eclipse plugin for this tool. We evaluate our method using a combination of qualitative and quantitative techniques. The main result is that our method helps students effectively learn to program through detailed feedback comments based on a program model. The tool is adaptable, has a good performance, and helps enhance the productivity of both students and teachers through IDE integration.

Similar Papers
  • Research Article
  • 10.37547/tajet/volume07issue07-13
The Role of Object-Oriented Programming Theory in The Evolution Of .Net Technologies
  • Jul 26, 2025
  • The American Journal of Engineering and Technology
  • Vamshi Krishna Jakkula

The theory of object-oriented programming (OOP) has been used as a paradigm in the development of software engineering that has lasted over a few decades. Although software industry is changing rapidly with other languages and paradigm, OOP now is very much present in the design and architecture of present-day systems. An example of the survival of theoretical concepts is the .NET platform which started with early Common Language Runtime (CLR) and more recently modern ASP.NET Core framework and more up-to-date versions of the C# programming language, covering encapsulation, polymorphism, inheritance and abstraction. This paper therefore seeks to address how the fundamental OOP concepts were used in creating the .NET ecosystem and how it mutated. It aims to understand what these principles are embodied in such aspects as runtime behaviors, language features, framework architecture, and design practice. The paper, using qualitative thematic synthesis on 30 peer-reviewed scholarly articles, theses, technical reports, and case-based assessments fuses theoretical framework with practice forms of implementation at various levels of .NET. The findings reveal a consistent alignment between .NET's design philosophy and object-oriented theory. These values have been retained by key features like use of generics, dependency injection, interface programming, and popularization of design patterns. Additionally, more recent C# additions such as LINQ, immutable records, pattern matching, and async/ await reveal a practical shift to hybridization: merging the idea of functional programming performance and structure, with OO program modularity. Quantitative measurements indicated multi-threaded queries performed at 25%-35% higher level using PLINQ vs. the traditional LINQ, in multicore scenarios. The boxing overhead was minimized and memory consumption improved by up to 20% through the use of generic collections in .NET. Entity Framework queries with LINQ demonstrated an increase of up to 30% in readability and maintainability with no decrease in the performance at run time. These findings indicate that OOP still offers sustainable and flexible model of regulating software complexity especially in large-sized enterprise systems. Although it is a subject of discussions regarding its theoretical limitations, the real-life experience of the evolution of .NET platforms clearly points to that the OOP is relevant in the development of scalable, maintainable, and robust applications. The study comes to the conclusion that the OOP theory is not the one that is only historically important but the one that is actively used in designing the more recent programming platform, such as the .NET. With the current trend toward hybrid and multiparadigm languages, the interface of the OOP theory to such systems as the .NET platform would provide a great point of view in both educational and business spheres. The study confirms both the current relevance of OOP in the current software infrastructure and predisposes the chance to research the paradigm convergence, language design, and architectural resilience in the high-scale environments.

  • Research Article
  • Cite Count Icon 2
  • 10.9790/0050-03044046
The Role of Object-Oriented Programming (OOP) in Modeling of Geographic Information Systems (GIS)
  • Apr 1, 2016
  • IOSR Journal of Mobile Computing & Application
  • Onu F U + 2 more

The popularity of Geographic Information System (GIS) has grown tremendously such that software developers can no longer neglect that sector when fashioning out new technologies for software development. The concept of Object-Oriented Programming (OOP) has revolutionalised software development industry including the GIS and software modeling in general. This paper reveals how the concepts inherent in Object- Oriented Programming Languages (OOPLs) can be deployed to model a GIS software. Using materials from secondary sources and adopting a case study method, the paper unraveled the desirable features of GIS software with a view to determining the relevance of OOP in GIS modeling. Furthermore, current GIS Modeling software features were critically studied and were found to imbibe several OOP techniques and concepts. A GIS software, ArcGIS was used as a case study to reveal that GIS software models have close affinity with OOP implementation languages like C++, Java, C#. The paper concluded that OOP concepts indeed were very relevant in GIS modeling, even though some GIS related problems still needed to be fully tackled by existing software.

  • Research Article
  • Cite Count Icon 7
  • 10.1145/953051.801339
Using an effective grading method for preventing plagiarism of programming assignments
  • Feb 1, 1982
  • ACM SIGCSE Bulletin
  • C Jinshong Hwang + 1 more

The two main purposes of this paper are: 1) to discuss four commonly-used grading methods (which we shall call methods A, B, C, and D) employed with programming assignments and 2) to present by way of recommendation two experimental methods (which we shall call methods X and Y) which support our thesis that positive prevention of cheating on programming assignments through the use of an appropriately-designed grading method is far more effective than the other approaches in general use.

  • Conference Article
  • Cite Count Icon 9
  • 10.1145/800066.801339
Using an effective grading method for preventing plagiarism of programming assignments
  • Jan 1, 1982
  • C Jinshong Hwang + 1 more

The two main purposes of this paper are: 1) to discuss four commonly-used grading methods (which we shall call methods A, B, C, and D) employed with programming assignments and 2) to present by way of recommendation two experimental methods (which we shall call methods X and Y) which support our thesis that positive prevention of cheating on programming assignments through the use of an appropriately-designed grading method is far more effective than the other approaches in general use.

  • Conference Article
  • Cite Count Icon 1
  • 10.1145/3328778.3372650
When Black-box Testing is Not Enough - on Designing Auto-graded Programming Assignments
  • Feb 26, 2020
  • Karen H Jin + 1 more

Automatic programming assignment assessment is often premised on black-box testing. Grading of student submissions typically relies on functional specifications expressed in terms of expected outputs for given test inputs. Many upper-level courses, however, are centered on concepts that relate to how programs are implemented. In a course that teaches functional programming, for instance, the assignments should require that students use functional programming techniques, even if imperative solutions are supported by the language. When students are required to use certain programming language constructs, algorithms or design strategies as they implement their programs, a different approach to automated assessment is needed. Our strategy is centered on programming assignments designed in such a way that the internals of the assignment implementation can be evaluated through automated testing. A challenge of designing such auto-graded assignments is that both the specifications and the grading tests have a much higher level of complexity compared to plain functional specifications and black-box tests. The specification of a homework assignment must have precise requirements, but not prescribe a certain solution or impair student creativity. Furthermore, test cases should not inadvertently rely on implementation details that were not specified, but must be able to detect forbidden algorithms or language features. The benefits and difficulties of our approach are discussed in this work.

  • Conference Article
  • Cite Count Icon 28
  • 10.1109/latice.2016.24
A Competency Structure Model of Object-Oriented Programming
  • Mar 1, 2016
  • Matthias Kramer + 2 more

Our project COMMOOP aims to develop a competency structure model and appropriate measurement instruments for the field of object-oriented programming (OOP). We started by reviewing existing literature on competency modelling in other subject areas regarding the development methodology as well as the model structures, identified common structural elements, verified, expanded and refined these based on an extensive literature analysis on theoretical and empirical studies on teaching and learning as well as on psychological aspects in the field of OOP. As theoretically derived candidates for potential competency dimensions we identified (1) OOP content knowledge and skills, (2) mastering representation, (3) cognitive processes and (4) metacognitive processes. This theoretically derived model framework was validated based on various competency descriptions in terms of applicability and completeness. For this purpose, we identified competency descriptions related to OOP in 44 computer science curricula and standards from several countries and compared these with our model. Further, we applied it to a list of competency definitions that was extracted by a working group at the ITiCSE 2015 from 14 case studies on K12 in 12 different countries. Finally, the structure model was aligned with the results of a survey among 59 computer science teachers and teacher students on learning difficulties. At the end, it turned out that our proposed model was quite complete already.

  • Conference Article
  • Cite Count Icon 5
  • 10.1109/csci.2015.78
Towards Using Continuous Integration Tools to Teach Programming Courses
  • Dec 1, 2015
  • Erik Kral + 1 more

This work proposes a study focused on Continuous Integration (CI) tools in teaching programming courses as well as for automatically grading student assignments. There are many automatic grading tools for students' programming assignments which share most of their functionalities with CI tools. We would like to provide a methodology on how to implement this tool in teaching programming languages. We will evaluate and compare common CI tools and run experiments with students in programming courses.

  • Conference Article
  • Cite Count Icon 5
  • 10.18260/1-2--41410
Programming learners struggle as much in Python as in C++ or Java
  • Feb 6, 2024
  • Chelsea Gordon + 2 more

Many computer science instructors believe switching college-level introductory programming courses to Python, versus languages like C++, Java, or C, smooths the learning of programming, due in part to Python's syntax, dynamic types, and interpreted execution. Studies providing quantitative support for that belief are rare, in part due to the challenge of creating comparative studies without extensive confounding factors. However, today one of the top textbooks in C++, Java, and Python all happen to come from the same publisher and have similar style and content, have similar off-the-shelf programming assignments that instructors can use, incorporate a cloud-based development environment and auto-grader that records every run, and each is used by tens of thousands of students at hundreds of universities. As such, a unique opportunity exists to compare student performance data across those three languages. We obtained such data from the publisher for 56 courses that met specific criteria (18 Python, 16 C++, 22 Java) totaling 6,804 students. As a potential indicator of whether Python students had a smoother learning experience, we compared median time and number of attempts on nearly-identical off-the-shelf programming assignments across the three languages. Python students exhibited no reduction in time or attempts. Manual investigation into the students' programs suggest that problem understanding and programming logic, and not language features, may be the main hurdles to learning programming.

  • Front Matter
  • 10.1016/s1571-0661(05)80870-9
Preface: Volume 41, Issue 2
  • Jul 1, 2001
  • Electronic Notes in Theoretical Computer Science
  • Peter Sewell

Preface: Volume 41, Issue 2

  • Conference Article
  • 10.1145/800010.808097
Student help and automatic grading
  • Jan 1, 1973
  • Johannes J Martin + 1 more

The organization of a programming service course is described. The objective is combining high instructional quality with economic use of departmental resources. With undergraduate tutors who help in the classroom as well as in consulting sessions and with the help of an automatic grading system, it was possible to lower the cost to about $7 per student credit hour (quarter system) without sacrificing instructional quality. Some results obtained by automatic monitoring of the student's work on programming assignments and by interviews and questionnaires are given to back the above claim.

  • Conference Article
  • Cite Count Icon 17
  • 10.1109/fie43999.2019.9028450
Experiences With Auto-Grading in a Systems Course
  • Oct 1, 2019
  • Dhananjai M Rao

Rapidly growing computing-class sizes across college campuses are challenging instructional resources and staffing. We have developed an automatic testing and grading software system called Code Assessment Extension (CODE). It is integrated with our existing Canvas Learning Management System (LMS). This paper presents experiences from both student and instructor perspectives with using auto-grading in a junior-level, systems course with a heavy emphasis on programming in C++, with several challenges, including - 1 this course was the first experience for both the students and the instructor in using any form of automatic grading, 2 the students have limited experience with C++ programming, particularly in Linux, and 3 the course includes complex concepts on operating systems, multithreading, and networking. The paper presents quantitative results from 3,300 submissions (from 1 course, 1 semester, 6 programming assignments, 54 students, multiple submissions per-student per-assignment) and analysis of end-of-course surveys from 54 students. The inferences from the statistics strongly support the use of automatic grading systems such as CODE to enhance learning in programming-centric courses.

  • Research Article
  • 10.1145/953053.808097
Student help and automatic grading
  • Jan 1, 1973
  • ACM SIGCSE Bulletin
  • Johannes J Martin + 1 more

The organization of a programming service course is described. The objective is combining high instructional quality with economic use of departmental resources. With undergraduate tutors who help in the classroom as well as in consulting sessions and with the help of an automatic grading system, it was possible to lower the cost to about $7 per student credit hour (quarter system) without sacrificing instructional quality. Some results obtained by automatic monitoring of the student's work on programming assignments and by interviews and questionnaires are given to back the above claim.

  • Conference Article
  • Cite Count Icon 16
  • 10.1109/icodse.2014.7062687
Automatic grader for programming assignment using source code analyzer
  • Nov 1, 2014
  • Susilo Veri Yulianto + 1 more

Source code analyzer is a tool for analyzing source code that aim to improve the quality of programs in software development. This research enhanced the ability of source code analyzer for automatic grading of programming assignments. The automatic grading process runs in three phases: (a) source code analysis by source code analyzer, (b) analytical results unification, and (c) unification results assessments. Analysis unification use the XSLTtransformation process, while the assessment done by matching bugs/flaws found in the source code with a list of bugs/flaws that have been defined. This research deliver application called SCAGrader. SCAGrader consists of a Java engine application in the Java language and web-based user interface. The score obtained by giving a negative score to each bugs/flaws found in student's source code. Beside its independent capability, SCAGrader also integrated to existing blackbox autograding system by services. The other result of this study is a classification of bugs/flaws for teaching programming, based on five source code analyzers.

  • Research Article
  • Cite Count Icon 25
  • 10.1145/1269900.1268805
Interface-based programming assignments and automatic grading of java programs
  • Jun 25, 2007
  • ACM SIGCSE Bulletin
  • Michael T Helmick

AutoGrader is a framework developed at Miami University for the automatic grading of student programming assignments written in the Java programming language. AutoGrader leverages the abstract concept of interfaces, as implemented by the Java interface language construct, in both the assignment and grading of programming assignments. The use of interfaces reinforces the role of procedural abstraction in object-oriented programming and allows for a common API to all student code. This common API then enables automatic grading of program functionality. AutoGrader provides a simple instructor API and enables the automatic testing of student code through the Java languagefeatures of interfaces and reflection . AutoGrader alsosupports static code analysis using PMD [4] to detect possible bugs, dead code, suboptimal, and overcomplicated code. While AutoGrader is written in and only handles Java programs, this style of automated grading is adaptable to any language that supports (or can mimic) named interfaces and/or abstract functions and that also supports runtime reflection.

  • Conference Article
  • Cite Count Icon 61
  • 10.1145/1268784.1268805
Interface-based programming assignments and automatic grading of java programs
  • Jun 25, 2007
  • Michael T Helmick

AutoGrader is a framework developed at Miami University for the automatic grading of student programming assignments written in the Java programming language. AutoGrader leverages the abstract concept of interfaces, as implemented by the Java interface language construct, in both the assignment and grading of programming assignments. The use of interfaces reinforces the role of procedural abstraction in object-oriented programming and allows for a common API to all student code. This common API then enables automatic grading of program functionality. AutoGrader provides a simple instructor API and enables the automatic testing of student code through the Java languagefeatures of interfaces and reflection. AutoGrader alsosupports static code analysis using PMD [4] to detect possible bugs, dead code, suboptimal, and overcomplicated code. While AutoGrader is written in and only handles Java programs, this style of automated grading is adaptable to any language that supports (or can mimic) named interfaces and/or abstract functions and that also supports runtime reflection.

Save Icon
Up Arrow
Open/Close
Notes

Save Important notes in documents

Highlight text to save as a note, or write notes directly

You can also access these Documents in Paperpal, our AI writing tool

Powered by our AI Writing Assistant