CodeDive: A Web-Based IDE with Real-Time Code Activity Monitoring for Programming Education
Abstract
1. Introduction
- We introduce CodeDive, a novel web-based IDE that mitigates environment setup challenges while addressing the need for detailed real-time activity tracking in an era of widespread LLM use. It offers a secure, scalable, and user-friendly platform featuring containerized development environments, a browser-based VS Code interface (WebIDE), and the real-time activity tracking system, eWatcher.
- We present eWatcher, a fine-grained monitoring module that captures real-time coding behavior using eBPF and file system tracing [17]. eWatcher allows instructors to review a detailed timeline of code edits, compilations, and execution events, thereby supporting both pedagogical analysis and academic integrity investigations.
- We validate the CodeDive system through its deployment in live university courses, demonstrating its stability, scalability, and potential to enhance programming education. The system’s architecture, which integrates container orchestration, persistent storage, and secure access, provides a practical and effective solution for managing programming assignments and analyzing student learning processes.
2. Related Work
3. System Design
3.1. Design Considerations
3.2. Architecture
3.3. Key Components
3.3.1. Common Services
3.3.2. WebIDE
3.3.3. eWatcher
4. Workflows
4.1. Students
- (1)
- Portal login and initial accessStudents are required to access the CodeDive portal (Frontend) via a web browser and enter their account information on the login screen linked to their school SSO or external identity provider. The subsequent login request is directed to the CodeDive Backend, where the authentication token issued by the external SSO is verified. If verification is successful, the token is then used to retrieve the student’s profile information from the primary database. Consequently, the student is granted access to the portal dashboard, where they can view registered courses and assignments, and employ features such as “Open WebIDE”.
- (2)
- Connecting to Personal Workspace and Configuring EnvironmentWhen a student selects a particular assignment from the dashboard and clicks the “Open WebIDE” button, the CodeDive Backend performs a series of actions. Firstly, it checks the User State Manager (In-memory DB) to ascertain whether the student’s WebIDE container (workspace) is already operational. If a container is unavailable, the Instance Manager generates a new one from a standardized image. This image includes development tools, a VS Code server, and the eWatcher client. At this stage, the Persistent Volume (PV) is mounted automatically to facilitate the restoration of the source code and settings from the previous session. When the container is initiated, the CodeDive Router establishes a proxy connection between the student’s browser and the designated WebIDE instance. This feature enables the immediate use of the web-based VS Code editing interface, eliminating the need for any additional local development tool installation.
- (3)
- Coding, Execution, and Activity TrackingStudents will acquire the skills to write and edit code in the WebIDE and to execute compilation or execution commands via the terminal window. WebIDE is equipped with an auto-save feature, ensuring that any modifications made to files are seamlessly reflected in the container’s internal file system. For instance, when a student edits and saves the “main.py” file, the time of the modification is recorded. If there is no explicit save command, the system will automatically generate a snapshot of the file’s content if the user pauses typing for over one second after a file modification. This threshold was chosen by referencing the default 1000 ms setting in Visual Studio Code’s widely used Auto Save feature, which represents a well-established balance between capturing granular changes and avoiding excessive system load. Subsequently, upon selecting the “Run/Debug” button or invoking the Python main.py function in the terminal (https://www.python.org/), the eWatcher module (Collector and Analyzer) within the container gathers information regarding the initial and final times of the process, as well as the execution command. The collected events and metadata are then transmitted to the eWatcher Backend, where they are recorded in the Activity DB and Snapshots DB. These databases can then be used for subsequent analysis and visualization tasks.
- (4)
- Saving and Ending the SessionAll alterations and execution histories that transpire while the student continues coding are accumulated in real time in the database and PV through the eWatcher module. Following the termination of the task or in the event of a period of inactivity, the CodeDive Backend has the capability to initiate a stoppage of the container in accordance with the established idle policy. Note that containers shall remain operational throughout the semester unless system resources become constrained. The codes stored in the PV are permanently preserved, ensuring that when a student reconnects, the previous work environment is restored, enabling continuous work. Consequently, students can code in a consistent and stable development environment without the need for additional settings.
4.2. Professors
- (1)
- Professor Portal Login and Dashboard AccessProfessors are required to log in to the CodeDive portal with their accounts. Privileges are verified through external SSO. Upon successful authentication, CodeDive Backend facilitates the activation of the professor-only management dashboard. This dashboard provides an interface for professors to view a comprehensive list of their courses, registered assignments, and student participation status for each assignment.
- (2)
- Observation of Student Activities and Comprehensive Record AnalysisFrom the dashboard, faculty members can select specific courses or assignments to access statistics about the coding activities of participating students. The CodeDive Backend queries the eWatcher Backend and Activity DB to aggregate summary data, including the number of edits, build and execution frequency, and last login time for each student in real time. The CodeDive Backend then visualizes this data in tables or graphs. When a specific student is selected, their detailed coding logs are provided in chronological order, along with information such as the coding timeline, file size changes, and compilation and execution results. This affords professors the opportunity to meticulously analyze the patterns exhibited by students during task execution, as well as to observe the evolution of their problem-solving methodologies.
- (3)
- Plagiarism detection and feedbackProfessors employ a comparative and analytical approach to assess work patterns across a cohort of students. This assessment is informed by the aggregation of coding activity logs and the subsequent visualization of data. For instance, if the majority of students code at various times, but one student uploads a substantial amount of code in a brief period just before the deadline, this could be indicative of potential plagiarism. By leveraging coding activities, the CodeDive system provides a framework for detecting such anomalies. This empowers professors to conduct further verification or offer individualized guidance based on substantiated evidence. Furthermore, professors have the ability to employ the statistics and graphs provided on the dashboard to offer specific feedback on individual students’ coding habits and, when necessary, export data in CSV or report formats for utilization in course management and educational quality improvement.
5. Implementation Details
5.1. Kubernetes-Based Deployment
5.1.1. Deployment Method
5.1.2. Key Advantages
5.2. Snapshot and Activity Collector
5.3. Ensuring Secure Connectivity
5.3.1. JWT-Based Authentication in the Frontend
5.3.2. CodeDive Router-Based Proxy Connection
6. Implementation Results
6.1. Log and Analytics
6.1.1. Log Architecture
6.1.2. Analytics Services
6.2. User Interfaces
6.2.1. Administrator Dashboard
6.2.2. WebIDE Interface
6.2.3. Cumulative Code-Change Chart
6.2.4. Activity Timeline
6.3. Classroom Deployment
6.4. Stability and Overhead
6.5. Identifying Atypical Patterns
- Step-Function Code Growth: The total code size does not increase gradually. Instead, it grows in large, discrete steps. This pattern strongly suggests that large chunks of pre-written code were pasted into the editor, rather than being typed out incrementally.
- Lack of a Trial-and-Error Process: Despite adding over 10,000 bytes of code, the student recorded only a single build failure. The development process lacks the frequent build successes, failures, and executions that characterize a genuine problem-solving effort. This starkly contrasts with the class average, indicating an absence of a typical debugging cycle.
7. Discussion
7.1. Directions for Pedagogical Evaluation
7.2. User Data Security and Ethical Considerations
7.3. Resource Considerations and Architectural Trade-Offs
8. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
Abbreviations
IDE | Integrated Development Environment |
UI | User Interface |
eBPF | Extended Berkeley Packet Filter |
REST | Representational State Transfer |
API | Application Programming Interface |
VS Code | Visual Studio Code |
SSH | Secure Shell |
JSON | JavaScript Object Notation |
References
- Bergström, J.J.J.; Repo, V.E.; Tuunainen, V.K. Challenges to academic integrity from new tools: A survey of students’ perceptions and behaviors of employing ChatGPT. In Proceedings of the Annual Hawaii International Conference on System Sciences. Hawaii International Conference on System Sciences, Honolulu, HI, USA, 3–6 January 2024; pp. 74–83. [Google Scholar]
- Lee, V.R.; Pope, D.; Miles, S.; Zárate, R.C. Cheating in the Age of Generative AI: A High School Survey Study of Cheating Behaviors before and after the Release of ChatGPT. Comput. Educ. Artif. Intell. 2024, 7, 100253. [Google Scholar] [CrossRef]
- Khalil, M.; Er, E. Will chatgpt get you caught? rethinking of plagiarism detection. In Proceedings of the International Conference on Human-Computer Interaction, Copenhagen, Denmark, 23–28 July 2023; Springer: Berlin/Heidelberg, Germany, 2023; pp. 475–487. [Google Scholar]
- Han, S.; Zhang, Z.; Liu, H.; Kong, W.; Xue, Z.; Cao, T.; Shu, J. From engagement to performance: The role of effort regulation in higher education online learning. Interact. Learn. Environ. 2024, 32, 6607–6627. [Google Scholar] [CrossRef]
- Yang, B.; Xie, C.; Liu, T.; Xu, J.; Li, W. Exploring the relationship between teacher talk supports and student engagement from the perspective of students’ perceived care. Interact. Learn. Environ. 2024, 32, 6393–6412. [Google Scholar] [CrossRef]
- Zhang, Z.; Zhang, E.; Liu, H.; Han, S. Examining the association between discussion strategies and learners’ critical thinking in asynchronous online discussion. Think. Skills Creat. 2024, 53, 101588. [Google Scholar] [CrossRef]
- Liu, T.; Liu, H.; Yang, B.; Zhang, Z. LDCNet: Limb direction cues-aware network for flexible HPE in industrial behavioral biometrics systems. IEEE Trans. Ind. Inform. 2023, 20, 8068–8078. [Google Scholar] [CrossRef]
- Liu, H.; Liu, T.; Chen, Y.; Zhang, Z.; Li, Y.F. EHPE: Skeleton cues-based gaussian coordinate encoding for efficient human pose estimation. IEEE Trans. Multimed. 2022, 26, 8464–8475. [Google Scholar] [CrossRef]
- Liu, H.; Liu, T.; Zhang, Z.; Sangaiah, A.K.; Yang, B.; Li, Y. ARHPE: Asymmetric relation-aware representation learning for head pose estimation in industrial human–computer interaction. IEEE Trans. Ind. Inform. 2022, 18, 7107–7117. [Google Scholar] [CrossRef]
- Brown, N.C.C.; Altadmri, A.; Sentance, S.; Kölling, M. Blackbox, Five Years On: An Evaluation of a Large-Scale Programming Data Collection Project. In Proceedings of the 2018 ACM Conference on International Computing Education Research (ICER ’18), Espoo, Finland, 13–15 August 2018; ACM: New York, NY, USA, 2018; pp. 196–204. [Google Scholar]
- Lyulina, E.; Birillo, A.; Kovalenko, V.; Bryksin, T. TaskTracker-tool: A Toolkit for Tracking of Code Snapshots and Activity Data During Solution of Programming Tasks. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education (SIGCSE ’21), Virtual, 13–20 March 2023; ACM: New York, NY, USA, 2021; pp. 495–501. [Google Scholar]
- Cao, Y.; Wang, L.; Zheng, Z.; Tao, X. A Tool for Non-Intrusive and Privacy-Preserving Developers’ Programming Activity Data Collection. In Proceedings of the 2020 IEEE 44th Annual Computers, Software and Applications Conference (COMPSAC), Madrid, Spain, 13–17 July 2020; IEEE: Piscataway, NJ, USA, 2020; pp. 953–962, DevActRec. [Google Scholar]
- Price, T.W.; Hovemeyer, D.; Rivers, K.; Gao, G.; Bart, A.C.; Kazerouni, A.M.; Becker, B.A.; Petersen, A.; Gusukuma, L.; Edwards, S.H.; et al. ProgSnap2: A Flexible Format for Programming Process Data. In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE ’20), Trondheim, Norway, 15–19 June 2020; ACM: New York, NY, USA, 2020; pp. 356–362. [Google Scholar]
- Kim, Y.; Lee, K.; Park, H. Watcher: Cloud-Based Coding Activity Tracker for Fair Evaluation of Programming Assignments. Sensors 2022, 22, 7284. [Google Scholar] [CrossRef] [PubMed]
- Birillo, A.; Tigina, M.; Kurbatova, Z.; Potriasaeva, A.; Vlasov, I.; Ovchinnikov, V.; Gerasimov, I. Bridging Education and Development: IDEs as Interactive Learning Platforms. In Proceedings of the IDE @ICSE 2024 Workshop, Lisbon, Portugal, 20 April 2024; ACM: New York, NY, USA, 2024; pp. 53–58. [Google Scholar]
- The Kubernetes Authors. Kubernetes: Production-Grade Container Scheduling and Management. Latest Release v1.34.1 (as of 9 September 2025). 2025. Available online: https://kubernetes.io/ (accessed on 27 June 2025).
- McCanne, S.; Jacobson, V. The BSD Packet Filter: A New Architecture for User-Level Packet Capture. In Proceedings of the USENIX Winter 1993 Conference, San Diego, CA, USA, 25–29 January 1993; USENIX Association: Berkeley, CA, USA, 1993. [Google Scholar]
- Habibi, B.; Nakanishi, T.; Fukuda, A. Student’s Programming Activity Tracking System to Help Instructors of the Programming Exercise. In Proceedings of the 2016 IEEE Region 10 Symposium (TENSYMP), Bali, Indonesia, 9–11 May 2016; IEEE: Piscataway, NJ, USA, 2016; pp. 89–94. [Google Scholar]
- Sölch, M.; Dietrich, F.T.J.; Krusche, S. Direct Automated Feedback Delivery for Student Submissions based on LLMs. In Proceedings of the 33rd ACM International Conference on the Foundations of Software Engineering (FSE ’25), Trondheim, Norway, 23–28 June 2025; ACM: New York, NY, USA, 2025; pp. 901–911. [Google Scholar]
- Brown, A.; Green, B. CodeInsights: Monitoring Programming Students’ Progress. In Proceedings of the 17th International Conference on Computer Systems and Technologies (CompSysTech ’16), Palermo, Italy, 23–24 June 2016; pp. 375–382. [Google Scholar]
- Chen, L.; Kumar, R. TrackThinkDashboard: Understanding Student Self-Regulated Learning Workflows. arXiv 2025, arXiv:2503.19460. [Google Scholar]
- Garcia, M.; Lee, S. Design of an Online Programming Platform and a Study on Learners’ Test-Case Behaviors. Electronics 2023, 12, 4596. [Google Scholar]
- Patel, R.; Wong, L. Student Adoption and Perceptions of a Web Integrated Development Environment. In Proceedings of the 51st ACM Technical Symposium on Computer Science Education (SIGCSE ’20), Portland, OR, USA, 11–14 March 2020; pp. 1172–1178. [Google Scholar]
- Anderson, P.; Thomas, K. Real-Time Collaborative Programming in Undergraduate Education. J. Educ. Technol. 2024, 35, 78–88. [Google Scholar]
- Baker, R.S.; Brown, B.C.D. Leveraging the Integrated Development Environment for Learning Analytics. In The Cambridge Handbook of Computing Education Research; Fincher, S.A., Robins, A.V., Eds.; Cambridge University Press: Cambridge, UK, 2019; pp. 563–592. [Google Scholar]
- The Helm Authors. Helm: The Kubernetes Package Manager. Latest Release v3.16.4; Graduated CNCF Project. 2025. Available online: https://helm.sh/ (accessed on 27 June 2025).
- inotify Authors. Inotify(7): Linux Kernel File Change Notification. Linux Manual Page. 2025. Available online: http://man7.org/linux/man-pages/man7/inotify.7.html (accessed on 27 June 2025).
- Watchdog Authors. watchdog 2.1.5. PyPI Package for File System Event Monitoring in Python. 2025. Available online: https://pypi.org/project/watchdog/ (accessed on 27 June 2025).
- Keycloak Authors. Keycloak: Open Source Identity and Access Management. Latest Release 26.2.5; CNCF Incubating Project. 2025. Available online: https://www.keycloak.org/ (accessed on 27 June 2025).
Title | Web-Based IDE | Code Snapshots | Build Run History | Real-Time Monitoring | Container-Based PV Management | Secure Connectivity |
---|---|---|---|---|---|---|
Watcher [14] | O | Partial | O | O | X | Partial |
CodeBoard [15] | O | O | Limited | Partial | X | X |
Blackbox [10] | X | O | O | O | X | X |
TaskTracker [11] | X | O | O | O | X | Partial |
Eclipse-based monitoring [18] | X | O | O | O | X | X |
DevActRec [12] | X | O | O | O | X | Partial |
ProgSnap2 [13] | X | O | X | X | X | X |
DAFeeD [19] | X | Partial | X | X | X | O |
Github Codespace | O | Partial | Partial | X | X | O |
CodeDive | O | O | O | O | O | O |
Field | Description | Snapshot | Build | Execution |
---|---|---|---|---|
id | Record unique identifier | ✓ | ✓ | ✓ |
class_div | Course section/division | ✓ | ✓ | ✓ |
hw_name | Assignment name | ✓ | ✓ | ✓ |
student_id | Student number | ✓ | ✓ | ✓ |
filename | Source file name | ✓ | – | – |
cwd | Working directory | – | ✓ | ✓ |
file_size | File size (bytes) | ✓ | – | – |
binary_path | Compiler executable path | – | ✓ | – |
process_type | Execution type (e.g. python, java) | – | – | ✓ |
cmdline | Command-line string | – | ✓ | ✓ |
exit_code | Return code | – | ✓ | ✓ |
target_path | Target file path | – | ✓ | ✓ |
timestamp | Event timestamp | ✓ | ✓ | ✓ |
Metric | Snapshot | Build | Execution |
---|---|---|---|
Active Students | 95 | 95 | 95 |
Total Attempts | 24,845 | 2194 | 2124 |
Successful Attempts | — | 1618 | 2011 |
Failed Attempts | — | 576 | 113 |
Total Data Size (bytes) | 16,747,487 | — | — |
Principle | Implication for CodeDive |
---|---|
Informed Consent | Before using the system, all users (students and instructors) must be explicitly informed about what data are collected, why they are collected, and how they will be used. They must provide clear affirmative consent. |
User Rights (Access and Deletion) | The system must provide a mechanism for students to access a complete record of their collected data. Furthermore, a clear procedure must be in place for users to request the rectification or deletion of their personal data (the “right to be forgotten”). |
Access Control (Legitimate Interest) | A formal policy, guided by FERPA’s principle of “legitimate educational interest,” must be established. This policy will strictly define which roles (e.g., instructors, TAs, administrators) can access what level of data and only for specific approved pedagogical purposes such as grading and feedback. |
Data Minimization and Purpose Limitation | The system should be designed to collect only the minimum data necessary for its stated educational goals. These data must not be used for any purpose beyond what was originally specified to the user. |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2025 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Park, H.; Kim, Y.; Lee, K.; Jin, S.; Kim, J.; Heo, Y.; Kim, G.; Kim, E. CodeDive: A Web-Based IDE with Real-Time Code Activity Monitoring for Programming Education. Appl. Sci. 2025, 15, 10403. https://doi.org/10.3390/app151910403
Park H, Kim Y, Lee K, Jin S, Kim J, Heo Y, Kim G, Kim E. CodeDive: A Web-Based IDE with Real-Time Code Activity Monitoring for Programming Education. Applied Sciences. 2025; 15(19):10403. https://doi.org/10.3390/app151910403
Chicago/Turabian StylePark, Hyunchan, Youngpil Kim, Kyungwoon Lee, Soonheon Jin, Jinseok Kim, Yan Heo, Gyuho Kim, and Eunhye Kim. 2025. "CodeDive: A Web-Based IDE with Real-Time Code Activity Monitoring for Programming Education" Applied Sciences 15, no. 19: 10403. https://doi.org/10.3390/app151910403
APA StylePark, H., Kim, Y., Lee, K., Jin, S., Kim, J., Heo, Y., Kim, G., & Kim, E. (2025). CodeDive: A Web-Based IDE with Real-Time Code Activity Monitoring for Programming Education. Applied Sciences, 15(19), 10403. https://doi.org/10.3390/app151910403