Сегодня хотел бы вам рассказать о том, что мне удалось изучить за прошедших два месяца по Java и может это чем-то поможет тем людям, которые хотят заняться изучением данного языка. Первое, с чего я хотел бы начать, это прекрасный ресурс, который мне очень понравился подачей своего материала и его полезностью. Я говорю о курсе Хельсинского университета MOOC, который состоит из двух частей:
раз и
два. Чем мне он так понравился?, - дело в том, что он нацелен на практику и к каждой изученной вами темы, он предлагает множество практических упражнений для укрепления изученного материала. Вот
здесь подробно объясняется, как необходимо устанавливаться Netbeans с их встроенным TMC для проверки вашего кода. Английский там несложный, поэтому вы возможно сможете справиться только с помощью переводчика.
Также для укрепления знания по самым основам (массивы, операторы if, рекурсия, манипулирование строками и т.д.) рекомендую поработать с
этим ресурсом. Здесь вам будет предоставлен ряд практических задач, которые довольно легки в большинстве своём. Решив все задачи, я вам гарантирую, что в области массивов, строк, логики вы будете уже чувствовать себя более уверенно и не бояться более сложных задач в будущем :)
В плане алгоритмов, изучил
данную книгу и вполне доволен стилем изложения материала. Здесь очень доступно и простым языком вам расскажут про структуры данных и как они устроены, основные алгоритмы (бинарный поиск, сортировка вставками, алгоритм дейкстры и другие), также разъяснят что скрывается за О-большое и как определяют время выполнения программы. Здесь автор не лезет в дебри, поэтому углубленных знаний по структурам данных и алгоритмам вы не получите, но основную картину всего этого механизма увидите. Для демонстрации примеров используется псевдокод или python, но там всё просто и должны разобраться. Далее по этому направлению я планирую почитать Лафоре, а также может глянуть какие курсы на скептике или coursera. Отпишусь попозже что там по чём и может будет из полезного что-либо.
Ещё сейчас после codingbat начал упражняться на hackerranks, скажу, что здесь уже задачки посложнее и приходится часто копаться в различной документации, так как большинство нетривиальных задач, хоть и кажется несложных на первый взгляд, но встречаются и довольно простые. Также тут нужно стремится сделать не абы как, но и стараться наиболее производительный вариант предложить.
В концовке хотел бы поделиться своими мыслями по поводу изучения программирования. Главное - не стремитесь изучить конкретную книгу, курс или ещё что-то. Я сам ранее грешил этим, когда постоянно стремился выбрать лучшую книгу и тупо прочесть её до КОНЦА. Но смысл не в этом, ваша задача - понять технологию или инструмент языка, как он работает и что он вам позволяет сделать в коде. Часто бывает такое, что ты понимаешь определённый инструмент, но только спустя некоторое время понимаешь его пользу при применении. Я это к чему - не отчаивайтесь, когда что-то не доходит сразу, потом вся картина сойдётся целиком и вы всё поймёте. Да и старайтесь уделять больше времени практике, как бы это банально не звучало. Старайтесь примерно балансировать в области 80% на 20% или 70 на 30, практика, естественно, в большинстве. В общем удачи вам в этом нелёгком деле, через некоторое время поделюсь какими-нибудь новыми пройденными материалами, а так может похожу ещё подкину что-либо полезное, если будет интересно кому-нибудь :)