# Effectiveness and Design of PBL-Based Project Approach for Non-Major University Computing Courses
## 3 Methodology
### Participants and PBL-Based Project Course Design
#### 3.1.1 Problem-Based Project Design  
The problem-based project course design was developed from previous studies, incorporating the principles of Problem-Based Learning (PBL) and collaborative learning [14]. The course was structured into four key phases: (1) problem creation and implementation, \begin{table}
\begin{tabular}{c c c} \hline \hline
**Category** & **Control Group** & **Experimental Group** \\ \hline Theory & Basic concepts of data structures & Same \\  & and algorithms & \\ Practice & Algorithm implementation and & \\  & problem-solving exercises & Same \\ Final Evaluation & Programming proficiency test & Problem-based project evaluation \\ Number of Students & 30 & 31 \\ \hline \hline \end{tabular} This table compares the differences in evaluation methods, grouping, and student distribution for both semesters.  
\end{table} 
Table 1: Comparison of course and evaluation methods. (2) problem expansion and application, (3) peer feedback, and (4) presentation evaluation. A summary of the phases is shown Figure 1.  
In the first phase, students designed and solved self-created programming problems using algorithms. This phase aimed to strengthen students' ability to define, structure, and implement problems using CT principles. Each student created a problem and implemented its solution using Python, ensuring that the code was modular and reusable. The problems, along with their corresponding code and explanations, were shared on an online platform for peer access and collaboration. In the second phase, students selected a peer's problem to extend or modify it. This process required students to analyze existing code and apply creative solutions to develop new functionalities. The goal was to deepen their understanding of algorithms and foster the ability to work with and build upon others' code. Students were encouraged to create standalone programs by adding new features to existing solutions, simulating collaborative development environments. During the third phase, students reviewed the extended problems and provided detailed feedback using a structured rubric. Although the students were non-majors with limited technical expertise, they were guided to evaluate their peers' work based on the following key aspects:  
1. Code Accuracy: Assess whether the code meets the problem requirements and is free of bugs or errors. 2. Code Efficiency: Evaluate the time and space complexity of the algorithm, ensuring no unnecessary computations and considering more efficient approaches. 3. Readability and Style: Check if the code is well organized, uses meaningful variable and function names, and adheres to consistent coding standards. 4. Documentation and Comments: Ensure that appropriate comments are included to aid in understanding, clarifying the algorithm's intent and logic. 5. Modularity and Reusability: Verify whether the code is modular, employing well-structured functions or classes to enhance maintainability and reusability. 6. Creativity and Innovation: Identify creative or unique approaches in solving the problem, highlighting non-standard solutions where applicable. 7. Security and Exception Handling: Examine the code for input validation, proper exception handling, and the absence of security vulnerabilities. 8. Testing and Validation: Assess whether the provided test cases comprehensively validate the code and whether it functions correctly across varied inputs and scenarios. Figure 1: Overview of the problem-based project design. Recognizing that non-major students might lack the proficiency to assess all aspects thoroughly, the rubric was designed to offer clear guidance and a foundation for meaningful feedback. Students made earnest efforts to apply these criteria, focusing on the areas they felt most confident in while gradually developing a more holistic understanding of the coding principles.