HiveBrain v1.2.0
Get Started
← Back to all entries
snippetMinor

How do I improve my problem-solving and creative thinking skills in Computer Science?

Submitted by: @import:stackexchange-cs··
0
Viewed 0 times
skillsproblemsolvingcreativesciencethinkingimprovecomputerhowand

Problem

I am a CS undergrad trying to improve my problem-solving skills. I have noticed that I have a problem with theoretical computer science which I've been trying to fix largely unsuccessfully till now. I have noticed these in Undergrad courses such as Theory of Computation, Algorithm Design, Discrete Mathematics, Game Theory etc. I am able to understand most of the underlying theory pretty well and even visualize a lot of stuff but when it comes to solving problems during examinations, the correct approaches never seem to come to me. I have tried practising a lot of sample problems for such courses but it never seems to help with questions which involve some sort of creative thinking. I spend way too much time in a limited-time setting and end up not being able to come up with a seemingly 'obvious' solution. I have also noticed this with puzzles. In trying to isolate the problem, I've noticed that exam temperament is not the problem, since I'm able to do fairly well in Systems courses or courses which are not so puzzle-oriented. Here are some examples of questions I'm talking about:

  • Write a Context Free Grammar $G$ such that $L(G)$ is



  • Find an algorithm for a multi-armed bandit problem which satisfies



  • Write an algorithm to solve a in



  • Prove that is not a regular language



  • Find the Nash Equilibrium for a etc



The common aspect of all such problems is that they can't be solved methodically, but rather there's that one creative manipulation/idea which splits the problem apart.
How do I get my creative juices flowing and get better at solving such puzzling problems in a limited time frame?

P.S. I really want to get better at this since I'm genuinely putting in a lot of time and effort but my scores don't seem to reflect that. I couldn't find the most appropriate tags for this question, but I've tried to enter what I felt was appropriate. Open to suggestions for better ways to frame the question!

Solution

Without knowing You and Your personal situation, this question is almost impossible to answer. So all I can try to give is some general-purpose advice which hopefully gets You on the right track.
Get Enough Sleep

Thanks to modern Hustle Culture, bright white LED-lighting and bright-screened smartphones that make noise every 2 minutes, it becomes harder and harder to get enough regular sleep. According to studies, sleep is very important for both learning and creative thinking. Pulling all-nighters for studying is a terrible idea.

Do not ever write a PHD or a Thesis for/with an idiot Professor that seems to celebrate and/or demand sleep deprivation of his employees! Burnout is a real risk with such superiors!
Know Your Learning Type

Everybody learns differently. There are different psychological models of Learning Styles. These are just models, so don't get too lost in them, but it is good to roughly know which type of learner You are. This will give You a good idea how to study more efficiently.
Find the Right Resources

Once You know Your learning type, it should be easier for you to pick the right resources. Sadly, You can usually not choose Your teacher. But You can pick and choose almost everything else. Do You get frequently stuck reading one book on some topic? Try another book that better suits Your learning style! If You are more of an audio-visual learner, You could try some open source online lectures like MIT OpenCourseWare.
Bounce Your Ideas Off Somebody Else

The ability to explain a topic is a really good measure of how well You understand that topic. If You get stuck during explanation, You will quickly realize the gaps in Your knowledge.

It might be a good idea to join a study group. If study groups are not Your thing, talk to Your friends, Your goldfish or Yourself. If even if they do not understand a word of what You are saying it will still help You. If You are able to explain a topic to a layman or a child, You have achieved true understanding!
Learn Programming

I cannot speak for other countries, but in Germany, I have met my fair share of graduated computer scientist who did not know a single programming language. Based on that experience, my advice is: Learn a programming language! A good starting language may be Python. Even if it doesn't improve your grades, it will make you a better computer scientist. But the ability to program can also be a great study help.

Need to understand context-free grammar? Why not implement you own Earley parser? Or use an existing parser, to write Your own silly little programming language?

Need to study algorithmic complexity? Why not implement some sorting algorithms and learn what makes them tick?
Don't Beat Yourself Up!

It saddens me to hear that You seem to feel like You have to emphasize that You really want to learn. People try their best all the time and still fail sometimes. That's normal! That's human! Keep trying! That does not mean You didn't try hard enough!

In this modern Hustle Culture world, people are laser-focused on the success stories, the toxic, narcissistic tech billionaires and (wannabe) dictators. In truth, we could learn much more from our mistakes than our successes. But this modern Hustle Culture society seems to think, that people who fail, have done everything wrong, and people who succeed have done everything right. Nothing could be further from the truth. There is an interesting GDC talk that points out, just how clueless successful game designer are, for example.

People that focus on Your mistakes and tell You that "You just didn't try hard enough!" are absolutely toxic. Steer clear of those people and ignore them! Instead, look for the people that give advice on how to improve things in the future!

Context

StackExchange Computer Science Q#162189, answer score: 5

Revisions (0)

No revisions yet.