Teach Programming Using Task-Driven Case Studies - Pedagogical Approach, Guidelines, and Implementation
Teach Programming Using Task-Driven Case Studies - Pedagogical Approach, Guidelines, and Implementation
Article
Teach Programming Using Task-Driven Case Studies:
Pedagogical Approach, Guidelines, and Implementation
Jaroslav Porubän 1, * , Milan Nosál’ 2 , Matúš Sulír 1 and Sergej Chodarev 1, *
1 Department of Computers and Informatics, Technical University of Košice, Letná 9, 042 00 Košice, Slovakia;
matus.sulir@tuke.sk
2 ValeSoft, s.r.o., Vodárenská 636/3, 040 01 Košice, Slovakia; milan.nosal@gmail.com
* Correspondence: jaroslav.poruban@tuke.sk (J.P.); sergej.chodarev@tuke.sk (S.C.)
Abstract: Despite the effort invested to improve the teaching of programming, students often face
problems with understanding its principles when using traditional learning approaches. This paper
presents a novel teaching method for programming, combining the task-driven methodology and
the case study approach. This method is called a task-driven case study. The case study aspect
should provide a real-world context for the examples used to explain the required knowledge. The
tasks guide students during the course to ensure that they will not fall into bad practices. We
provide reasoning for using the combination of these two methodologies and define the essential
properties of our method. Using a specific example of the Minesweeper case study from the Java
technologies course, the readers are guided through the process of the case study selection, solution
implementation, study guide writing, and course execution. The teachers’ and students’ experiences
with this approach, including its advantages and potential drawbacks, are also summarized.
1. Introduction
Citation: Porubän, J.; Nosál’, M.; Sulír, The efficient teaching of programming is a difficult task. Often, students know the
M.; Chodarev, S. Teach Programming principles and processes, but they are not able to use them effectively in practice. There are
Using Task-Driven Case Studies: even cases where professional developers have problems with applying basic principles,
Pedagogical Approach, Guidelines, such as inheritance or encapsulation in object-oriented design. As a reference, the work
and Implementation. Computers 2024, of Hadar analyzes the reasons why professional object-oriented programmers make bad
13, 221. https://doi.org/10.3390/ decisions although they possess the required knowledge [1]. A common reason is the
computers13090221 lack of understanding of the context and background of a given principle. A student or a
Academic Editor: Stelios Xinogalos programmer has to see the problem and then come to a solution on one’s own. By realizing
the nature of the problem and obtaining the solution only through his own work, he will
Received: 19 July 2024 better remember the solution and even the problem to which the solution applies.
Revised: 29 August 2024
Accepted: 31 August 2024 1.1. Task-Driven Teaching
Published: 5 September 2024
The task-driven teaching method is based on the constructivism teaching theory [2].
It is based on acquiring knowledge through the experience of solving tasks. A related
approach, task-centered instructional strategy, starts by presenting a series of real-world
Copyright: © 2024 by the authors.
tasks that gradually form the taught content [3].
Licensee MDPI, Basel, Switzerland. Explaining the theory in lectures is undoubtedly necessary; however, it does not
This article is an open access article provide all the understanding necessary for the application of knowledge in practice.
distributed under the terms and According to Bonwell et al., active involvement of students in the learning process increases
conditions of the Creative Commons its effectiveness [4]. While people may remember the mistakes of others, they never forget
Attribution (CC BY) license (https:// their own. Learning by doing includes learning from one’s own mistakes. Very few people
creativecommons.org/licenses/by/ can understand theory so well they will not make any mistakes when it comes to applying
4.0/). it in practice.
2. Background
Existing research related to task-driven case studies can be divided mainly into
the topics of problem-based learning, case studies, task-driven methodology, and game-
based teaching.
story represented by the case. The guidelines have many similarities with our suggestions;
for example, they suggest aligning case study segments with course learning outcomes or
assessing students continuously. On the other hand, the guidelines are quite generic and
do not assume some specific form of task design based on the case study.
Zhang et al. explore case-based teaching of a digital image processing course [17].
They find significant improvement in several learning aspects, including students’ learn-
ing interest and motivation. They also propose basic principles of case design that are
quite generic.
Ouh et al. present the application of case-based teaching in a postgraduate software
architecture course [18]. Instead of a large case study, they use smaller bullet cases and
mini-cases mainly as a way to facilitate discussion. In our case, however, a large and more
detailed case study is used and split into simpler tasks intended to be solved by students
on their own.
Varma et al. present a short analysis of using case studies in software engineering
courses [19]. They also provide a few general basic guidelines on how to prepare such
a case study. In another work, Garg et al. provide an experimental comparison of the
lecture–examination learning model and the case study method [8]. They claim that case
studies help to nurture the higher-order cognitive skills of application, analysis, evaluation,
and synthesis. In their later work, they discuss the advantages of using case studies as
assessments [20]. In our experience, we came to quite the same conclusions, and that is the
reason why case studies are used as assessments in our courses. In comparison with them,
we incorporate also guidance through the case study using tasks.
A case study in a software engineering course is described also by Jia [21]. They also
argue for case studies’ advantages in comparison with conventional teaching approaches.
Additionally, they also express the importance of the clear specification of teaching goals
that we argue for in Section 4.
Burge et al. introduce a more business-oriented case study into a software engineering
course [22]. In their work, they describe the case study and analyze the advantages of
using it in a course. Many other works argue for using case studies and large projects as
assessments. For example, experience with a case study is presented by Hilburn et al. [23].
Martin [24] and Meyer discuss the shortcomings of using introductory toy examples in
comparison with large projects [25]. Coppit argues that providing students with meaningful
development experiences in software engineering courses is essential to produce graduates
who can enter the workforce and be productive [7]. These works identify the issue with
most common academic projects so far—that projects may present a highly abstracted view
of reality and students usually focus on the project outcome (product) and not the process.
As a solution to these issues, the works argue for using case studies.
methodology in one of their courses, and based on their experience, they provide some
basic guidelines and advice about the application of the method.
Xue et al. describe the application of the task-driven methodology in information
technology courses in detail [2]. While our work focuses more on how to devise tasks and
how the tasks collaborate with case studies, Xue et al. aim more at how the task-driven
methodology can be effectively executed in information technology courses.
A study by Liu et al. shows that proper usage of tasks can result in learning benefits
for students [29]. Students’ creative thinking is cultivated; they can work independently
and at their own pace. The methodology makes hierarchical teaching more convenient
through different hierarchies of tasks. Similarly, we argue the same benefit by using tasks
with layered hints to provide control of the task difficulty.
Rosenberg-Kima et al. compare the effectiveness of two task-based approaches with
explicit instructions in an empirical study with programming novices [3]. The whole-
task strategy presents instructions in the context of the whole task, so the integration of
individual components is necessary from the beginning. The part-task strategy defines
distinctive components that are taught separately, while their integration is completely
omitted or postponed until the tasks are finished. According to the results of this controlled
experiment, students using the whole-task strategy achieved better performance and
learning transfer. This empirically confirms our intuition that incremental implementation
with a solution that is continually executable benefits students.
Liang et al. present a combination of task-driven and objective-oriented hierarchical
education methods that they use in their Linux curriculum [30]. Objective-oriented hierar-
chical education enhancement allows students to solve different tasks according to their
objectives in their studies. If the student’s objective is to become a system administrator,
he would be solving different tasks compared with a programmer. This enhancement
would apply to our method as well; however, as it is expressed in Section 9, our task-driven
case studies are already quite expensive to prepare. Making multiple versions according
to different objectives would be very costly. A viable application is to provide different
additional tasks since those are only specified as feature requirements in the problem
terminology, and they do not have to be implemented by a teacher.
Dong uses a so-called graded task-driven methodology [31]. A graded task-driven
methodology employs tasks graded based on their difficulty. Its purpose is to provide
better students with enough challenges and worse students with tasks that they would be
able to solve. These graded tasks are very similar to our idea of multilevel hints to tasks.
Birnbaum and Langmead argue that a task-driven approach is suitable for teaching
programming to digital humanities students [32]. They view it as an analogy of the task-
based method of teaching foreign languages, where, instead of focusing on comprehensive
knowledge of grammar and vocabulary, the learning is organized around communication
tasks. They suggest that this approach is suitable for students whose main area is not
computer science. While our method is focused on computer science students, its principles
are in line with the suggestions provided by Birnbaum and Langmead, including the
important role of the case study domain, or incremental development. Therefore, it can be
adapted to other study programs as well.
In comparison with all of the aforementioned works about task-driven methodology,
our task-driven case studies differ in combining the task-driven methodology with case
studies. In this combination, we wanted to give students a complex real-world environment
in a case study combined with proper guidance through tasks to teach them best practices.
games on students in learning programming [36]. Jordaan provides evidence that even
board games can improve students’ engagement in learning programming [37].
Tay et al. examine and describe game design elements needed to inhibit students’
motivation and engagement in the learning process [38]. We refer to them for some useful
guidelines on the design of a game case study. Useful information on this topic can be also
found in [39,40].
Cavalcanti et al. summarize a review of recent works in providing automatic feedback
to students in an online environment [41]. As suggested at the end of Section 8.1, task-
driven case studies open space for utilizing automatic feedback and obtaining its benefits.
large degree, the lesson can be simulated by the study guide. This proved to be very
useful during COVID restrictions.
• A study guide can be shared between universities or learning facilities.
Study guides substitute the teacher in explaining the case study (or the contents
and tasks of the lesson) to the students. The teacher can focus on explaining only the
more problematic aspects of the case study and individually helping the students with
their problems.
The tasks represent the main component of the study guides—each lesson should have
at least one task. However, they are not the sole content of them. Besides the tasks, the study
guide for each lesson provides the students with a problem definition and explanation of
the problem context, objectives of the corresponding lesson, background, reasoning, further
reading, etc. These concepts will be explained in the rest of the paper.
… …
Module n Feature k
Learning Goal n.1 Impl. Task k.1
Learning Goal n.2 Impl. Task k.2
… …
Learning Goal n.mn Impl. Task k.lk
Each course has a set of learning goals (displayed on the left side of Figure 1). For ex-
ample, the Programming Basics course could have goals such as “understand the meaning
of conditional statements” and “know how to use iterations”. Learning goals are the core
of the course. The course is usually divided into modules, where each module contains a
set of learning goals for one lesson of the course.
Everything in the course should revolve around these goals, so the case study has to
concentrate on them too. One very important issue is mapping the learning goals to the
case study tasks.
A case study solution (right side of Figure 1) consists of multiple functional features
of an implemented product. Each of these features is implemented by solving a sequence
of implementation tasks. A task is a specification of some implementation goal that has
to be achieved by a student to continue in the case study, e.g., “perform empty game field
generation” or “shuffle the field items randomly”. Each implementation task covers and
fulfills one or more learning goals. Each goal can be covered by multiple tasks. If there is a
Computers 2024, 13, 221 7 of 29
goal that is not covered by any task, we risk that the goal material will not be exercised in
full and therefore not be comprehended well.
According to our experience, it is a good practice to map each feature completely into
one module only so that the feature can be runnable after the lesson. However, this is not
always possible, but as we argue later, it is useful to have an executable solution after each
module, and mapping like this can help to achieve that.
2. Solution implementation
4. Course execution
The lifecycle starts with the case study selection phase. In this phase, the authors need
to find a suitable theme and project that is appropriate for the course. The selected project
should offer enough space to fulfill the learning goals. After the selection phase, we suggest
starting with the design and implementation of a solution to refine our understanding of
the details and find potential problems. The solution implementation phase is followed
by the writing study guides phase. After the study guides are finished, it is time to run
the course. During the execution, it is essential to collect feedback from the students and
subsequently include the suggestions and observations in the study materials and update
the implemented solution.
3.5. Guidelines
In this paper, we use our experience to extract guidelines that apply to our approach
or even to case studies or the task-driven methodology in general. The guidelines will be
backed with examples from our most mature case study—the Minesweeper from the Java
technologies course.
The guidelines are structured based on the task-driven case study lifecycle phases. We
discuss each of them in detail in the following sections. Here, however, we provide only a
summary of them in the form of lists as an overview or a checklist for course authors.
Solution Implementation
• Implement code first.
• Divide code into goals.
• Evaluate goals’ coverage.
• Find goal dependencies.
• Do the review.
Course Execution
• Monitor progress continuously.
• Favor individual achievements.
• Examine understanding.
• Get feedback from the “battlefield”.
• Update the case study.
Example: For our case, the Minesweeper case study for the Java technologies courses, we
have written down a list of learning goals that would lead to understanding the Java
language and all the fundamental Java technologies. The following list presents an excerpt
of the goals of the Java technologies course:
• Students are familiar with Java language basics.
• Students can create a project and a class in the NetBeans IDE.
• Students understand the role of interfaces in object-oriented programming.
• Students can implement existing interfaces in Java.
• Students can create their own interfaces in the Java language.
• Students are familiar with the role and types of collections in the Java language.
• Students can work with the generic ArrayList collection.
Computers 2024, 13, 221 9 of 29
• Students can use String class methods for working with strings.
• Etc.
These goals are specific and can be used later to check whether the implementation of
the case study covers all the necessary topics in the course.
Example: You can imagine that, for example, the problem of luggage transport at an airport
is not a very good choice. Most of the students never had to (or will never have to) deal
with that problem, and some of them probably never even traveled by plane. That is the
reason why we picked a Minesweeper game. Thanks to the Microsoft Windows operating
system, it is one of the most known games. We could barely find a student in the Java
technologies course who had never played Minesweeper.
Example: That is why we chose the Minesweeper game. In some of the other courses, games
are used too. For example, we used the N-Puzzle game in the .NET programming course
and Alien Breed clone in the object-oriented programming course.
Example: The solution to our Minesweeper case study is comparable to the professional
Minesweeper game (see Figure 3). Students can see that they are able to implement a
program comparable to the industry.
Computers 2024, 13, 221 10 of 29
Figure 3. Our case study solution (left) compared with Microsoft Minesweeper (right).
For example, our Minesweeper case study has a modular design that strictly separates
individual user interfaces: the console (textual) and the graphical user interface.
Example: In our Minesweeper case study, we chose the Minesweeper game because it is
small enough to be implemented by a student in the time span of the course, and yet the
result is a whole game that is comparable with industrial Minesweeper.
Example: In the Minesweeper case study, the first case study lesson introduces the
Minesweeper game. We are designing the game core together with students using standard
UML notations. During this, they are led to our source code skeleton implementing best
practices from object-oriented programming. In the next lesson, students implement the
game logic—the game field and all its behavior. So far, their solution is not playable. How-
ever, we do not wait anymore, and in the third lesson, they start implementing a simple
console user interface that would be able to present the current state of the field. Although,
after the third lesson, they cannot play the game, they can already run the game and see
whether their field generation works as it should. Since that moment, they are always able
to run the game and see the increment they add during each particular lesson.
Example: In our Minesweeper case study, we suggest that students implement some addi-
tional features that the main project does not have. An example may be implementing the
support for a simultaneous click of both mouse buttons to open also adjacent tiles and not
merely the one that the mouse points to. We also support their own ideas on how to make
the game even more interesting.
5. Solution Implementation
After a good subject for the case study was selected, in the next step, the teacher
should implement the case study himself—the solution implementation phase. It helps the
teacher to get familiar with the case study and the study solution, with all its details and
problems. The sample solution will verify if the selection was really appropriate.
Example: We implemented our own Minesweeper game before giving the case study to stu-
dents. Before using the case study approach in the Java technologies course, the Minesweeper
game was one of the examples that we used to show the students more complex examples
implemented in Java. Then we decided to prepare a case study and reworked the old
solution to incorporate all the topics of the course and to reflect our best knowledge.
Example: To explicitly record implementation objectives in the code of the Minesweeper case
study, TODO comments marked with the task identifiers were used. Each task represented
an implementation objective. We started using TODO comments because of the tool
support—see the automatically generated list of TODO comments in an IDE in Figure 4.
However, current IDEs have better support for source code annotations since they are
first-class citizens of the language. The following code is an excerpt showing a TODO
comment marking the getColumnCount() method as a part of the task identified as “getters”
in the second module (lesson) of the course.
// TODO : Task 2 - getters
/**
* Returns column count of the field .
* @return column count .
*/
public int getColumnCount () { ...
In this example, the getters task can be easily identified in the source code. The task
itself then needs to be mapped to a learning goal. In our example, it would be the goal
of the learning principles of implementing the Java Beans convention. To illustrate the
indirect mapping through tasks, Figure 5 shows relationships between the “Swing User
Interface” feature implementation tasks of the Minesweeper game and the learning goals
in the Java technologies course that spans multiple case study modules. The diagram
is an instantiation of the diagram presented in Figure 1. It shows how implementation
Computers 2024, 13, 221 13 of 29
tasks relate to learning goals. The coverage of tasks in the code is represented by code
annotations (or legacy TODO comments).
Figure 4. The projection of code division to goals using TODO comments in Minesweeper.
Figure 5. Relation between implementation tasks and learning goals in the Minesweeper case study.
Computers 2024, 13, 221 14 of 29
Example: A simple help in checking the code coverage is, for example, the Action Items
window in the NetBeans IDE (previously called the Tasks window). In Figure 4, there
is a screenshot showing the list of tasks currently present in the Minesweeper teacher’s
solution. It is easier to check the goals this way since the goals’ source code can be scattered
throughout the whole project.
In the Minesweeper case study, the students are given the code skeleton of the game
core—it is the result of object-oriented design and does not address any specific Java
technology. Thus, its creation would fit in the OOP (object-oriented programming) course,
but not in the Java technologies course.
Example: In the Java technologies course, the lectures are aligned with case study modules
so that the students always have the theoretical knowledge that is needed for the current
module of the case study. The alignment is depicted in Figure 6.
Computers 2024, 13, 221 15 of 29
Figure 6. Alignment of lectures and practical lessons in the Java technologies course.
Example: To get a better notion of how such a study guide looks, a specific example of one
lesson from the Java technologies course can be found at https://kurzy.kpi.fei.tuke.sk/
tjava-en/student/06.html (accessed on 30 August 2024).
Example: Examples of learning goals are presented in Section 4 when we discussed making
a list of the learning goals for the case study. However, there are also implementation
objectives. These are specific to each case study. For example, in the following list, there are
some implementation objectives from the Minesweeper case study.
• Students have to implement the generation of the game field.
• Students have to implement the presentation of the game field.
• Students have to implement a time-measuring feature for the game.
• Students have to implement the settings feature.
• Students have to implement a graphical user interface in Swing.
• Etc.
In Figure 7, there is a beginning of a study guide page for one of the lessons of the
Java technologies course. Each goal (objective) is mapped to one or more steps in the
instructions part, which contains explanations for students along with implementation
tasks. In the example, the first task fulfills goal numbers 1 and 2 since it implements user
interaction and uses regular expressions to achieve this.
Figure 7. An excerpt from a study guide demonstrating the relationship between goals and tasks.
Example: We use class diagrams in each module to show the difference in the program
structure before and after finishing the current lesson. In Figure 8, there is a class diagram
of the Minesweeper case study in the fifth module. The yellow classes represent the current
state, and the red ones are the increment for the fifth lesson. This helps the students to
understand how the implementation goals will be projected into the program structure.
Computers 2024, 13, 221 17 of 29
Example: In the Minesweeper case study, each step starts with an explanation of the
current situation, the problem context, and the reasoning behind it. This part of the step is
intertwined with the tasks that lead to solving the problem—each step of the module starts
with the context and reasoning, and after that, the tasks follow.
language. Near the end of the course, tasks tend to be described more briefly since students
have already gained experience.
Tasks for a single lesson should be balanced. They do not have to be of the same
difficulty, but it is important to keep the difficulty generally non-decreasing.
Example: Following is an example of a task from our Minesweeper case study that tells the
student to implement a method that will be a part of the Minesweeper marking tiles feature.
This is one of the simpler tasks from earlier lessons of this introductory Java course.
Task ( id = markTile )
Implement the void markTile ( int row , int column ) method in the Field
class . This method allows marking / unmarking tiles specified by the
row and column . In ~ case the tile is closed ( Tile . CLOSED ) , its state
will be marked ( the state will change to Tile . MARKED ) . If ~ a tile is
marked ( Tile . MARKED ) , its state will be changed to closed ( Tile .
CLOSED ) . Rows and columns are numbered from 0.
When the students would get to this task, they should already have a case study code
skeleton with a bit of their code. In the Field class, students would find the following
markTile(int row, int column) method stub:
/**
* Marks tile at specified indices .
* @param row row number
* @param column column number
*/
public void markTile ( int row , int column ) {
throw new U n s u p p o r t e d O p e r a t i o n E x c e p t i o n (" Method markTile not yet
implemented ") ;
}
This task is quite simple. However, with the case study progress, the tasks are growing
in difficulty and provide less guidance, as the students are expected to build upon the
already-passed tasks. For example, one of the latest tasks in the course requires the user to
handle best scores persistence through a database connection, as follows:
In the BestTimes class define a private void insertToDB ( PlayerTime
playerTime ) method that will store a PlayTime object in the database .
The students are also provided with a couple of general notes about creating database
connections in Java and about prepared statements with links to official documenta-
tion, but otherwise, the students have to work on their own to come up with a correct
implementation.
Students can start solving the task without looking at the comments at all (our study
guides are rendered as HTML pages, and therefore, the hints can be hidden by default).
Then, if a student finds the task too difficult, he can take a look at hints. There may be even
levels of the hints that can be later taken into consideration when the solution is graded.
For example, without using comments, a student would obtain a full number of the points,
and then looking at each comment (hint) would be penalized by subtracting some points.
Multilevel hints would allow for the finer-grained difficulty of tasks.
Example: The following is an example of a hint for the “markTile” task that was pre-
sented above. It advises using the implementation of the openTile(int row, int column)
method for inspiration. The openTile(int row, int column) method does a very similar
job and is provided to students in the Minesweeper code skeleton at the beginning of the
course. Most of the students should not have any serious problems in solving the task
without this hint. However, below-average students or programming novices may struggle
with it, and this hint should refer them to the right direction even before they will need to
ask the teacher for help.
When implementing the void markTile ( int row , int column ) method , you
can use the implementation of void openTile ( int row , int column )
method as an inspiration .
Example: In the Minesweeper case study, the implementation of new features is suggested,
such as support for a new state in marking tile—using the question mark to signify that the
user is not sure whether there is a mine or not.
Example: In the Java technologies course, we recommend the book Head First Java for further
reading. For the advanced study, Effective Java is recommended. For particular topics,
students are usually provided with links to specialized tutorials and blogs.
7. Course Execution
When the study guides are reviewed and ready, the case study can be put to use in a
course. Students are given the guides, and they have to solve the case study. The case study
is divided into modules to match the course lessons. We recommend beginning each lesson
by introducing the current objectives and the problem context. Then students should be
left to work on their own on the solution by solving tasks. The study guide should not
substitute teachers but rather help them to get more time to approach students individually.
Computers 2024, 13, 221 21 of 29
Example: In the Java technologies course, we reward finishing the Minesweeper case study
without any supplementary tasks by half of the maximum points available. The rest of the
points can be obtained through additional tasks and custom features.
Example: For our exams, an incomplete modified version of the Minesweeper solution is
used. Students get to implement some missing part where they have to use the skills they
should have acquired from the case study. The tasks are not the same as those in the case
study, but they are similar in character. The following is an example of the exam task:
Implement the processInput () method that will process input from the
console using regular expressions . After ~ the implementation , the ~ game
should be playable . After ~ each printing of the field , the ~ game would
require typing some input . The ~ input is in the same format as in the
case study : ( X ) EXIT , ( MA1 ) MARK , ( OB4 ) OPEN .
Example: One of the important feedback entries we received from the students in the Java
technologies course was the information that the task of implementing a method that
counts adjacent mines to a tile is too difficult for many students (algorithmically). It did not
look so difficult to us or our colleagues.
Example: After finding out that the implementation of counting the adjacent mines is too
difficult for the students, we decided to provide a hint to the task. If necessary, we could also
include a note in the teachers’ version of the study guide about discussing the algorithm
with students.
8. Experience
We have been successfully using case studies in our courses for over 18 years. Our first
task-driven case study started in 2006. Task-driven case studies have been used in several
different courses at our university: the Minesweeper case study in the Java technologies
course, N-Puzzle in the .NET platform programming, the Share Me case study in the
distributed programming course, Karel the Robot in the C programming course, and others.
Our point of view as teachers is presented here and supplemented by a summary of a
survey that we conducted with our object-oriented programming students.
Students see showpieces, not toy examples, and therefore, we can show them the best
practices. The case study and tasks lead them through our reasoning, so they understand
and follow our design decisions (which were verified by multiple reviews).
The teacher monitors the students’ progress, so they will not fail to deliver the
assignment because of procrastination. Since the case study is divided into relatively
balanced modules according to the number of practical lessons in the course, the teacher
can easily determine the portion of the project that is already done. Instead of vague and
ambiguous statements such as “I am working on a database layer”, they are asked about
which task they already fulfilled.
Teachers can share study guides with other universities and facilities. If the case
study is good, other educators might be interested in using the same case study in their
courses. Thanks to written study guides and pre-made teachers’ solutions, the task-driven
case study is highly reusable.
Task-driven case studies open space for tools in the process of teaching. All of the
students have to work on the same project that has a certain main skeleton that they have
to follow. Standard, non-supplementary tasks can be therefore checked automatically by a
tool; in case of standard mistakes and errors, the feedback can be provided to students; etc.
Although the method has many benefits and is worth applying in education, we are
aware of its imperfection. The drawbacks of the method are outlined in Section 9.
8.2.1. Objective
Our main goal was to answer the following research question: how do students
perceive the task-driven case study approach when applied to their course?
We used a mixed-method research approach and gathered both quantitative and
qualitative data, with a main focus on the quantitative part.
8.2.2. Method
An online questionnaire was constructed using Google Forms. It consisted of 13 single-
choice, 1 multiple-choice, and 3 open-ended questions. For a list of questions, see Table 1.
The questionnaire was sent to all second-year computer science bachelor’s degree stu-
dents who took the object-oriented programming course, where the task-driven case study
was used. They also had previous experience with this method from the programming
course. In the given semester, a portion of the students were using a more mature case
study called Text Game, specifically an adventure with a textual command-based interface.
The rest of the students used the new Alien Breed case study, which is a game with 2D
isometric graphics. Participation in the survey was voluntary; we received 112 responses
out of 180 invitations.
For single-choice and multiple-choice questions, absolute and relative numbers of
responses for each answer were computed using spreadsheets. The responses to the free-
form questions were read by one of the authors, gradually grouped into categories, and then
summarized textually.
Computers 2024, 13, 221 24 of 29
Yes 48 43
8 Was the difficulty of the tasks in the case study balanced?
No, some were too easy and some too difficult 64 57
Yes, most of the time, I just needed to repeat what 3 3
9 Were the tasks too easy?
was written
No, I usually had to think more about it 109 97
Yes, usually I understood the task without the 57 51
10 Were the tasks described clearly enough?
help of the teacher
No, often I had to ask the teacher or colleagues for 55 49
help
Would you like learning with study guides for a case study Yes 103 92
11
in future courses? * No 8 7
Limits me because I cannot do what I want 22 20
12 Do you think that working with a study guide:
Does not limit me; I still have enough space for 90 80
my individuality
I programmed mostly before the lesson 12 11
13 When did you implement the tasks for a given lesson?
I programmed during the lesson 24 21
I programmed after the lesson 76 68
Which properties of studying with study guides for a case I implemented a large project 69 62
14
study do you consider most important (choose max. 3)? I implemented a game 34 30
Thanks to the online study guide, I could work 81 72
at my own speed
I had a study guide that lad me to good practices 55 49
I worked incrementally, but the game was always 42 38
playable
15 What did you like about practical lessons in the OOP course?
16 What did you dislike about practical lessons in the OOP course?
17 What would you change or improve about practical lessons in the OOP course?
* One of the respondents did not choose any response for this question.
Computers 2024, 13, 221 25 of 29
8.2.3. Results
The results for individual questions are displayed in Table 1. In the rest of the sec-
tion, the results concerning the individual aspects related to task-driven case studies will
be summarized.
Motivation, particularly intrinsic motivation, is an important aspect of learning effi-
ciency [48]. Although the task-driven case study approach is not limited to games, they
represent an interesting topic for a case study. Indeed, 92% of the students stated that they
like learning by implementing a game in contrast with other types of applications, as can
be seen in question 1. In question 3, the majority of the participants (78%) responded that
they would show their game to a friend or family members, which could be one of the
motivational factors to implement the application with their best effort.
Question 3 also emphasizes the need to implement a project in industrial quality and
in a well-known domain. Here, we analyzed also responses for the Text Game and Alien
Breed case studies individually. While, for the former, only 67% of the students would
present their solution to other people, for Alien Breed, this number reached 81%. Text
Games are less known nowadays, while Alien Breed represents a genre of graphical action
games that many people recognize. Students also believe that graphical applications are
more relevant to their future jobs in the industry. Similar results were achieved in question
2, where the students also preferred Alien Breed: 41% perceived their creation as above
average or excellent, and only 11% in the case of Text Game.
The importance of showing the whole process and not using toy examples was
confirmed by questions 4 and 5. Three-quarters of the students preferred one large project
instead of multiple small independent tasks. A total of 81% thought that they understood
programming principles better by using this approach.
Questions 6 and 11 were focused on task-oriented study guides. A vast majority of
the students (87%) preferred guides leading them through the process of project implemen-
tation in contrast with receiving only instructions at the beginning. Furthermore, 92% of
the participants would like to use task-driven study guides in future courses.
Since dependencies between lessons are present in task-oriented case studies, stu-
dents should finish previous modules to continue with the next one. For 43% of the
students, this presented a problem sometimes, while 57% did not encounter any difficulties
with lesson dependencies. This should be taken into account by the instructors, e.g., by
reminding the students of this fact periodically and by continuously checking the progress.
In questions 8 to 10, the quality of tasks and their descriptions was evaluated. More
than half (57%) of the students did not consider the tasks well balanced. However, this is not
a crucial property of task design, although it can make solving them more manageable. Only
3% thought the tasks were too easy, and they just needed to read the provided study guides
leading them through the whole process and repeat the instructions in their own projects
without considerable thinking effort. According to half of the students (51%), the instructions
were clear enough to proceed without help, while the rest had to ask the teacher or colleagues
additional questions. We think that the clarity of tasks could be improved by providing
multilevel hints (additional hints with gradually more detailed information) in the future.
We were also interested in whether the study guides did not limit the students’ cre-
ativity. According to the results of question 12, the majority of the students (80%) thought
that the guide still left enough space for their individuality. This could be attributed also to
the possibility of own extensions and enhancements in addition to the mandatory tasks.
The importance of individual progress speed was evaluated in question 13. Since the
study guides with complete instructions are available online, the students can program not only
during the lesson (21%) but also before it (11%) or after it (68%). The last option was popular
because students often prefer to work in their home environment with their own equipment,
and they are frequently unable to fully finish all tasks during the time of the lesson itself.
Summing up, the task-driven case study method is popular among students, with a
vast majority desiring to apply it also in their future courses. Care must be taken mainly to
describe the tasks clearly and provide additional hints if necessary.
Computers 2024, 13, 221 26 of 29
9. Potential Drawbacks
There are also some potential drawbacks to using task-driven case studies. Along with
the drawbacks that we experienced, our approaches to decrease their effect are presented.
Case study costs—one of the most significant reasons against using a task-driven
case study is the costs of preparing and evolving such a case study. Preparing a good
task-driven case study is time-consuming.
One of the problems causing the increase in costs is the relationship between the
teacher’s solution and the study guides. Working on the two resources simultaneously is
more complicated due to synchronization. We have proposed a solution using source code
annotations to define tasks in the teacher’s solution and to generate the contents of the
study guides from these annotations. More about this work can be found in [49].
Task difficulty—balancing the difficulty of the tasks is really hard. They cannot be too
challenging so that all students would be able to solve them. On the other hand, the tasks
cannot be so easy that the case study would not become a simple tutorial. Our experience
is that sometimes a good difficulty can be achieved only after trying a case study during a
course and obtaining feedback from students (in Section 8, our experience with the find
adjacent mines method was mentioned).
In Section 6, we mentioned comments with hints that can help you in dealing with
this issue.
Creativity—in our approach, all students work on the same case study, and the whole
process is controlled by the study guides and teachers. From this view, it may look like the
creativity of students is impeded.
We deal with this issue by trying to find a balanced ratio of mandatory tasks and
additional tasks.
Strong dependencies—the lessons usually strongly depend on each other. If a student
misses a lesson for some reason (e.g., sickness), he cannot continue without solving the
missed lesson. It is not possible to start solving the current lesson unless the source code
from the previous lesson is finished. In our experience, when students decide to take a
longer break, it is really hard for them to get working again.
To keep them working continuously through the course, their progress at every lesson
is monitored, and when we see that they are behind, we try to find out why and help them
catch up.
Instant execution—in some case studies, it is not possible to achieve program exe-
cutability after every lesson. In our experience, a runnable version after each lesson acts
as a motivational factor. Having an executable program allows them to check for possible
mistakes and differences between the requirements and their solutions.
When there is no way to make some lesson content executable, we suggest providing
students at least with unit tests that would give them feedback about whether their solution
to the lesson’s task is correct. Besides the advantage of executability, unit tests mimic the
real industrial process.
To deal with this issue, there is an alternative to the incremental approach. The differ-
ential approach gives a whole solution to students from the very beginning. However, the
solution is provided as a black-box library. Throughout the lessons, they are given new
libraries, each one missing more from the implementation. The students’ task is to imple-
ment the missing part. This way, the solution is runnable after each lesson. However, this
approach has its issues too. Here, part of the motivational factor is lost since, after each
lesson, they do not see anything new—the solution is always the same, and changing is
merely a ratio of their implementation to the library.
In practice, we use a rather combined approach. Students are building the solution
incrementally, but to speed up the parts that would make a lesson inexecutable, students
are provided with some code written by a teacher. When one builds a real-scale application,
he cooperates on it with other developers, and the teacher’s source code mimics this.
Plagiarism—plagiarism and cheating are not exclusive problems of the case studies.
However, since there is usually only one case study per course, it is easier for students
Computers 2024, 13, 221 27 of 29
to obtain a solution from older students or their peers. It would be possible to prepare
multiple case studies to teach the same goals, but yet one good case study is an expensive
and challenging task for a teacher.
Furthermore, case studies sometimes make it more difficult to decide what constitutes
plagiarism. Students’ solutions use the same skeleton, and some methods are so simple that
it is not easy to write completely new implementations even when a student works alone.
To some degree, it is possible to apply traditional preventive and repressive measures
for plagiarism, such as more frequent checking of the students’ progress or automated
similarity checks.
10. Conclusions
While both case studies and the task-driven methodology are well-known teaching
approaches, their combination is our contribution. This paper represents an introduction to
task-driven case studies. It identifies its lifecycle and shows the proper relationship between
the case study and the goals of a course. In our experience, case studies combined with the
task-driven methodology have proven themselves a worthwhile approach to teaching. We
have backed our experience also with a survey with students, who appreciated also the
study guides that are an integral part of the method.
An important part of the paper is guidelines for preparing and executing a task-driven
case study. These guidelines are extracted from our experience with using task-driven case
studies over multiple years. They should be useful for teachers that start with our method,
but many of them can be used also in the context of teaching in general.
Although we were able to devise an effective approach to teaching, there is still a
lot of space for improvement. Section 9 mentioned multiple problems with task-driven
case studies. We have already made some progress in the case study costs, which was
published in one of our previous papers [49]. However, there is still an important problem
with the definition of tasks, which was identified by the survey too. In this matter, we plan
to experiment with multilevel hints. Additional quantitative evaluation is also one of the
tasks for future research.
Author Contributions: Conceptualization, J.P. and M.N.; methodology, M.N.; software, J.P., M.N.,
and S.C.; validation, M.S. and M.N.; formal analysis, M.S.; investigation, M.N.; resources, J.P.; data
curation, M.N.; writing—original draft preparation, J.P., M.N., M.S., and S.C.; writing—review and
editing, J.P., M.N., M.S., and S.C.; visualization, M.N.; supervision, J.P.; project administration, J.P.;
funding acquisition, J.P. All authors have read and agreed to the published version of the manuscript.
Funding: This research was funded by VEGA No. 1/0630/22 Lowering Programmers’ Cognitive
Load Using Context-Dependent Dialogs.
Institutional Review Board Statement: Not applicable.
Informed Consent Statement: Not applicable.
Data Availability Statement: The anonymized results of a survey with students are available in the
public repository at https://doi.org/10.17605/OSF.IO/WT7C4 (accessed on 30 August 2024).
Conflicts of Interest: Author Milan Nosál’ was employed by the company ValeSoft, s.r.o. The
remaining authors declare that the research was conducted in the absence of any commercial or
financial relationships that could be construed as a potential conflict of interest.
References
1. Hadar, I. When intuition and logic clash: The case of the object-oriented paradigm. Sci. Comput. Program. 2013, 78, 1407–1426.
[CrossRef]
2. Xue, J.; Zhang, L. Application of task-driven approach in information technology education. In Proceedings of the International
Conference on Electrical and Control Engineering 2011, 2011, ICECE 2011, Yichang, China, 6–18 September 2011; pp. 2024–2026.
[CrossRef]
3. Rosenberg-Kima, R.B.; Merrill, M.D.; Baylor, A.L.; Johnson, T.E. Explicit instruction in the context of whole-tasks: The effectiveness
of the task-centered instructional strategy in computer science education. Educ. Technol. Res. Dev. 2022, 70, 1627–1655. [CrossRef]
Computers 2024, 13, 221 28 of 29
4. Bonwell, C.C.; Eison, J.A. Active Learning: Creating Excitement in the Classroom; ASHE-ERIC Higher Education Report No. 1;
School of Education and Human Development, The George Washington University: Washington, DC, USA, 1991.
5. Anwar, S. Use of engineering case studies to teach associate degree electrical engineering technology students. In Proceedings of
the 31st Annual Frontiers in Education Conference, Washington, DC, USA, 10–13 October 2001; Volume 3, pp. 8–10. [CrossRef]
6. Nilson, L.B. Teaching at Its Best: A Research-Based Resource for College Instructors; John Wiley & Sons: Hoboken, NJ, USA, 2010.
7. Coppit, D. Implementing large projects in software engineering courses. Comput. Sci. Educ. 2006, 16, 53–73. [CrossRef]
8. Garg, K.; Varma, V. A Study of the Effectiveness of Case Study Approach in Software Engineering Education. In Proceedings
of the 20th Conference on Software Engineering Education Training, Dublin, Ireland, 3–5 July 2007; CSEET ’07; pp. 309–316.
[CrossRef]
9. Daun, M.; Salmon, A.; Tenbergen, B.; Weyer, T.; Pohl, K. Industrial case studies in graduate requirements engineering courses:
The impact on student motivation. In Proceedings of the 2014 IEEE 27th Conference on Software Engineering Education and
Training (CSEE&T), Klagenfurt, Austria, 23–25 April 2014; pp. 3–12. [CrossRef]
10. Porubän, J.; Nosál’, M. Practical experience with task-driven case studies. In Proceedings of the 2014 IEEE 12th IEEE International
Conference on Emerging eLearning Technologies and Applications (ICETA), Stary Smokovec, Slovakia, 4–5 December 2014;
pp. 367–372. [CrossRef]
11. O’Grady, M.J. Practical Problem-Based Learning in Computing Education. Trans. Comput. Educ. 2012, 12, 10:1–10:16. [CrossRef]
12. Leijon, M.; Gudmundsson, P.; Staaf, P.; Christersson, C. Challenge based learning in higher education– A systematic literature
review. Innov. Educ. Teach. Int. 2021, 59, 1–10. [CrossRef]
13. Abdul Ghani, A.; Fuad, A.; Yusoff, M.S.B.; Hadie, S.N.H. Effective Learning Behavior in Problem-Based Learning: A Scoping
Review. Med Sci. Educ. 2021, 31, 1199–1211. [CrossRef] [PubMed]
14. Pérez, B.; Rubio, A.L. A Project-Based Learning Approach for Enhancing Learning Skills and Motivation in Software Engineering.
In Proceedings of the 51st ACM Technical Symposium on Computer Science Education, New York, NY, USA, 11–14 March 2020;
SIGCSE ’20; pp. 309–315. [CrossRef]
15. Cico, O.; Jaccheri, L.; Nguyen-Duc, A.; Zhang, H. Exploring the intersection between software industry and Software Engineering
education - A systematic mapping of Software Engineering Trends. J. Syst. Softw. 2021, 172, 110736. [CrossRef]
16. Grimes, M.W. The Continuous Case Study: Designing a Unique Assessment of Student Learning. Int. J. Teach. Learn. High. Educ.
2019, 31, 139–146.
17. Zhang, X.; Zhang, B.; Zhang, F. Student-Centered Case-Based Teaching and Online–Offline Case Discussion in Postgraduate
Courses of Computer Science. Int. J. Educ. Technol. High. Educ. 2023, 20, 6. [CrossRef]
18. Ouh, E.L.; Irawan, Y. Applying Case-Based Learning for a Postgraduate Software Architecture Course. In Proceedings of the
2019 ACM Conference on Innovation and Technology in Computer Science Education, Aberdeen Scotland, UK, 15–17 July 2019;
pp. 457–463. [CrossRef]
19. Varma, V.; Garg, K. Case studies: The potential teaching instruments for software engineering education. In Proceedings of
the Fifth International Conference on Quality Software, 2005, QSIC 2005, Melbourne, VIC, Australia, 19–20 September 2005;
pp. 279–284. [CrossRef]
20. Garg, K.; Varma, V. Case Studies as Assessment Tools in Software Engineering Classrooms. In Proceedings of the 22nd Conference
on Software Engineering Education and Training, Hyderabad, India, 17–20 February 2009; CSEET ’09; pp. 8–11. [CrossRef]
21. Jia, Y. Improving software engineering courses with case study approach. In Proceedings of the 5th International Conference on
Computer Science and Education 2010, Hefei, China, 24–27 August 2010; ICCSE 2010; pp. 1633–1636. [CrossRef]
22. Burge, J.; Troy, D. Rising to the Challenge: Using Business-Oriented Case Studies in Software Engineering Education. In
Proceedings of the 19th Conference on Software Engineering Education and Training, Turtle Bay, HI, USA, 19–21 April 2006;
pp. 43–50. [CrossRef]
23. Hilburn, T.; Towhidnejad, M.; Nangia, S.; Shen, L. A Case Study Project for Software Engineering Education. In Proceedings of
the 36th Annual Frontiers in Education Conference, San Diego, CA, USA, 27–31 October 2006; pp. 1–5. [CrossRef]
24. Martin, F. Toy Projects Considered Harmful. Commun. ACM 2006, 49, 113–116. [CrossRef]
25. Meyer, B. Software engineering in the academy. Computer 2001, 34, 28–35. [CrossRef]
26. Yu, D.; Wang, Q. Task-Driven Method in Practical Teaching of Software Engineering. In Proceedings of the Third Pacific-Asia
Conference on Circuits, Communications and System 2011, Wuhan, China, 17–18 July 2011; PACCS 2011; pp. 1–3. [CrossRef]
27. Xie, C.; Wang, M.; Hu, H. Effects of Constructivist and Transmission Instructional Models on Mathematics Achievement in
Mainland China: A Meta-Analysis. Front. Psychol. 2018, 9, 1923. [CrossRef] [PubMed]
28. Peng, W.; Jingjing, X. The implementation and harvests of task-driven in basic computer education at university. In Proceedings
of the International Conference on E-Health Networking, Digital Ecosystems and Technologies 2010, Shenzhen, China, 17–18
April 2010; EDT 2010; Volume 2, pp. 311–314. [CrossRef]
29. Liu, H.H.; Su, Y.S. Effects of Using Task-Driven Classroom Teaching on Students’ Learning Attitudes and Learning Effectiveness
in an Information Technology Course. Sustainability 2018, 10, 3957. [CrossRef]
30. Liang, L.; Deng, X.; Liu, Q. Task-driven and objective-oriented hierarchical education method: A case study in Linux curriculum.
In Proceedings of the IEEE International Symposium on IT in Medicine and Education 2008, Xiamen, China, 12–14 December
2008; ITME 2008; pp. 316–318. [CrossRef]
Computers 2024, 13, 221 29 of 29
31. Dong, Y. A Graded Task-driven Methodology for Computer Science Education. In Proceedings of the Second International
Workshop on Education Technology and Computer Science 2010, Wuhan, China, 6–7 March 2010; ETCS 2010; Volume 3,
pp. 654–656. [CrossRef]
32. Birnbaum, D.J.; Langmead, A. Task-Driven Programming Pedagogy in the Digital Humanities. In New Directions for Computing
Education; Fee, S.B., Holland-Minkley, A.M., Lombardi, T.E., Eds.; Springer International Publishing: Cham, Switzerland, 2017;
pp. 63–85. [CrossRef]
33. Martinez, L.; Gimenes, M.; Lambert, E. Entertainment Video Games for Academic Learning: A Systematic Review. J. Educ.
Comput. Res. 2022, 60, 1083–1109. [CrossRef]
34. Mayer, R.E. Computer Games in Education. Annu. Rev. Psychol. 2019, 70, 531–549. [CrossRef] [PubMed]
35. Zhan, Z.; He, L.; Tong, Y.; Liang, X.; Guo, S.; Lan, X. The effectiveness of gamification in programming education: Evidence from
a meta-analysis. Comput. Educ. Artif. Intell. 2022, 3, 100096. [CrossRef]
36. Papadakis, S. Evaluating a Game-Development Approach to Teach Introductory Programming Concepts in Secondary Education.
Int. J. Technol. Enhanc. Learn. 2020, 12, 127–145. [CrossRef]
37. Jordaan, D.B. Board Games in the Computer Science Class to Improve Students’ Knowledge of the Java Programming Language:
A Lecturer’s Perspective. In Proceedings of the 2nd International Conference on Education and Multimedia Technology,
New York, NY, USA, 2–4 July 2018; ICEMT ’18; pp. 1–4. [CrossRef]
38. Tay, J.; Goh, Y.M.; Safiena, S.; Bound, H. Designing digital game-based learning for professional upskilling: A systematic literature
review. Comput. Educ. 2022, 184, 104518. [CrossRef]
39. Díaz, J.; López, J.A.; Sepúlveda, S.; Ramírez Villegas, G.M.; Ahumada, D.; Moreira, F. Evaluating Aspects of Usability in Video
Game-Based Programming Learning Platforms. Procedia Comput. Sci. 2021, 181, 247–254. [CrossRef]
40. Lindberg, R.S.N.; Laine, T.H.; Haaranen, L. Gamifying programming education in K-12: A review of programming curricula in
seven countries and programming games. Br. J. Educ. Technol. 2019, 50, 1979–1995. [CrossRef]
41. Cavalcanti, A.P.; Barbosa, A.; Carvalho, R.; Freitas, F.; Tsai, Y.S.; Gašević, D.; Mello, R.F. Automatic feedback in online learning
environments: A systematic literature review. Comput. Educ. Artif. Intell. 2021, 2, 100027. [CrossRef]
42. Mingins, C.; Miller, J.; Dick, M.; Postema, M. How We Teach Software Engineering. JOOP 1999, 11, 64–66.
43. Nuci, K.P.; Tahir, R.; Wang, A.I.; Imran, A.S. Game-Based Digital Quiz as a Tool for Improving Students’ Engagement and
Learning in Online Lectures. IEEE Access 2021, 9, 91220–91234. [CrossRef]
44. Shaw, M. Software Engineering Education: A Roadmap. In Proceedings of the Conference on The Future of Software Engineering,
New York, NY, USA, 8–13 November 2000; ICSE ’00; pp. 371–380. [CrossRef]
45. Nosál’, M.; Sulír, M.; Juhár, J. Source code annotations as formal languages. In Proceedings of the 2015 Federated Conference on
Computer Science and Information Systems (FedCSIS), Lodz, Poland, 13–16 September 2015; pp. 953–964. [CrossRef]
46. Diaz, C. Using static site generators for scholarly publications and open educational resources. Code4Lib J. 2018.
47. Leinonen, J.; Denny, P.; Whalley, J. A Comparison of Immediate and Scheduled Feedback in Introductory Programming Projects.
In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education—Volume 1, New York, NY, USA, 2–5
March 2022; SIGCSE 2022; pp. 885–891. [CrossRef]
48. Kian, T.W.; Sunar, M.S.; Su, G.E. The Analysis of Intrinsic Game Elements for Undergraduates Gamified Platform Based on
Learner Type. IEEE Access 2022, 10, 120659–120679. [CrossRef]
49. Porubän, J.; Nosál’, M. Generating Case Studies from Annotated Sources Codes. J. Comput. Sci. Control Syst. 2013, 6, 81–86.
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual
author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to
people or property resulting from any ideas, methods, instructions or products referred to in the content.