Компьютерные науки — это область с огромными возможностями. Миллионы студентов всего мира мечтают построить карьеру в этой сфере. Но возникает неожиданная проблема: несмотря на то, что существует огромное количество обучающих ресурсов, большинству студентов не удаётся стать хорошими специалистами и удачно пройти собеседование. Опираясь на свой опыт работы более чем с тысячей учеников, в этой статье я хотел бы обратить внимание на пять основных трудностей в изучении компьютерных наук.
«Умение решать задачи есть искусство, приобретающееся практикой, подобно, скажем, плаванию. Мы овладеваем любым мастерством при помощи подражания и опыта », — Дьёрдь Пойа.
Но перед тем, как перейти к трудностям, я хотел бы поведать вам одну историю.
До поступления в Индийский институт технологий я ни разу не использовался компьютерами. На первом курсе я получал низкие оценки по курсу языков программирования. Тогда я попросил о помощи старшекурсников, но они не смогли мне понятно все объяснить. Я заставил себя смириться с тем, что точно не смогу работать в области компьютерных наук. Но, как говорил Стив Джобс:
«Ты не можешь соединить ключевые точки своей жизни наперёд; но можешь всё связать воедино, оглядываясь назад».
На третьем курсе один из моих друзей объяснял рекурсивный алгоритм нахождения n-ного числа Фибоначчи. Он сказал, что рекурсия в этом случае — не лучший метод, так как при больших значениях n компьютеру могут понадобиться годы на вычисление.
Я сказал: “Правда? Как так?”
Он ответил: “Сложность этого алгоритма — экспоненциальная функция от n”. Мой друг сразу же объяснил мне, что такое сложность алгоритма и привел доказательство.
Я удивился и спросил: “Почему тогда на экзамене на первом курсе студенты писали именно этот код?”
Друг улыбнулся и ответил: “Потому что они просто запомнили его и даже не думали о его производительности”. Затем он объяснил мне более эффективный метод решения с использованием динамического программирования.
Я впервые приблизился к пониманию значимости алгоритмов. В тот момент они меня настолько заинтересовали, что я изучил книгу “Алгоритмы: построение и анализ” дважды за сто дней!
Решение задач при помощи алгоритмов и структур данных — моя страсть. Я верю в то, что персональный подход к каждому ученику поможет в преодолении сложностей в обучении и достижении успехов. И вот, наконец: пять сложностей, которые я выявил за четыре года преподавания:
Знание этих проблем может помочь вам их избежать. Удачи в обучении и прохождении собеседований!
Перевод статьи Shubham Gautam: Why do students fail in Algorithms and Data Structure Interviews for Top Companies?
Комментарии