Я хотел бы вернуться к основам CS. Любые предложения для учебных пособий или справочных материалов, ориентированных на приложения?
Я много лет программировал в качестве консультанта, и я обожаю свою работу, которая включает в себя много объектно-ориентированного анализа и проектирования программных систем с использованием управляемых языков (т.е. разработка программного обеспечения)., Но я хотел бы получить докторскую степень в конце концов, и это беспокоит меня, что я никогда не "получил" теорию компьютерных наук. В университете я только немного делал это на этих курсах, потому что то, как они учились, не работало для меня. Я узнаю, наблюдая за применением понятий, а не за запоминанием.
Пример того, где я преодолел такой барьер раньше - у меня был ужасный первый год. Профессор (который, как я теперь знаю, был едва квалифицированным и некомпетентным учителем) начал с С++, обучая нас процессуальному программированию. Технически я узнал, что такое объект, но только когда я увидел приложение объектно-ориентированного анализа и дизайна (с шаблонами проектирования и другими структурами, такими как связанные списки), что я действительно понял, для чего они предназначены.
Как я буду изучать такие предметы, как компиляторы, теорию языка программирования и анализ алгоритмов? Что было бы хорошим способом начать работу над этим? Например, я хотел бы написать компилятор в конце концов (для удовольствия), но я не знаю, с чего начать. Кто-нибудь был в такой ситуации? Любые предложения для учебных пособий, бесплатные онлайн-лекции или ссылки (что-то вроде w3schools было бы замечательно)?
(Я бы хотел добавить, что просмотр Stackoverflow уже научил меня нагрузкам, но я бы хотел, чтобы это было немного более формально:)
EDIT: Спасибо всем за предложения. Я отметил ответ, который работает для меня лично, но продолжайте отвечать:)
Ответы
Ответ 1
Если вы планируете получить Ph.D. когда-нибудь, почему бы просто не вернуться в школу прямо сейчас? Есть тонны курсов, которые вам нужно принять в качестве доктора философии. кандидат, и поиск исследований в более поле CSish (алгоритмы и т.д.) поможет вам с этим предприятием еще больше.
Ответ 2
Мне нравится Sedgewick "Алгоритмы" (isbn 0201066734 1988 604p)
потому что он говорит один через алгоритмы в разговорном стиле,
и имеет хорошие примеры.
См. Обзоры под Amazon.
(Существует много вариантов выпусков, многотомная С++ Java и т.д.)
(Добавлен 2feb:) Алгоритмы являются фундаментальными и забавными,
они довольно отдаленные — походы в высокой стране, а не ежедневное пробки.
Bentley "Программирование жемчуга" (isbn 0-201-65788-0 2000 239p
pearls)
"полна небольших тематических исследований, реальных примеров и интересных упражнений для изучения того, как программировать".
Для проектов крупных командных программ Брукс "Мифический человек-месяц" (isbn 0201835959 2ed 1995 322p
Amazon)
является обязательным:
"концептуальная целостность продукта имеет решающее значение".
И цитируя Парнаса на с. 221:
вместо того, чтобы преподавать людям, что O-O - это тип дизайна и дающий им принципы проектирования, люди учили, что O-O - это использование конкретного инструмент. Мы можем писать хорошие или плохие программы с помощью любого инструмента. Если мы научить людей, как проектировать...
Наконец, визуализация /GUI/UI часто имеют много возможностей для улучшения.
Я не знаю хорошей вводной книги в этой области, наравне с вышеизложенным; кто-нибудь еще?
Ответ 3
Я ищу такой же контент, и люди сказали мне, что неплохо начать, взглянув на Структура и интерпретация компьютерных программ.
Мне больно, что я все еще не умею читать, но я уверен, что как только смогу.
Он должен быть отличной книгой, и лекции, предоставленные авторами, доступны в Интернете.
Я уверен, что вы узнаете гораздо больше о программировании в первой лекции, а затем за весь свой первый год упомянутого вами класса.
Кроме того, если я не ошибаюсь, книга реализует компилятор схемы, написанный на схеме.
Ответ 4
Нельзя ошибиться с Введение в алгоритмы от Cormen, Leiserson и Rivest.
Ответ 5
Обычно я обнаружил, что книги по теории вычислительной техники не предназначены для массового потребления, в отличие от w3schools.com.
"Нет королевской дороги", как сообщается, сказал Евклид.
Я нашел книгу Хопкрофта и Ульмана о читаемых автоматах; он сильно теоретический, но я взял на него концепции высокого уровня как студент в колледже. Я нашел книгу Сары Баасе по алгоритмам хорошим (хотя и сухим) представлением. У Кормена есть книга об Алгоритмах, которая, вероятно, самый полный учебник, написанный в настоящее время.
Конечно, если вы хотите классический текст в области компьютерной науки, вам нужно прочитать "Кнутское искусство компьютерного программирования". Не прочитал это; это немного дорого для меня.
Ответ 6
Академическая Земля и MIT OpenCourseware в Блог Билла Гейтса. Кроме того, есть тонны образовательных видеороликов на YouTube EDU и Google Tech Переговоры (был известен как Google engEDU).
И в наши дни есть Coursera, Udacity, edX.
Ответ 7
:) Я студент, который в настоящее время только что закончил курс дизайна компилятора.
Существует эта книга Ахо, Ульмана и Сети, которая называется "Дизайн компилятора - принципы, методы и инструменты". Существует книга по теории языка программирования под названием "Практика программирования" - простота, ясность и общность Кернигана и Пайка, которые я только недавно начал... это доказывает, что это очень удобно. Приступая к видеокурсам, я знаю некоторые видеоресурсы, которые были бы очень полезными, но они полагают, что они могут стоить хотя бы одного взгляда, просто ресурсы Google NPTEL, наконец, я нахожу, что индийские авторские книги очень легко понять, поскольку я индийский, так как это похоже на то, что вы хотите начать все заново... вы можете проверить этот сайт на полезные вещи.. www.kicit.com... Счастливое обучение...:) Я с вами на идее изучения предметов более практично (например, и может быть, что лучше, чем личный опыт), чем теоретически... cya..:)
Ответ 8
Это может быть немного случайным, но Project Euler может быть довольно хорошим ресурсом для экспериментов с теоретическими и математическими аспектами информатики одновременно программируя.
Ответ 9
Я нашел iTunes U очень хорошим. Они имеют широкий спектр бесплатных материалов из удивительных колледжей, таких как MIT, Stanford и Caltech. Я не наблюдал за ними некоторое время, поэтому я не знаю, как они подходят вашему типу обучения, но это хорошая идея ИМО, чтобы посмотреть на что-то подобное, прежде чем снова начать школу, чтобы вы знали, что это будет возможно..