At my university (NUS), it is recommended for us to get the first part of CP4 book by Steven Halim. Has anyone tried solving problems from it or should I solve randomly from Codeforces problem set? I believe the problems in CP4 book are categorized so maybe it's better to solve from it rather than solving random problems here?
It's better to solve random problem, do contest regularly and upsolve afterwards. While Steven Halim's book is pretty good for beginners I would say solving categorized is much less effective than do contest everyday and at least 100 problems a little higher than your current rating per month.
I solved random problems, I think it worked better for me A lot of people prefer a structured method of training though, and I do not know which type of practice will work better for them