Skip to main content

“Programming for Engineers”: a redesigned informatics course for first-semester civil engineering students

Project-based education Extended reality
We propose an innovative first-year programming course especially attuned to the new Bachelor of Civil Engineering starting in Fall 2022. The course is designed as a blended learning experience, with lectures, self-learning with the E-tutorials platform, and an app-programming project, the latter closely supervised by teaching assistants.

The project

In this project, we developed a new course for the first semester of the Civil Engineering Bachelor program, replacing the previous course “Informatik I” provided by D-INFK as a service lecture. The new course is taking place every year starting from HS 2022. In the context of the Innovedum project, we designed the syllabus, developed teaching material in both English and German, trained teaching assistants for the specific format of the course, and continuously improved the course over the last two iterations.

The course was redesigned in the context of the Computational Competencies initiative at D-BAUG with the goal of providing Civil Engineering graduates with more computational skills. The course is a hands-on introduction to programming with Matlab and Python, oriented at the needs of civil engineers. Borrowing didactic ideas and technical solutions from the award-winning concept developed by Lukas Fässler, Markus Dahinden and David Sichau from D-INFK, it comprises self-paced tutorials and individual meetings with teaching assistants to demonstrate understanding and progress. Furthermore, throughout the semester the students work on implementing an engineering application, starting from a basic text-based user interface and finishing with a program with graphical user interface.

Implementation into teaching practice

Our newly designed course is guided by two core principles: learning to program means “learning by doing”; students are more motivated when they see how the course content relates directly to civil engineering practice.

Approximately 50% of our students have some prior programming experience from high school, the remaining students consider themselves absolute beginners. This variation in initial level requires a certain amount of differentiated instruction.

The first part of the course covers fundamental programming concepts such as variables, loops, and functions, while the second part explores more advanced topics, including numerical algorithms, object-oriented programming, graphical user interfaces, and the transition to Python. We begin with MATLAB due to its beginner-friendly syntax and integrated development environment, which requires minimal setup, particularly when using the browser-based MATLAB Online. The emphasis throughout is on core programming principles rather than language-specific commands.

The course is structured into six modules, each lasting 2–3 weeks and consisting of several components:
● Lectures, in which new concepts are introduced. In HS 2024, we also invited two Civil Engineering alumni to share how they apply computational skills in their everyday jobs.
● An text-based self-learning E.Tutorial on the D-INFK platform. It introduces basic concepts and encourages experimentation with small code snippets in MATLAB. Advanced students may skip the tutorial.
● An exercise sheet with 2–3 tasks, offering both open-ended descriptions and step-by-step instructions to support different experience levels.
● A weekly two-hour Study Center, where teaching assistants (TAs) are available to support students with any questions related to the course.
● A 15-min individual presentation, serving as a formative assessment, where each student demonstrates their solutions to a TA. These presentations contribute to a bonus on the final grade.

Additionally, each student develops a small program addressing a relevant civil engineering problem. Students choose from four topics and are guided through the implementation process, starting from a simple text-based interface and progressing to a fully functioning graphical user interface. Presenting this project to a TA also contributes to the bonus.

All components are optional. However, we encourage the students to follow through in order to minimize preparation time for the final exam. In every year, a vast majority of students (~95%) participated in the bonus program.

Lessons learned and further impacts

The project successfully achieved its primary goal: the complete redesign of “Programming for Engineers” into a structured, hands-on course that promotes student engagement and supports diverse levels of prior experience. Despite being a mandatory first-semester course, student satisfaction levels were notably positive (as opposed to the previously existing course). The newly introduced E.Tutorials were particularly well received, providing an accessible entry point for beginners while allowing more advanced students to skip ahead as needed. Lectures were attended by around 40-50% of students, suggesting that the asynchronous, self-paced components were highly valued.

A key lesson learned is the importance of incentivizing continuous engagement. The bonus system tied to module presentations and the final app project proved to be essential: without this incentive, students were less likely to invest time in these formative learning activities. Data across semesters confirms that students who regularly completed the module presentations and the app project not only achieved higher final grades but also demonstrated deeper conceptual understanding. Notably, some of the best-performing students (6.0 grade) initially identified as beginners, highlight the course effectiveness in supporting students with no prior programming experience.

The impact on student learning was assessed through multiple sources: final exam results, the quality of module presentations, and qualitative feedback collected via surveys, individual student conversations, and reports from instructors of subsequent courses. These sources collectively indicate that students who consistently engaged with the course materials and participated in formative assessments were significantly better prepared and more confident in applying programming skills to engineering contexts.

The course format is scalable and transferable to other disciplines and student populations, provided adequate teaching assistant support for individual presentations is available. The format—structured modules, regular formative assessments, and personal interaction with TAs—has already been applied successfully in large courses by D-INFK. Its benefits include steady student engagement throughout the semester and reduced exam preparation pressure, already aligning well with PAKETH requirements.

This format requires, however, significantly more TA hours than a classical “lectures / exercise class” format, which is currently NOT funded by D-BAUG (from the TA hours yearly attributed by the Rectorate) after the Innovedum is finished. Unless the unique format of “Programming for Engineers” is recognized and the appropriate level of TA support is granted, we will need to downgrade it in the future for financial reasons.