Who is Markus Borg?
I’m a researcher at the intersection of software engineering and
applied artificial intelligence. I work at RISE Research Institutes of
Sweden, and I teach at the Lund University as an adjunct lecturer. My
first engineering job was in process automation. I returned to the
university after a few years to pursue a PhD in software engineering.
My primary research interests are related to software engineering for
systems that rely on machine learning. Many projects right now deal
with requirements engineering and testing of critical systems that
must constitute “trustworthy AI,” e.g., automotive systems.
Tell us a bit about your class?
It is an introductory software engineering course that acts as a
gateway to more advanced elective SE courses. The curriculum includes
brief introductions to development processes, requirements
engineering, software design, and software testing. Students practice
programming in an IDE, git, test automation, writing technical
documentation, formal inspections, developing a business plan, and
working in a team. The backbone of the course is a small end-to-end
development project done in groups of six students. Each group
develops a robot for the programming game Robocode, and we host a
tournament in the end. The twist is that no group is allowed to field
their own robot in the tournament. Instead, groups offer their robots
on the “open market” and purchase other robots to compose a successful
team. This sets up a market-driven development context that is more
interesting than the bespoke development context that we typically see
in university courses. Student groups must try to position themselves
on the market and pitch their robot. In the end, we give three
different awards. Student groups can 1) win the tournament, 2) end up
as the most profitable group on the market, and 3) develop the robot
that ended up as the most valuable during the tournament. The
gamification leads to student engagement. I’ve written more about it
in a paper.
What are the main challenges in software projects?
Software engineering is a creative human activity. The biggest
challenges boil down to human factors. Technology is complex too, of
course, but the biggest challenges are related to aligning the
involved engineers – both in time and space. We’re getting better at
aligning distributed developers. The time dimension, however, remains
tricky. Software systems evolve for years, perhaps decades. Humans
don’t remember what we had for dinner three days ago. We need tools
supporting collaboration, communication, and comprehension. When we
support these three C-words, the technical challenges will find their
solutions.
Markus Borg, RISE Research Institutes of Sweden
How does your course prepare the students for these challenges?
The course is a typical 101 course, a first encounter of software
engineering. The students have taken some programming courses before
but never worked together in teams. We work in small teams of six
students for two months – but this small setting is still enough to
experience some of the human issues. If you never contributed to a
shared code repository before, this is a big step. Prior to this
course, the students have done some pair programming and joint lab
exercises. A majority of the students have never used git before. The
approach in the course is that we expose the student teams to a
small-scale software engineering project. We discuss what is going on,
what the main challenges tend to be, and how to mitigate them. When
specific issues pop up, we illuminate them and try to maximize
learning. All this requires continuous monitoring of the development
process. We set up a continuous integration environment for the
student teams and do our best to stay on top of the activity. We
encourage the students to communicate using Slack. This helps the
supervisors to follow the discussions. This has worked particularly
well during the pandemic actually. Most work is done by distributed
teams of students, and more communication happens in Slack
channels.
How are your students using CodeScene?
We use CodeScene for gamification and visualization. First, CodeScene
contributes nicely to the gamification approach we rely on in the
course. We use CodeScene’s code health badge on our CI dashboard to
encourage the students to maintain high-quality source code. Getting
such an explicit assessment motivates the students to investigate code
smells and refactoring accordingly. Second, we use the visualizations
provided by CodeScene during supervision meetings. Visualizations of
hotspots and code health are intuitive. I like them as a backdrop when
meeting with student teams. When both supervisors and students rest
their eyes on the same visualizations, it is easier to guide
discussions around the source code repository. I find that the
importance of source code visualization in teaching has been amplified
during all the screen-sharing sessions we’ve had throughout the
pandemic.
Rating and analyzing the code.
ABOUT MARKUS BORG
Markus is a researcher at the intersection of software
engineering and applied artificial intelligence. He works at RISE
Research Institutes of Sweden, and teaches a gamified project
course at Lund University as an adjunct lecturer.
Read more about the course here ->
Throughout the course, CodeScene is used for gamification and
visualization. CodeScene’s code health badge is used to encourage
the students to maintain high-quality source code. The
visualizations provided by CodeScene are used during supervision
meetings.
Key Insights were gathered from:
Code Health Status Badges
Hotspot and code health visualizations
Key Results Achieved:
Students were motivated to investigate code smells and
refactoring opportunities.
More productive discussions led around the source code repository
with the help of hotspot visualizations.
More productive screen-sharing sessions throughout the pandemic
with the help of visualizations.
If you’re interested in learning more about CodeScene, please reach
out to sales@codescene.com