CodeRefinery at NLTU: practical skills for projects and research
A local workshop at Ukrainian National Forestry University brings CodeRefinery's open materials to students in Lviv, connecting collaborative development, testing and responsible AI use with skills for projects and research.
October 30, 2026 - Yuriy PaslavskyiForestry University
Lviv, Ukraine
At Ukrainian National Forestry University (NLTU) in Lviv, Ukraine, students from different years have come together to explore practices that make software more reliable, understandable and easier to develop together.
Our local workshop builds on CodeRefinery's open learning materials, with teaching in Ukrainian and a strong emphasis on practice. I organised and taught the sessions, adapting the materials for our students. The aim is to help them connect programming with skills they can apply in their own projects, future research and professional work.
Participants of the local CodeRefinery workshop at NLTU in Lviv.
From individual coding to collaborative work
We explored version control and collaboration through Git and GitHub: keeping a clear history, understanding changes and reviewing contributions to shared work. These practices help students approach software as something that other people may need to understand, maintain and extend.
Testing introduced a key principle: a program can run without errors and still produce the wrong result. Working with Python and pytest helped us discuss how to check expected behaviour and identify mistakes when code changes. We also introduced continuous integration with GitHub Actions and YAML workflows, showing how automated checks can become a regular part of development.
AI-assisted coding, including GitHub Copilot, was considered within the same framework. AI can support development, while understanding proposed changes, reviewing them and checking their behaviour remain the developer's responsibility. README documentation and software licences completed the picture: making a project understandable and clarifying how its code may be reused.
Skills that carry into projects and research
The value of these topics extends beyond the workshop. Students can apply them in coursework, team projects, research scripts and professional development. A clear history helps explain how code evolved. Tests help check calculations. Documentation helps someone else run and understand the work. Together, these habits provide a foundation for more reproducible and reusable software.
For NLTU, the initiative connects software engineering education with practices that support open research and effective teamwork. It gives students an opportunity to develop these habits early and carry them into more demanding projects as their studies progress.
Open materials, a local learning community
CodeRefinery's materials gave us a shared foundation that could be adapted to our language, schedule and students' needs. Teaching in the same classroom creates space for questions, discussion and learning across different years of study. The materials also remain available for students to revisit after the sessions.
Our aim is for the workshop to become a starting point for continued use of these practices at the university.
Acknowledgements
We thank Samantha Wittke and the CodeRefinery community for the open educational resources, encouragement and practical guidance that supported this local initiative. We also thank our university and the Department of Software Engineering for their support, and the students for their engagement and willingness to learn together.
Our experience shows one way that CodeRefinery's learning materials can reach students through local teaching. We hope it encourages other educators to explore how these resources could support their own learning communities.
Yuriy Paslavskyi — Teaching Assistant, Department of Software Engineering, Ukrainian National Forestry University, Lviv, Ukraine.

