The University of Pennsylvania — Computational Thinking for Problem Solving: A Course Review
This course, which is hosted by Coursera and designed by the University of Pennsylvania, is intended partially as an advertisement for the University of Pennsylvania’s Master of Computer Information Technology (MCIT) degree and partially as a course dedicated to the underpinnings of problem-solving.
This course is comprised of four weeks. A good number of the assignments are peer-reviewed, but the majority of the assignments are done through the use of an autograder. This has both its advantages and disadvantages.
Advantages of the Autograder:
The autograder allows you to complete assignments in a timely manner and receive immediate feedback.
The autograder allows you to see where your deficiencies lie and allows you to better focus your study.
The autograder provides immediate feedback along with immediate positive reinforcement for a job well done.
Disadvantages of the Autograder:
The autograder’s main disadvantage lies in its inability to provide personalized feedback. This is especially frustrating for assignments that are not multiple choice, such as a code submission.
Advantages of the Peer Review:
The peer review allows you to receive personalized feedback from classmates who have gone through the same lesson as you. They can help you target specific areas that you are having difficulty with and provide you with personalized feedback.
Peer review allows you to feel a sense of camaraderie in this course, which can be encouraging, making it more likely that you complete the course.
Providing your peers with feedback can help you learn and better understand the material as you must explain to your peers what they got right and what they got wrong.
Disadvantages of the Peer Review:
The peer review process can take plenty of time, as long as a week to get results. This halts the course’s progression and slows down the process of acquiring a certificate. If you do not pass a peer review assignment, then that means you may have to wait another week before your assignment gets reevaluated.
Sometimes your peers have not quite understood the material and subsequently give you an incorrect grade due to this. This can be incredibly frustrating and happens rather frequently.
Some peers do not like to put in the effort and just assign random marks whilst putting in “good job” as your only feedback. This does not help your learning process in the slightest.
Course Material:
The course material for this course is quite simple to understand. The professors teach quite well while providing real-world examples. The material builds on itself in a way I have not seen in other Coursera courses. Every week makes sense as to why they presented the material in the way that they have. Each week fits together like a well-organized puzzle. The material is easy to consume and process, while the assignments help to solidify your knowledge. The assignments are designed in such a way so that they hit on the tough to grasp concepts. All in all, this is the most well-organized course I have taken to date.
Week One:
Week one covers four essential steps to breaking down a problem.
Step 1 — Decomposition
Decomposition is the act of taking a problem and breaking it down into simple steps. By tackling each step one at a time, eventually, the problem gets solved as a whole. This method is incredibly useful for tackling problems that seem too large are on their own.
Step 2 — Pattern Recognition
Once a problem has been decomposed, it becomes easier to see the repetitive steps. This part of problem-solving has to do with recognizing these patterns and how to build the most efficient algorithm to solve them.
Step 3 — Data Representation and Abstraction
This part deals with defining what the most efficient data is for the problem that is being solved. It deals with abstracting away the parts of the problem that is not absolutely necessary to know in order to find a solution.
Step 4 — Algorithms
This step has to do with taking each of the three previous steps and combining them together to build an algorithm. To do this, it is necessary to know each subpart of a problem, what data is necessary, and what patterns appear. Once you organize each part accordingly, you can then proceed to follow a step by step guide to solving your particular problem.
Week Two:
Week two builds on the first week by discussing the efficiency of various algorithms, such as:
Linear Search
Logarithmic Search
Greedy Algorithm and Binary Search
To learn more about the concepts discussed in week two, please click here. WEEK TWO
Week Three:
Week three discussed how to transform your algorithm into pseudo-code. This week helped to teach how to break down any idea into a set of instructions. The only thing left to do after this week was complete is to change the instructions into actual code. This leads us to week four.
Week Four:
Week four discussed how to change pseudo-code into actual python code. To do this, the instructors provide several coding challenges that are quite simple to solve. They end this week with a final project that has a moderate difficulty.
The final project has the student build a program that accesses a predefined thesaurus. The student must write a function that requires a keyword as an input. The keyword is then sent through the thesaurus and has all of the word’s synonyms saved. The function then scans a text and counts how many times the keyword and each of its synonyms occur within the text.
This is not a very challenging assignment but can be quite tricky.
My Final Thoughts:
Overall, I really enjoyed this course. I think this is the best course I have taken as of yet that has to do with learning the underlying themes to coding. I think the professors explain things simply and are reasonably engaging. The assignments are great and well structured. I think the peer review system that is currently in place needs some revamping, but for the most part, it functions well as long as the student is motivated.
All in all, I give this course a 4/5. I highly recommend it!
You can find the course here: https://www.coursera.org/learn/computational-thinking-problem-solving.
Thank you for reading!