I'm following a free course online on Udacity:
Intro to Theoretical Computer Science - Dealing with Challenging Problems.
It's very interesting, it's mainly about complexity theory, big-O notation, N vs NP etc. and it explains it all very clearly.
There are lots of quizzes, most of them are multiple choice, but for some you have to write some code in
Python. (If you don't know Python, it's easy to quickly learn the basic syntax that you'll need for the exercises).
You can do this course at any time and in your own pace, it's not done in a fixed period or amount of time.