In this assignment, you will be creating an algorithmic flowchart and solving an algorithmic problem.
Over the course of the semester, you are going to develop an algorithm for solving algorithmic problems. This will not be an algorithm that a computer executes, but an algorithm that you can use to guide your problem-solving process.
Solving algorithmic problems is difficult. There’s no single skill that you will need, but instead you will need to build up a lot of different skills and know when to apply them. You have to analyze the problem itself, and figure out if it’s vulnerable to algorithmic strategies or well-known algorithms.
The format of your algorithm is up to you. You might make a flowchart, or prefer to stick with pseudocode/natural language. I would not recommend anything that looks like a real program. It should be easy to update, because you will be iterating on this throughout the semester. I will refer to whatever you create as an “Algorithmic Flowchart” for convenience.
There is no maximum length on your algorithm. In theory, there is no specific minimum. However, I expect fairly detailed procedures by the time we are done. The less you write now, the more you will be adding later.
Use the following four general phases to structure your algorithm:
Make a first attempt on paper and pencil. Schedule 30 minutes to sit down in a quiet space. Use your algorithmic algorithm. Do NOT use your laptop, textbook, or any other resources. When you are finished, write down what you tried and learned from the problem.
Take a break. Put it down for at least 4 hours, or even overnight. Ideally, work on assignments for a different class, take a nap, or just do something that distracts you.
Try the problem again, but this time use your resources. If you google for anything, record the URLs and search terms that you used. Keep working until you have an answer, and then clearly record that answer.
Reflect on what you tried in Parts 1 and 3. Write a short paragraph describing what you learned, what worked, and what didn’t.
Think about how you approach algorithmic problems like the ones we described earlier in the semester (e.g., “Lesson 02- Practicing Problems”). Think about how you analyze the problem, what things you look for, what tactics you try. Self- reflect and build up your strategies.
Use your Algorithmic Flowchart to solve the following problem. Remember, you must actually take a break when completing this!
(Part 1) There are 25 Corgis. At most, 5 Corgis can race together at a time. You must determine the fastest, second fastest, and third fastest corgis. Find the minimum number of races in which this can be done. Normally, you would simply time the Corgis with your watch, but unfortunately one of the Corgis chewed it to pieces.
(Part 2) We now have 9 Corgis and can race 3 at a time. Find the fewest number of races to determine the 5th fastest Corgi (i.e. the median Corgi).
Create a PDF that has both your Algorithmic Flowchart AND the work you did in applying it to the Corgi Racing problem.
You will submit on GradeScope: https://www.gradescope.com/courses/230699/assignments/1058644/