As a beginner in competitive programming, I struggle with mathematical problems. Would taking a course in discrete mathematics or any other related course help improve my mathematical knowledge and thinking abilities, considering my limited math background which only extends to high school level? PS I forgot most of the math I took in school anyway.
I am not an experienced individual in cp but most of the math has to do with number theory or probability/combinatorics. Usaco Guide gold number sense section covers the majority of the basic math in codeforces.
Yes, a good course in discrete math will likely be helpful in solving competitive programming problems. That is not to say that taking a class is the only way to improve at math problems, though--up until a high level, relatively little theory is required to solve discrete math-related problems in competitive programming (off the top of my head, binomial coefficients, modular exponentiation/inversion, and linearity of expectations are the only things that come up regularly in <2000 discrete math problems), and it may well be just as efficient to read relevant sections in e.g. the Competitive Programmer's Handbook and to then solve math problems from programming contests if your only goal is to solve competitive programming problems.
I would say I am someone who is decently experienced with both math and cp competitions. A good way to study math is to look at some problems (involving mostly algebra) at Art of Problem Solving. There are some that wont help you there, but most materials that involve olympic math and basic algebra will help you in cp.