я учусь на инженера программного обеспечения на втором курсе.
...
Решил самостоятельно пройтись по следующим темам условия, циклы, массивы, указатели, функции, алгоритмы сортировки и поиска, структуры данных.
...
Как по мне это и есть те базовые основы, которые должен знать любой программист.
...
Покритикуйте ход моих мыслей и жду советов на счет того, как мне стоит заниматься.
Вообще это скорее навыки для кодера. Программный инженер - это минимум на голову выше.
Это примерно как сказать: орфография и пунктуация - это базовые основы, которые должен знать писатель. На самом деле писать грамотно необходимо, но вовсе не достаточно.
Если действительно хотите изучать программную инженерию, а не кодинг, для начала полистайте SWEBOK. После этого станет совершенно ясно, куда двигаться дальше. А двигаться придется во многих направлениях сразу. Но если задуматься об этом уже на втором курсе, есть неплохие шансы к выпуску стать грамотным инженером. Главное - осознать, что изучение любого языка программирования - это лишь мелочь, хоть и необходимая. Этих языков уже было не одна сотня и еще будет не меньше, не в них соль программной инженерии.