Description of the course
ICT-based problem solving is essential today, as most of the business domains available in the market in our society involve ICT. This course aims at exposing students to the concept of problem solving. Students are educated on problem analysis techniques to identify relevant inputs, outputs, and processes involved in solving a problem. This is followed by transferring relevant algorithms into computer programs by using Python® programming language software tool.
Upon completion of the course students are able to:
- Describe the fundamental of problem-solving techniques in programming domain
- Illustrate algorithm for a particular problem using correct problem analysis and control structure
- Write computer program based on selected algorithm
As a result of the ICT-INOV project, the course has been updated to include design thinking principles. Students are exposed to design thinking and deploy design thinking to work collaboratively and complete their group assignment that integrates emerging pedagogies and latest technology.
Description of the participants
This is a core compulsory course for all Foundation in Computer Science (FCS) and Foundation in Information Technology (FIT) students from College of Computing and Informatics (CCI), Universiti Tenaga Nasional. Students are expected to complete this course within their one-year foundation study program. In the 2022 – 2023 academic ICT-INOV design thinking activities were implemented in both lecture and lab sessions. The course was attended by a total of 30 students.
Description of the design thinking activities
This course implemented design thinking activities which are aligned with the course learning outcomes. Specifically, students were challenged to describe the fundamentals of problem-solving techniques in programming domain, illustrate an algorithm for a particular problem using correct problem analysis and control structure, and develop a computer program based on the selected algorithm. By using the design thinking methodology, the course project was divided into 5 main project objectives, namely empathize, define, ideate, prototype, and test as follows.
Stage 1: Empathize.
Students from different backgrounds were required to work collaboratively by forming groups. They were required to select which role they would like to actively assume in their respective groups, either a leader, programmers, or documentation writers. They later filled up their names, student id, group name, and project title in a folder shared with the class and the instructor.
Stage 2: Define.
The first course learning outcome requires the students to describe the fundamental of problem-solving techniques in programming domain. As such, for their group project, students were given 2 different case studies and were asked to analyse, identify, and elaborate the suitable techniques to solve the given problem-solving tasks. They were required to choose one case study to brainstorm in their respective group. They were encouraged to imagine what the user would do if they put themselves in user’s perspectives before developing the system based on the questions listed on the case studies.
Stage 3: Ideate.
After forming their respective groups and choosing the case study that they wished to work on, students then brainstormed in class. Several brainstorming activities were implemented in class sessions in which they are required to generate ideas towards solving the case study of their choice. The objective at this stage was to enable students to illustrate an algorithm for a particular problem using correct problem analysis and control structure before they transformed the algorithm into code for system development process.
Stage 4: Prototype.
Students transformed their algorithms into computer programs. They were directed to document their algorithms towards a solution as specifically as possibly, with the objective of facilitating software the development process.
Stage 5: Test.
Students tested their computer program developed and documented earlier. Software testing is the process of evaluating and verifying that a software product or application does, compared to what it is supposed to do. The students were made aware of the benefits of testing include preventing bugs, reducing development costs, and improving performance of the system they developed.