## Module Information

Computational thinking is increasingly being recognized as a fundamental problem solving method for everyone. Computational thinking involves problem formulation, solution development, and solution analysis, with a focus on computation and computational tools. This course emphasizes the computational thinking thought process and the communication of the process and the solutions, rather than implementation of the solution on a computer. Students learn to apply **computational** thinking to solve problems and discover new questions that can be explored within and across disciplines. Students are assumed to already possess elementary critical thinking and logical thinking aptitudes, which are practiced in this course.

~ NUSMods

*If anyone sees this and can correct the type on GET1031/GEI1000 please do it.

### Schedule

- Venue: Online (Zoom)
- Tutorial: 10am - 12pm, Wednesday
- Lectures: Online videos to be watched before the class starts.

### Module Breakdown

- Tutorial Participation
- Team Project
- Online Quiz

I kind of forgot what was the breakdown for the module.

### Pre-requisites

There are no pre-requisites for this module.

### Module Details

- The Tourist Problem
- Problem Formation
- POLYA’s Problem Solving Process
- Algorithm Design
- Real World Problems
- Patterns and Recursion
- Graph Problems
- Searching and Sorting
- Artificial Intelligence
- Big Data and Data Science

### Tutorials

Tutorials are held online during the tutorial time slot. During the tutorial, the teaching assistant discusses the tutorial questions that we were given for the week. For my tutorial group, the the teaching assistant asks us to paste our answers for the week into different google docs and then goes through the answers them one by one. He counted the tutorial participation by the number of answer submissions we made.

If we have to miss a tutorial class, we were required to inform our tutors beforehand and attend a makeup class instead. Otherwise we would have 0 marks for that tutorial that we missed.

### Projects

For the project there were different milestones that we have to complete.

- Milestone 1: Project Topic Proposal
- Milestone 2: Project Tutorial

#### Milestone 1

For milestone 1, the goal is to come up with a project proposal to solve a difficult problem. The problem must fulfill criterias below:

- Related to real world issues
- It should be identified as a good computational problem as discussed in the lessons
- Not contain religious, ethical, political and philosophical topics.
- Not contained within the lecture discussions (IE: Stated below)
**Note: they can be transformations of the problems below**- Tourist Problem
- Pancake Flipping Problem
- MRT Breakdown Problem
- Bus Congestion
- Hospital Appointment Scheduling
- Shortest Route Problem
- Goods delivery service
- Driver assignment
- Previous object allocation
- Establishing distribution centers
- Solving Rubik’s cube

- Specific enough to be solved within the time frame of the project

After deciding on the topic, we are required to write a topic proposal including the information below.

- Team name
- Team members’ name
- Project Title
- Real World issue that our project solves
- Possible Computation Problem

My group decided to do a topic on Vaccination Distribution Center Location Problem. There is also a template provided by the teaching team for us to fill up our project.

#### Milestone 2

For milestone 2, we have to come up with a set of slides in the form of a tutorial to teach the class how to solve the problem that we have chosen.

For the introduction, we can include the following:

- Computational Problem we are solving
- Objectives of the Problem
- Inputs and Outputs of the problem
- Constraints of the problem
- Optimization Criteria
- Assumptions of the problem

We will then have to come up with an instance of the problem that we must then try to solve. It must contain some edge cases that we have to consider when solving the problem for bonus points.

We will then go through our algorithm to solve the problem and stop at interesting points to show how our algorithm works. At the end we must analyze our results/conclusion.

There will be a few tutorials for us to do this. We will then have to iterate on what we have based on the feedback of the tutor.

For the final grading, the professor will sit in on the class and grade us based on our presentation.

## Ratings

### Workload (6/10)

The workload was relatively light. I usually spend 1 hour before the class to complete the tutorials.

### Organization (7/10)

The module was relatively well organized. However, I feel that if the student is not inclined towards computing, some of the later topics at the back of the module may be difficult to understand.

### Learning (8/10)

Initially, I felt that this might not be as helpful to someone from a computing background like me. However, after I joined the class, I realize that some of the concepts that are taught in the class are very helpful for other modules which I plan to take.

Especially as someone from a computing background, I have learnt many new ways to think about the computational thinking. This may be in terms of designing new algorithms or even just thinking about how to solve a problem.

### Enjoyment (9/10)

Personally, I enjoyed the class a lot. It stretched my mind in terms of thinking and formalizing problem in a relatively low stress environment.

### Usefulness (9/10)

I will say that the module is very useful for anyone who wants to learn how to think about problems in a more structured way. It also have an additional benefit of helping us transform real life problems into computational problems to be solved using algorithms.

## Overall

Overall I enjoyed the module and found it useful. If you are a computing student, I will strongly recommend trying to program out the questions in the tutorials and the projects to make your life easier.

- Expected Grade:
`A`

- Actual Grade:
`A`