We integrate Large Language Models (LLMs) seamlessly into a first-year Python course built on interactive Jupyter Notebooks. Students learn to program with AI, asking for explanations, generating and improving code segments, debugging, and documenting code, while critically evaluating when to trust or challenge results. Exercise blocks and assignments and a clear ‘AIfriendly/noAIusage’ labeling foster critical use and help to avoid the development of over-dependencies. The outcome: enhanced progress, less frustration and higher confidence, and stronger, transferable digital skills.
Implementation of the Project/Course
The project was implemented in the first-year Digital Engineering (DE) class for civil engineering students, which is an in-person, hands-on Python course aimed at building up digital competencies. Given a large number of students (~100), scalability is a core driver of the implemented teaching methods. In DE, teaching is delivered through interactive Jupyter Notebooks, utilizing JupyterHub as a platform for active learning. The course first introduces Python and its popular modules (NumPy, SciPy, Pandas, Matplotlib, etc.) without using AI assistance. Once students have acquired basic Python skills, a dedicated LLM module is introduced. This core element explains prompting strategies, demonstrates how to use generative AI via JupyterAI for repetitive and laborious tasks such as code explanation, completion, debugging, and automated documentation. From there on, students are encouraged to use genAI support but also forced to reflect on LLM-generated outputs and critically assess their correctness and relevance.
The learning experience in DE relies heavily on active learning, with minimal passive content. During class, students work synchronously through their notebooks, alternating between taught content blocks and individual exercises contextualized in civil engineering. After the introduction of LLMs, the focus is on embedding their application into the workflow. By providing JupyterAI in the JupyterHub platform, a direct model interaction for real-time support is possible. This allows students to explore content independently, receive immediate individual feedback, and thus overcome coding obstacles without waiting for instructor intervention. In addition, the notebook-based approach with embedded AI-assistance also helps while working through the exercise assignment notebooks, preventing emerging frustration from hours of debugging.
Assignments were carefully redesigned and are labeled as “AI-friendly” to encourage LLM use, while others are labeled “noAIusage” to preserve critical foundational learning. This helps students to develop an awareness of when AI can support or hinder learning. A final student survey assessed experience, efficiency gains, perceived learning depth, and concerns. While most students reported faster task completion and increased clarity, several expressed concern that frequent LLM use might reduce their own problem-solving skills. As a consequence, a course-wide “code of conduct for genAI use” was implemented to guide responsible AI usage.
The student engagement was high, driven by the novelty and usefulness of AI tools. Still, students were aware of the fact that in the final exam, no genAI support would be possible, so ultimately, they had to be able to program without it.
By addressing major challenges, such as unstructured debugging, emerging frustration with programming, and time inefficiencies, the project can be considered to be a scalable, transferable model for responsible genAI integration. It shows that AI can empower students early, but only when paired with reflection, guidance, and intentional course design.
Motivation, Project Mission, Vision Statement
This project was inspired by the observation that many students new to programming struggled with common hurdles like inefficient debugging, unstructured approaches, and low confidence. These challenges often lead to frustration, excessive working times, and reduced learning success—preventing students from realizing their full coding potential. We envisioned giving every student a personal tutor: a patient, ever-available guide who offers explanations, points out errors, and suggests improvements. Since our first-year Python course is entirely based on Jupyter Notebooks via JupyterHub, we aimed to embed this tutoring experience directly into the learning environment. Through JupyterAI, students now receive individual, real-time feedback, experiment freely, and overcome coding challenges independently. By integrating generative AI into their programming workflow for co-programming, code completion, explanation, and debugging, students gain speed, clarity, and confidence. To ensure sustainable learning and prevent over-reliance, LLM integration is not an add-on but a core, reflective component of lectures and exercises. Our mission is to empower students to use AI critically, responsibly, and creatively. Our vision is to educate engineers who combine human insight with technological competence, who are confident, reflective, and ready to co-create solutions with AI in a quickly evolving technological environment.
Innovative Elements
Today, programming education must reflect developments in generative AI to build practice-relevant competencies. Our project integrates Large Language Models (LLMs) into the DE course for civil engineering students, adding an interactive, AI-enhanced learning experience through real-time coding support. Its integration into the JupyterHub teaching environment via JupyterAI provides students with easy, seamless access to LLMs for code completion, generation, debugging, explanation, and documentation. In AI-mandatory tasks, students are trained to incorporate genAI usage for repetitive tasks into their workflow and to reflect on the capabilities of LLMs for explaining, debugging, or generating code. Coding is learned by coding, and lectures merely provide the framework. LLMs help remove obstacles that delay coding experiences, such as laborious debugging, repetitive coding, and documentation, fostering efficiency, confidence, and digital competence.
Effects on Student Learning
Insights into learning effects are based on self-declaration of exercise completion times over three semesters and student surveys. In general, implementing a course-wide code of conduct on genAI usage, along with clearly defined usage through JupyterAI, pre-defined tasks, and AI-mandatory parts in exercises, enhanced the students‘ learning experience. The number of completed exercises increased significantly, as completion times became more manageable for students. In the first year of implementation, student feedback showed both advantages and caveats. Some reported gaining faster insights with AI, while others mentioned that over-reliance on LLMs can hinder sustainable learning. This was solved by putting more emphasis on the critical and reflective use of AI. Overall, students became more attentive to the benefits and limitations of AI support and appreciated LLMs for their quick explanations and ability to handle routine tasks, allowing them to focus deeper on core content.
ETH Competence Framework
-
Method-specific
Competencies -
Personal
Competencies
The project fosters key competencies from the ETH framework. It strengthens digital literacy by enabling students to advance further in building coding competencies through the use of AI tools. Critical thinking is promoted through reflection on LLM outputs, questioning their correctness and limitations. With AI as a tutor, teaching assistant, and coding companion, students develop self-directed learning skills beyond the classroom. Finally, the reflected use of AI supports problem-solving, helping students to approach coding tasks with clarity and efficiency.
Which Elements of Your Project Would You Recommend to Others?
We recommend integrating AI broadly yet reflectively to strengthen digital literacy. Generative AI should be seen as a learning partner when used thoughtfully for specific tasks. Embedding tools, e.g., via JupyterAI, directly into coding environments provides seamless support and enhances engagement. We provide Jupyter notebooks exemplifying JupyterAI integration on GitLab. It is essential to reflect in class on the impact of using LLMs on the individual learning process when building up digital competencies. Introducing a clear code of conduct and labeling exercises as “AI-friendly” or “no-AI-usage” fosters awareness of when AI aids or hinders learning. These simple, transferable measures encourage autonomy, critical thinking, and responsible AI use across disciplines.