Я учусь на курсе CS.На каком предмете программирования мне следует сосредоточиться?[закрыто]

StackOverflow https://stackoverflow.com/questions/641553

  •  22-07-2019
  •  | 
  •  

Вопрос

Что самое важное в это время?Я знаю, что смогу приобрести опыт программирования позже.Что из следующего мне следует изучить, чтобы стать хорошим программистом или аналитиком после окончания учебы?

  • структуры данных
  • алгоритмы
  • разработка программного обеспечения
  • низкоуровневые аспекты
  • шаблоны проектирования и объектно-ориентированный анализ

[Редактировать]

Спасибо за ответы.Я хотел бы включить другие важные темы, которые послужат справочной информацией для других студентов:

  • параллельное программирование
  • операционные системы

[/Редактировать]

Примечание:Я думаю, что первым пунктом списка должен быть выучить английский язык

Это было полезно?

Решение

Все они.Все в вашем списке важно.

Другие советы

Лично я бы изучил следующее:

  • Один C-подобный язык (C/C/C++/C#/Java)
  • Один язык сценариев
  • Один функциональный язык программирования
    • Тем более, что мы переходим к многоядерному миру, это пригодится, поскольку позволяет проводить распараллеливание, выходящее за рамки того, что в настоящее время могут сделать другие языки.Например, на Erlang работают целые телекоммуникационные инфраструктуры.
  • структуры данных
    • Вы будете использовать их повсюду.Они не зависят от языка программирования, они понадобятся вам на протяжении всей вашей карьеры.
  • Алгоритмы
    • Скорее всего, они будут соответствовать вышеупомянутому элементу.Определенные структуры данных имеют определенные алгоритмы доступа к ним.
  • Шаблоны проектирования
    • Да, конечно, изучите различные шаблоны проектирования, но в то же время знайте, что они не являются конечной целью разработки программного обеспечения.

Все остальное в вашем списке также очень важно, поэтому, хотя я предлагаю перечисленные выше пункты, они не более важны, чем другие, которые вы перечислили.Это те предметы, которые мне хотелось бы получить в результате учебы, и мне грустно констатировать, что мне не предлагали их в виде занятий, но мне пришлось изучать их самому наряду со всей остальной курсовой работой.

Я думаю, что вы уже на правильном пути, поскольку в своем списке вы не упомянули ни одного конкретного языка.Я думаю, что это ошибка номер один, которую допускают студенты, изучающие компьютерные науки, — сосредоточение внимания на языке или парадигме.

Весь ваш список очень важен;единственное, что я бы добавил, это достаточно глубокое изучение многопоточности.В будущем это будет становиться все более важным:(Статья Арс-Техника)

Кажется уместным подключить сюда Джоэла ;-)

http://www.joelonsoftware.com/articles/CollegeAdvice.html

Все они обязательны!!

Что ты думаешь?Я ожидал, что вы будете выбирать между концентрацией внимания (например, игровой дизайн против безопасности и криптографии).

Вы не можете выбирать между «алгоритмами, ООП, структурами данных, разработкой программного обеспечения и т. д.».Это ОСНОВЫ!Вы должны выучить их все.

Я бы начал со структур данных и алгоритмов, здесь нет никакой конкуренции.ОО-дизайн полезен.Немного низкого уровня, да.Разработку ПО можно пропустить (с недоверием).

Кроме того, вот несколько идей:

  • основы реляционной базы данных (не только «как использовать oracle», но и реальная реляционная алгебра)
  • операционные системы
  • компиляторы + интерпретаторы
  • что-то в ИР (/генетических алгоритмах/нейронных сетях)

Да, я склоняюсь к «хардкорным» вещам CS.Напряженная работа, сверхтяжелые процессы и прочая ерунда с проектированием, которой вы достаточно скоро научитесь в промышленности, не нужно тратить на них свои образовательные ресурсы.:-)

Давайте посмотрим..

Вам нужно будет понимать сложность, структуры данных и алгоритмы, чтобы вы могли сделать важный выбор.К сожалению, вам нужно будет ДЕЙСТВИТЕЛЬНО понимать эти темы и решать сложные головоломки, потому что они играют гораздо большую роль на собеседованиях, чем в вашей реальной работе позже.Следовательно, это наиболее важные вещи, на которых следует сосредоточиться по практическим соображениям.

Разработка программного обеспечения, шаблоны проектирования и анализ очень важны (хотя я предвзят).К сожалению, за исключением шаблонов проектирования, вы не сможете изучить эти темы без активной практики над крупным проектом.Сосредоточьтесь на понимании понятий объектно-ориентированного программирования и понятия виртуальных функций/динамического связывания, поскольку они очень важны, и многие люди не понимают их должным образом.Сделайте все возможное, чтобы получить хорошую стажировку.

Все, что вы перечислили, является основными компонентами достойного образования в области компьютерных наук, хотя вам действительно следует добавить следующее:

  • Операционные системы
  • сеть
  • Математика (вводные курсы по дискретному исчислению, алгебре, доказательствам, статистике)
  • Базы данных
  • Основы (конечные автоматы, регулярные выражения, машины Тьюринга и т. д.)

Вместе эти два списка дадут вам хорошее базовое понимание информатики, после чего вам следует выбрать еще несколько специальных тем (тех, которые вас больше всего интересуют).

  • Искусственный интеллект
  • Крипто/Безопасность
  • Обработка/распознавание изображений/сигналов
  • Составители
  • Графика
  • Игровой дизайн
  • и т. д.

Вы обнаружите, что как только вы начнете углубляться в тему, все эти основные курсы, включая математику, начнут вступать в игру!Например, в настоящее время я изучаю распознавание изображений, и мне приходилось использовать и понимать вещи из статистики, искусственного интеллекта, исчисления, доказательств, алгебры, алгоритмов, структур данных, ООП и т. д.

Все в вашем списке важно, но вам также нужен правильный настрой.Вам нужно вникать в подробности того, как работает каждая вещь, которую вы изучаете, и почему это было сделано именно так, а не просто выполнять классное задание.Это то, что действительно даст вам преимущество как будущему специалисту.

  1. Многопоточность и распределенные системы.
  2. Как создавать удобные для пользователя приложения с красивым графическим интерфейсом.

Все это очень хорошо, но алгоритмы — хорошее начало.Возможно, вам даже стоит сначала изучить курс дискретной математики, посвященный теории.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top