For some years already I run an online course in programming, algorithms, and so on — algoprog.ru. Now I introduce an English-language version:
algoprog.org
It is an online course intended for a wide range of students, from complete beginners (even those who do not know any programming language) to relatively advanced and knowledgeable students. The course comprises a set of topics, from basics of programming (in Python) to really advanced algorithms and data structures. Most of the topics have a link to a theory, and then some problems (taken from informatics.msk.ru or Codeforces).
Unlike the usual sites with an archive of tasks, while studying on algoprog you also get feedback from me. I will look throught you solutions, accept or ignore them, give advice how it could be written better, help with solutions that do not pass tests, etc. Also, for most problems there are "good solutions" that you can look at after you solve the problem, and there is a "Find a bug" section where you can practise finding bugs in other students' solutions. And, of course, you can always contact me about any questions that arise in the course of your classes, or about programming in general.
In particular, the point of the course is not only to learn how to pass all the tests, but also how to write clean and understandable code, and how to find bugs in the code without hunderds of submissions to the testing server.
I think that the course will be useful for all codeforces users with rating below 1700-1900 (or maybe higher too), and I'll be glad to see you in the course.
The detailed information about the course: https://algoprog.org/material/about!en
The materials of the course (topics, theory and problems) is available for free even for unregistered users. If you want to actually start studying on algoprog, that's for a fee. Price and payment conditions: https://algoprog.org/material/pay!en
Currently the english version course is in beta, for the first five English-language student there will be a 50% discount for a year.
About me: My name is Petr Kalinin, I am senior developer at Yandex. I am bronze medalist of the International Olympiad in Informatics (IOI) 2001, and gold medalist of IOI 2002; as a member of Nizhny Novgorod State University team, I twice participated in the finals of the ACM International Collegiate Programming Contest (ACM ICPC).
In one form or another, I have been teaching programming to schoolchildren since I graduated from school in 2002 (I went as a teacher to various summer schools, etc.); I am teaching a separate course since 2013.