CS50 отлично дополняет JavaRush. В нем изучается масса общеобразовательных моментов, которые помогут в становлении мышления программиста (или любого айтишника). Например, основы Linux и работы с памятью компьютера, алгоритмы сортировки и поиска, алгоритмическая сложность, простые криптографические шифры, структуры данных...