Exploring AI-Supported Coding in Engineering Education: Integrating LLMs with JupyterHub
Generative AI is changing how we code — but how can it be used responsibly in teaching? In the Digital Engineering course, students first master Python basics in JupyterHub before exploring AI support for debugging, code completion, and documentation. The result: more efficient programming, deeper reflection, and valuable discussions about when not to use AI.
Coding as a Gateway — and a Hurdle
Programming has become a core skill in engineering education, but it remains a challenge for many students. The Innovedum project Application of Large Language Models (LLM) in Digital Engineering, led by Dr. Falk Wittel (D-BAUG), explores how generative AI can serve as a coding companion — not a crutch. The goal: to help students work more efficiently while also reflecting critically on when AI support strengthens, and when it weakens, their learning.
Balancing Basics and AI Support
The Digital Engineering course introduces Python and scientific libraries (NumPy, Pandas, Matplotlib, SciPy) before turning to AI. Students reported that these initial sessions without AI were particularly valuable for building foundational skills and confidence.
Only later were LLMs introduced — as helpers for common hurdles such as debugging, code completion, and documentation. Students could interact with GPT models directly inside Jupyter notebooks, effectively turning them into personal AI tutors. Assignments were redesigned to integrate AI meaningfully, while also highlighting situations where not using AI was essential for deeper learning.
Student Experiences
- Survey results revealed a nuanced picture:
- Efficiency: Students appreciated LLMs for quick explanations, code generation, and routine tasks.
- Depth of learning: Some students noticed that heavy reliance on AI could reduce how deeply they understood concepts.
- Value of non-AI phases: Building skills without AI was seen as indispensable.
- Critical awareness: Students became more attentive to the benefits and limits of AI support.
Why This Matters
This project demonstrates how JupyterHub can serve as a hub for both coding and AI integration in teaching at ETH. By lowering technical barriers, it allows educators to experiment with innovative approaches. Students left the course with two complementary skills: the confidence of mastering programming fundamentals, and the competence to use AI tools responsibly in their future practice.
As AI becomes part of everyday engineering workflows, initiatives like this help students not only to use AI effectively but also to reflect critically on its impact — a competency as important as coding itself.
JupyterHub as a teaching platform
The smooth integration of AI into the course was also made possible by ETH’s JupyterHub infrastructure, which supports both teaching and learning:
- JupyterLab in the browser: Easy access via Moodle, no installation required.
- Assignments and feedback: Teachers distribute, collect, and grade notebooks directly in Moodle.
- Automatic feedback: OtterGrader provides instant feedback and automated grading.
- Git integration: nbgitpuller keeps course materials up to date.
- Built-in JupyterAI: Preconfigured access to GPT models enables AI-assisted coding directly in the notebooks.
Links and Downloads
- Innovedum project description
- Wittel, F. K., & Maas, J. M. (2024). AI-Driven Digital Competencies in Engineering Education: A Notebook-based Teaching Approach. Proceedings of the 52nd Annual Conference of SEFI, Lausanne, Switzerland.
- Wittel, F. K., & Maas, J. M. (2024). Collection of 3 Python Jupyter Notebooks for introducing Large-Language-Models in a Python programming lecture for engineers. GitLab Repository
- ETH JupyterHub service
- JupyterHub, Moodle & Git The first draft of this post was created with the help of OpenAI’s ChatGPT.