Teach Programming Using Task-Driven Case Studies: Pedagogical Approach, Guidelines, and Implementation
Abstract
:1. Introduction
1.1. Task-Driven Teaching
1.2. Case Studies
1.3. Task-Driven Case Studies
2. Background
2.1. Problem-Based Learning
2.2. Case Studies in Teaching
2.3. Task-Driven Teaching Methodology
2.4. Games in Teaching and Automatic Feedback
3. Task-Driven Case Studies’ Pedagogical Framework
- Case study, a realistic project providing an opportunity to showcase most of the learned topics.
- Tasks defined in the context of the selected case study and corresponding to the learning objectives of the course.
- Written study guides, explaining the case study, leading students through the tasks, and providing enough context and explanation.
3.1. Reasons to Use Tasks
- We want to make sure that students are active during lessons. Both the teacher and the students are reminded that practical lessons should revolve around the students working and not the teacher lecturing.
- We want the student to use best practices while working. Finer-grained tasks help us to keep the student on the right track. In learning, the process is more important than the result.
- Instead of only showing the process and the students repeating after the teacher, we use task-driven case studies to make them try the process by themselves. Then it is harder to forget about the details.
3.2. Role of Written Study Guides
- A written form of the guide allows students to work at their own speed. If there is something unclear, they can get back to it anytime.
- Students can continue working at home without any impedance. If a student is unable to come to the lesson, he misses only individual consultations with a teacher. To a 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.
3.3. Course and Case Study Relationship
3.4. Task-Driven Case Study Lifecycle
3.5. Guidelines
- Selection of the Case Study
- Know the learning goals.
- Select a well-known domain.
- Find an interesting topic.
- Keep the project in industrial quality.
- Show the whole process.
- Prepare for incremental implementation.
- Support individual approach.
- Solution Implementation
- Implement code first.
- Divide code into goals.
- Evaluate goals’ coverage.
- Find goal dependencies.
- Do the review.
- Writing Study Guide
- Always tell objectives.
- Describe the current state and expected increment.
- Show context and reasoning.
- Specify tasks clearly and precisely.
- Refine tasks with comments.
- Add supplementary tasks.
- Provide further reading.
- Use suitable software support.
- Verify continuity and consistency of the guide.
- Review the guide.
- Start with a minimal version and improve it.
- Course Execution
- Monitor progress continuously.
- Favor individual achievements.
- Examine understanding.
- Get feedback from the “battlefield”.
- Update the case study.
4. Selection of the Case Study
4.1. Know the Learning Goals
- 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.
- Students can use String class methods for working with strings.
- Etc.
4.2. Select a Well-Known Domain
- 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.
4.3. Find an Interesting Topic
- 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.
4.4. Keep the Project in Industrial Quality
- 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.
4.5. Show the Whole Process
- 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.
4.6. Prepare for Incremental Implementation
- 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. However, 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.
4.7. Support Individual Approach
- Example: In our Minesweeper case study, we suggest that students implement some additional 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
5.1. Implement Code First
- Example: We implemented our own Minesweeper game before giving the case study to students. 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.
5.2. Divide Code into Goals
- 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() { ...
- /**
- * Returns column count of the field.
- * @return column count.
- */
- @Task(module = "02", id = "getters")
- public int getColumnCount() { ...
5.3. Evaluate Goals’ Coverage
- 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.
5.4. Find Goal Dependencies
- 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.
5.5. Do the Review
6. Writing Study Guide
- 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).
6.1. Always Tell Objectives
- 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.
6.2. Describe the Current State and Expected Increment
- 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.
6.3. Show Context and Reasoning
- 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.
6.4. Specify Tasks Clearly and Precisely
- 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.
- /**
- * Marks tile at specified indices.
- * @param row row number
- * @param column column number
- */
- public void markTile(int row, int column) {
- throw new UnsupportedOperationException("Method markTile not yet implemented");
- }
- public void markTile(int row, int column) {
- final Tile tile = tiles[row][column];
- if (tile.getState() == Tile.State.CLOSED) {
- tile.setState(Tile.State.MARKED);
- } else if (tile.getState() == Tile.State.MARKED) {
- tile.setState(Tile.State.CLOSED);
- }
- }
- In the BestTimes class define a private void insertToDB(PlayerTime playerTime) method that will store a PlayTime object in the database.
6.5. Refine Tasks with Comments
- Example: The following is an example of a hint for the “markTile” task that was presented 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.
6.6. Add Supplementary Tasks
- 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.
6.7. Provide Further Reading
- 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.
6.8. Use Suitable Software Support
- Example: At our university, we developed a specialized document generator for task-driven case study guides. This program transforms a set of Markdown files enriched with metadata representing the goals, tasks, etc. into a static website and possibly other formats, such as PDF. Utilizing custom software for this task also opens possibilities to check for inconsistencies, such as goals without any corresponding tasks.
6.9. Verify Continuity and Consistency of the Guide
6.10. Review the Guide
6.11. Start with a Minimal Version and Improve It
7. Course Execution
7.1. Monitor Progress Continuously
7.2. Favor Individual Achievements
- 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.
7.3. Examine Understanding
- 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.
7.4. Get Feedback from the “Battlefield”
- 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.
7.5. Update the Case Study
- 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
8.1. Teachers’ View
8.2. Students’ View
8.2.1. Objective
8.2.2. Method
8.2.3. Results
9. Potential Drawbacks
10. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Data Availability Statement
Conflicts of Interest
References
- Hadar, I. When intuition and logic clash: The case of the object-oriented paradigm. Sci. Comput. Program. 2013, 78, 1407–1426. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar]
- 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. [Google Scholar] [CrossRef]
- Nilson, L.B. Teaching at Its Best: A Research-Based Resource for College Instructors; John Wiley & Sons: Hoboken, NJ, USA, 2010. [Google Scholar]
- Coppit, D. Implementing large projects in software engineering courses. Comput. Sci. Educ. 2006, 16, 53–73. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- O’Grady, M.J. Practical Problem-Based Learning in Computing Education. Trans. Comput. Educ. 2012, 12, 10:1–10:16. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef] [PubMed]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- Grimes, M.W. The Continuous Case Study: Designing a Unique Assessment of Student Learning. Int. J. Teach. Learn. High. Educ. 2019, 31, 139–146. [Google Scholar]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- Martin, F. Toy Projects Considered Harmful. Commun. ACM 2006, 49, 113–116. [Google Scholar] [CrossRef]
- Meyer, B. Software engineering in the academy. Computer 2001, 34, 28–35. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef] [PubMed]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- Martinez, L.; Gimenes, M.; Lambert, E. Entertainment Video Games for Academic Learning: A Systematic Review. J. Educ. Comput. Res. 2022, 60, 1083–1109. [Google Scholar] [CrossRef]
- Mayer, R.E. Computer Games in Education. Annu. Rev. Psychol. 2019, 70, 531–549. [Google Scholar] [CrossRef] [PubMed]
- 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. [Google Scholar] [CrossRef]
- Papadakis, S. Evaluating a Game-Development Approach to Teach Introductory Programming Concepts in Secondary Education. Int. J. Technol. Enhanc. Learn. 2020, 12, 127–145. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- Mingins, C.; Miller, J.; Dick, M.; Postema, M. How We Teach Software Engineering. JOOP 1999, 11, 64–66. [Google Scholar]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- Diaz, C. Using static site generators for scholarly publications and open educational resources. Code4Lib J. 2018. [Google Scholar]
- 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. [Google Scholar] [CrossRef]
- 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. [Google Scholar] [CrossRef]
- Porubän, J.; Nosál’, M. Generating Case Studies from Annotated Sources Codes. J. Comput. Sci. Control Syst. 2013, 6, 81–86. [Google Scholar]
# | Question | Answer | No. | % |
---|---|---|---|---|
1 | Do you like learning by implementing a game? | Yes | 103 | 92 |
No, I would rather implement something else | 9 | 8 | ||
2 | How do you like the implemented game? | Poor (is it still a game?) | 0 | 0 |
Below average (I would never play it) | 18 | 16 | ||
Average | 56 | 50 | ||
Above average (I would definitely try it) | 36 | 32 | ||
Excellent (from now on, I will play only this game) | 2 | 2 | ||
3 | Would you show your game to your friend or a family member? | Yes | 87 | 78 |
No | 25 | 22 | ||
4 | In practical lessons, you prefer to implement: | One large project (as in Alien Breed or Text Game) | 84 | 75 |
Multiple simple independent tasks | 28 | 25 | ||
5 | Do you think you understood programming principles better by implementing one large project? | Yes | 91 | 81 |
No | 21 | 19 | ||
6 | From the point of view of assignment organization, you prefer: | Study guide that leads me through the process | 97 | 87 |
To get the assignment in the beginning and to solve it on my own | 15 | 13 | ||
7 | Did you have problems with dependencies between lessons, i.e., that you had to solve a previous lesson to be able to continue? | Yes | 48 | 43 |
No | 64 | 57 | ||
8 | Was the difficulty of the tasks in the case study balanced? | Yes | 48 | 43 |
No, some were too easy and some too difficult | 64 | 57 | ||
9 | Were the tasks too easy? | Yes, most of the time, I just needed to repeat what was written | 3 | 3 |
No, I usually had to think more about it | 109 | 97 | ||
10 | Were the tasks described clearly enough? | Yes, usually I understood the task without the help of the teacher | 57 | 51 |
No, often I had to ask the teacher or colleagues for help | 55 | 49 | ||
11 | Would you like learning with study guides for a case study in future courses? * | Yes | 103 | 92 |
No | 8 | 7 | ||
12 | Do you think that working with a study guide: | Limits me because I cannot do what I want | 22 | 20 |
Does not limit me; I still have enough space for my individuality | 90 | 80 | ||
13 | When did you implement the tasks for a given lesson? | I programmed mostly before the lesson | 12 | 11 |
I programmed during the lesson | 24 | 21 | ||
I programmed after the lesson | 76 | 68 | ||
14 | Which properties of studying with study guides for a case study do you consider most important (choose max. 3)? | I implemented a large project | 69 | 62 |
I implemented a game | 34 | 30 | ||
Thanks to the online study guide, I could work at my own speed | 81 | 72 | ||
I had a study guide that lad me to good practices | 55 | 49 | ||
I worked incrementally, but the game was always playable | 42 | 38 | ||
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? |
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. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Porubän, J.; Nosál’, M.; Sulír, M.; Chodarev, S. Teach Programming Using Task-Driven Case Studies: Pedagogical Approach, Guidelines, and Implementation. Computers 2024, 13, 221. https://doi.org/10.3390/computers13090221
Porubän J, Nosál’ M, Sulír M, Chodarev S. Teach Programming Using Task-Driven Case Studies: Pedagogical Approach, Guidelines, and Implementation. Computers. 2024; 13(9):221. https://doi.org/10.3390/computers13090221
Chicago/Turabian StylePorubän, Jaroslav, Milan Nosál’, Matúš Sulír, and Sergej Chodarev. 2024. "Teach Programming Using Task-Driven Case Studies: Pedagogical Approach, Guidelines, and Implementation" Computers 13, no. 9: 221. https://doi.org/10.3390/computers13090221
APA StylePorubän, J., Nosál’, M., Sulír, M., & Chodarev, S. (2024). Teach Programming Using Task-Driven Case Studies: Pedagogical Approach, Guidelines, and Implementation. Computers, 13(9), 221. https://doi.org/10.3390/computers13090221