Насколько полезна эта комбинация предметов для студента бакалавриата CS? - PullRequest
2 голосов
/ 14 марта 2010

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

  • Структуры данных
  • OOP
  • Язык ассемблера и компьютер Архитектура

Хотя у меня также есть возможность пройти курсы DLD (Digital Logic Design) или передачи данных вместо языка ассемблера. Мой интерес заключается в программировании, и я также работаю программистом в местном доме разработчиков программного обеспечения. Может ли кто-нибудь дать мне несколько хороших советов и предложений.

Ответы [ 5 ]

5 голосов
/ 14 марта 2010

Digital Logic Design и компьютерная архитектура помогут вам понять концепции компьютерных систем низкого уровня и по достоинству оценить потрясающую работу, выполняемую оптимизаторами для вас. Перечисленные курсы звучат как хорошая комбинация для меня.

3 голосов
/ 14 марта 2010

Единственная вещь в вашем списке, которую вы могли бы отложить - ООП. Я стараюсь различать объектно-ориентированное проектирование и объектно-ориентированное программирование :

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

  • Объектно-ориентированное программирование - это искусство повторного использования реализаций через наследование . Многолетний опыт преподавания студентов бакалавриата показал мне, что это сложная, сложная тема, за исключением, возможно, в очень специализированных условиях, таких как создание двумерных графических пользовательских интерфейсов.

Получите как можно больше ОО-проектов как можно раньше, но держитесь подальше от наследования, пока у вас не будет больше опыта.

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

Как заметил, по крайней мере, один другой плакат, как только у вас появятся эти темы, вам подойдет некоторое функциональное программирование.

3 голосов
/ 14 марта 2010

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

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

1 голос
/ 14 марта 2010

Первые два предмета (структуры данных и ООП), похоже, имеют зависимость - вы должны понять ООП, прежде чем переходить к структурам данных.

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

Для справки, это структура, которую берет моя школьная программа с отличием (и это было здорово):

1st Semester:
Data Structures and Algorithms
Intro to Logic

2nd Semester:
Intro to Computer Architecture
Discrete math

3rd Semester:
Advanced Computer Architecture
Application of theory(e.x. compression, encryption, error correction)
Programming languages

4th Semester:
Operating Systems(done in x86, uses MIT course material) - challenging but very fun and rewarding class


Sometime after 4th semester:
Algorithms or Automata Theory

После четвертого семестра в моей школе вы можете свободно брать все, что хотите (в качестве отличника) - в этот момент большинство людей посещают аспирантуру.

Моя цель в перечислении этого заключается в том, чтобы продемонстрировать, что моя школа использует "теорию двух моделей" теории (логика, дискретное соответствие и т. Д.) И реализации (архитектура, операционные системы и т. Д.). Если вы заинтересованы в CS, важно хорошо разбираться в обоих. Чтобы быть хорошим «разносторонним» ученым-компьютерщиком, вам нужно как понять теорию, так и правильно ее реализовать.

Мой совет - следовать аналогичной модели. Берите уроки архитектуры, а также уроки теории.

0 голосов
/ 14 марта 2010

Необходим алгоритм алгоритмов. Курс по разработке компилятора также весьма полезен. И еще есть обширная и интересная область искусственного интеллекта.

...