Основы программирования – это школьный курс информатики. Чтоб запрограммировать что-то реально полезное, нужны разные знания в зависимости от типа приложения и задачи. Например, можно уметь делать сайты, но не уметь писать приложения для Android, или наоборот.
Теорию алгоритмов нужно знать. Потому что языки это только инструмент для записи алгоритмов, без умения составлять алгоритмы знание языков программирования бесполезно