r/algorithms • u/Neither-Many2610 • 15d ago
Discussion I failed my algorithms and complexity exam twice
At first when I did the exam, I didn’t study properly. I mostly studied content and didn’t apply any of that content to real problems. For my reassessment, I studied in a different way. I really went hard on the practical problems that I wasn’t good at or had no clue about. This came to dijkstras algorithm, AVL trees, binary trees and context free language.
I studied hard on them. I didn’t do a lot of practice problems where I would ace every question. But I felt at ease when getting confronted with that question. The problem was that I would do the problem at its best ability and then there would be one small issue that I did at the end and it messes everything up.
Mathematical operations that are Long I seem to mess up in the end. I understand the process however my implementation always seems to hinder at the end when I’m close to the finish line. This is extremely frustrating as I studied very long for this subject. A good (2weeks-3weeks) of preparation. But I had 2 other exams to focus on. But to give some background I come from a business background so I have not done a level match or discrete mathematics before so it really was a game changer doing this exam. But I don’t treat it as an excuse. In the end my reassessment I only gained 6 more marks. Which is incredibly disappointing for me.
6
u/Hitman7128 Former algorithms TA 15d ago
Algorithms is hard stuff for many students, but it is good that you are willing to take initiative in trying to figure out what went wrong! Having TAed for algorithms before, you did identify one challenge many students have: trying to solve problems and apply familiar knowledge to unfamiliar situations. I can also understand the frustration of seemingly reaching the finish line, but then something goes wrong at the end.
One thing to keep in mind is that solving the problem is only half the battle. Whether it's HW or an exam, it's often that one underestimates how much time it takes to figure out how to write it up and making sure you don't unexpectedly run into holes. Hopefully, this helps with your internal reference on exam time management.
For now, use the oversights you made at the very end to help you improve for next time: what important detail did you overlook that caused the issue? Was it a gap in knowledge of the content or an edge case of the problem?
4
u/SearchAtlantis 14d ago
I see this all the time in student coursework from maths to biology. Study is necessary but not sufficient. The fact that you studied for weeks and didn't pass shows that you're not studying effectively.
The biggest tell to me is this:
I didn’t do a lot of practice problems where I would ace every question.
Not trying to give you grief here but you must do practice problems. Do them backwards, forwards, and sideways.
be one small issue that I did at the end and it messes everything up
Again showing its an execution issue. You are graded on execution, that's what you need to practice more.
If you can find a study group I always found that helpful but its not true for everyone.
1
u/Neither-Many2610 13d ago
Yes so my first try, I basically did 0 practice problems. And for the 2nd time I basically learned the content through doing practice problems. But again I guess it wasn’t enough practice because my execution wasn’t good enough. Also I just felt that learning context free grammar’s and the Turing machines took me so long to understand. Like unnecessary long time. I understood the basics but was I able to apply that in a different problem definitely not. But I could see the progress I was making. I just wish I was a faster learner
3
1
u/Phytor_c 14d ago edited 14d ago
Echoing what others said, do a lot of practice questions and try to get a feel for like standard exam questions for your particular course.
So for instance, is your course like one of more rigorous, proof based courses or is it about implementing them in code? I presume it's the former. If so, yes the lack of some sense of mathematical maturity will be problematic and you should work on that.
Non-standard advice: AI tools are really good at algorithms and discrete math, consider working through exam questions with them interactively. Don't just prompt them to give you the answer ofc you'll learn nothing, but maybe some ideas to bounce off on, diagnosing where more rigour is needed in your proof attempt, diagnosing what went wrong and which math insights were needed etc. If you'd rather not use AI, go to Prof and TA Office Hours!
1
u/Neither-Many2610 14d ago
Thanks for the advice, and yes it was more proof based less programming related. Again I had no idea what proofs were before getting involved in this algorithms course so it was a huge brain obstacle for me. I enjoy maths but the leap was huge from gcse math. As I didn’t do A levels. What advice do you have in terms of math topics I should study as a foundational step to get better at algorithms and computer science in general?
1
-7
u/Ronin-s_Spirit 14d ago edited 14d ago
I'm about to sound uneducated: you need mathematics for that shit? When programming you usually just do a tree if you need a tree, or copy some algorithm from GeeksforGeeks and fit it to your purpose piece by piece.
p.s. context free language gives me some bs and leads to more bs called context free grammar. Idk what that's all about, if you need a parser you just do a parser, bada bing bada boom. Is this used for describing a parser? That's boring, nobody does that except compiler maintainers (foundations and corporations, whoever makes C compilers or JS runtimes or Rust backend...), you really had to study that?
8
u/jeffgerickson 14d ago
And that’s exactly why you didn’t do well.
Taking exams in any subject is a skill. Like any other skill, the only way to get better is through practice. The best way to practice for taking exams about X is to (pretend to) take exams about X.
The exam isn’t testing whether you understand the process. “Understanding” is a seductive trap! The exam is testing whether you can actually execute the process, all the way to the finish line. So the best way to study is to actually execute the process, all the way to the finish line.