Єдина Країна! Единая Страна!

Ступінь з комп’ютерних наук онлайн?

Лютий 21st, 2013

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

Дистанційна освіта — нині великий тренд, і я вірю у те, що за цим майбутнє, і, що ми є свідками справжьої революції у системі освіти. Усіх, хто не поділяє мою думку, і скептично споглядає на усі ці процеси, я, як завжди, за замовчуванням, вважаю совковим лайном і бажаю їм здохнути.

Власне, одного разу, спілкуючись за філіжанкою кави з одним зі своїх колег, дізнався, що той також не має формальної освіти, і навіть не намагався вчитись в університеті. Найцікавіше те, що він є, певно, найкращим інженером у моєму відділі. Таких людей я зустрічав чимало, і, мене давно перестало дивувати те, що більшість з них були одними з найкращих програмістів, яких я зустрічав. Дивним було те, що жодному з них не бракувало фундаментальних знань, як то математики, алгоритмів, тощо, чому нібито нас і мав би навчати університет.

Усі вони отримали їх завдяки практичному досвіду, однак, мені стало цікаво, а чи можливо отримати формальні знання відповідні бакалаврському ступеню з комп’ютерних наук вдома: беручи онлайн курси та читаючи книжки? Ось відповідь.

Аби спростити, а також логічного та послідовного викласти матеріал, перелік курсів розбито на семестри. Однак, в умовах домашнього навчання, поняття семестру повністю втрачає сенс, оскільки, середній курс триває 8 тижнів, себто, є у ~2.5 рази коротшим за семестр в Українському університеті. Теоретично, за календарний рік можна було б, особливо не напрягаючись, поставити зелені галочки навпроти 4-х семестрів. Тож…

Підготовка

Це ніщо інше, як супер фундаментальні знання, без яких не варто й носа сунути до комп’ютерних наук.

  • Pre-Calculus: де-факто, в Україні — це шкільний курс алгебри. Якщо зовсім не вчили у школі математику, або ж просто є бажання швиденько пробігтись по вже трохи забутому матеріалі — то можна взагалі почати з основ алгебри, які неймовірно круто викладені у курсі від тих же викладачів під назвою Algebra.
  • Physics I: Classical Mechanics: знову ж, в Українських реаліях — це фізика старших класів так званої, загальноосвітньої школи.

 

Семестр 1

Метою першого курсу в будь якому університеті є отримання фундаментальних знань професійного спрямування. Такі собі алгебра та фізика комп’ютерів: зрозуміти основи математичного та алгоритмічного мислення, математичного аналізу, познайомитись з основами програмування, тощо.

  • Computer Science 101: основи комп’ютерних наук. Мабуть, повинені бути не лише першим курсом у переліку, але й першою лекцією, яку відвідають майбутні програмісти. Метою курсу є зрозуміти основні ідеї комп’ютерних наук на прикладі мови штибу Python, побавитись з залізом, і написати кілька дуже простих програм, на кшталт, гри у хрестики-нолики.
  • Programming Languages: вивчення основних концепцій, які приховуються за сучасними мовами програмування, бажано на прикладі функціональних мов, аби потім можна було з легкістю взятись за вивчення будь якої мови, приділивши увагу лише її синтаксису.
  • Statistics One: дуже прості, дуже базаві концепції статистики. Цей курс чудовий тим, що вчить основам мови R, яка дуже широко використовується в наукових та комерційних колах для аналізу великих об’ємів даних.
  • Introduction to Logic: логіка є однією з найстаріших інтелектуальної дисципліни в людській історії. Вона бере свій початок за часів Аристотеля, і хоча її вивчають протягом багатьох століть, однак, вона все ще залишається предметом активних досліджень й по сьогодні. Цей курс є вступом до логіки. Він показує, як формалізувати інформацію у вигляді логічних речень, як систематично послуговуватись цією інформацією, аби вибудовувати логічні висновки, і тільки логічні висновки. Найголовніше те. що розглядається практичне застосування логіки — в математиці, науці, техніці, бізнесі, юриспруденції, тощо.

 

Семестр 2

Data Analysis: я б даний курс розглядав, як логічне продовження вищезгаданого курсу зі статистики.

Якщо ви бодай трохи цікавитесь тим, що відбувається у світі і читаєте блоґи — то, певно чули, що ми нині живемо в “еру великих даних” (big data). Нині Amazon, аналізувючи прочитані вами раніше книжки, вгадає ваші смаки, і рекомендує цікаві книжки та фільми до перегляду. Великі корпорації, як Google та науковці з науково-досвідницьких університетів вміють виявляти вагітних жінок з натовпу, використовуючи дані виших покупок за останні кілька тижнів.

Цей курс навчить, як отримувати та аналізувати великі об’єми даних, а також те, як робити усі ці круті речі з ними.

 

Introduction to Systematic Program Design: оскільки ми вже уміємо писати код, пора навчитись писати його правильно та якісно: починаючи від етапу проектування, через етап імплементації, не забуваючи про його читабельність та акцент на майбутню підтримку, і закінчуючи його тестуванням.

 

Introduction to Mathematical Thinking: одним з найголовніших навиків будь якого інженера є уміння мислити логічно та у формах математичних виразів, які, і лише які розуміє комп’ютер..

 

 

 

 

 

Writing the Science: навик, яким володіє заледве 0.5% програмістів. Один з найнеобіхдніших навиків для усіх інженерів у 21-му столітті — уміня дуже чітко та ефективно висловлювати свої та чужі думки у письмовій формі англійською мовою.

Зазвичай, лише інженери, які ним володіють успішно керують великими командами, пишуть книжки, які стають бестселерами та є обличчями брендів, компаній, тощо.

 

 

 

Семестр 3

Algorithms: Design and Analysis, Part 1: фундаментальні принципи алгоритмів та їхнього дизайну. Тут ви дізнаєтесь про парадигму “Розділяй та володарюй” на прикладі класичних алгоритмів сортування, пошуку та множення.

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

 

 

Fundamentals of Electrical Engineering: курс з фокусом на створенні, маніпуляції, передачі та отримання інформації за допомогою електронних приладів.

Коротко кажучи, привіт схемотехніка і залізо взагалі. Критичний курс для усіх, хто у майбутньому займатиметься вбудованими системами.

 

Automata:

 

 

 

 

 

Introduction to Computer Networks: принципи і практики, покладені в основу комп’ютерних мереж, з наголосом на мережу Інтернет. Структура та компоненти комп’ютерних мереж, комунікація пакетів, багаторівнева архітектура, TCP/IP, фізичний рівень, виявлення та корекція помилок, управління потоками передачі даних, локальні мережі (Ethernet, Token Ring; FDDI), мережний рівень, quality of service, multicast….

 

 

Семестр 4

Algorithms: Design and Analysis, Part 2: продовжуємо вивчати алгоритми, цього разу на прикладі більш складних алгоритмів, як то жадібних алгоритмів; динамічного програмування та додатків; NP-повної задачі та її значенні для розробників алгоритмів; евричтичного дизайну та аналізу; тощо.

 

 

 

Fundamental of Electrical Engineering: продовжуємо вивчати фундамантальні основи електроніки та електротехніки.

Control of Mobile Robots: оскільки ми вже знайомі з основами мікроелектроніки — слід застосувати наші знання у найдрайвовіший спосіб — зробити власного робота.

 

 

 

 

The Hardware/Software Interface: This course examines key computational abstraction levels below modern high-level languages; number representation, assembly language, introduction to C, memory management, the operating-system process model, high-level machine architecture including the memory hierarchy, and how high-level languages are implemented. We will develop students’ sense of “what really happens” when software runs — and that this question can be answered at several levels of abstraction, including the hardware architecture level, the assembly level, the C programming level and the Java programming level.

 

 

Семестр 5

Digital Signal Processing: вивчаємо основи теорії цифрової обробки сигналів та досвіджуємо, як пише автор курсу, “безліч способів зробити повсякденне життя цікавішим та веселішим за допомогою DSP”.

 

 

 
Programming Languages: досліджуємо і вивчаємо базові концепції, які приховуються за мовами програмування, з сильним наголосом на техніки та переваги функціонального програмування, на прикладі таких мов, як ML, Racket, та Ruby вчимося складати шматкочки мови, аби стоврити щось більше, аніж набір тих самих частинок. Важливо здобути знання, достатні для самостійного освоєння будь якої іншої мови програмування у майбутньому.

 

Learn to Program: Crafting Quality Code: не усе програмне забезпечення однакове. Цей курс фокусується на написанні якісного коду, який працюватиме коректно та ефективно.  Під час курсу пропонується створити дизайн, написати код та протестувати кілька різних програм з метою навчитись порівнювати програмне забезпечення, створене для вирішення аналогічних завдань.

 

 

 

 

Семестр 6

Cryptography I: знайомимось з нутрощами примітивів криптографії та вчимось їхньому практичному використанню.

 

 

 

 

 

Game Theory: курс, який висвітлює основи теорії ігор: представлення ігор та стратегій, ігрові дерева, схоластичні ігри, кооперативні ігри, та Баєсівські ігри.

 

 

 

 

Human-Computer Interaction: дозволяє навчитись навикам “людиноорієнтованого дизайну”, які дозволять створювати чудові, прості та інтуїтивно-зрозумілі інтерфейси для будь яких технологій.

 

 

 

 

Functional Programming Principles in Scala: вивчення функціонального програмування, і, як воно може бути ефективно поєднано з об’єктно-орієнтованим програмуванням. Метою курсу є отримання практики у написання “чистого” функціонального коду, використовуючи мову програмування Scala.

 

 

 

 

Семестр 7

Cryptography II: продовження курсу з основ криптографії та захисту інформації.

Computer Architecture: In this course, you will learn to design the computer architecture of complex modern microprocessors.

This course forms a strong foundation in the understanding and design of modern computing systems. Building on a computer organization base, this course explores techniques that go into designing a modern microprocessor. Fundamental understanding of computer architecture is key not only for students interested in hardware and processor design, but is a foundation for students interested in compilers, operating systems, and high performance programming.

 

Pattern-Oriented Software Architectures for Concurrent and Networked Software: курс, який навчить використовувати шаблони, шаблонні мови, та каркаси для спрощення процесу розробки паралельних і мережних додатків.

 

 

 

 

Image and Video Processing: тут ми заглянемо за занавіс процесу обробки зображень та відео, від простих, класичних інструментів до більш складних алгоритмів.

 

 

 

 

 

 

Семестр 8

Machine Learning: навка про те, як змусити комп’ютери діяти, прямо їх на це не програмуючи. Саме завдяки цим технікам Google навчила автомобіль керувати самим собою, без чіткого словника перекладати тексти з однієї мови на іншу та надавати вам на стільки релевантні результати пошуку.

 

 

 

Natural Language Processing: навчання фундаментальним алгоритмам та математичним моделям для оробки природніх мов і їхньому практичному використанню.

 

Compilers: курс, в якому вивчаються та обговорюються основні ідеї, які нині використовуються для розробки компіляторів мов програмувань. Метою курсу є зрозуміти, як програма написана на високорівненвій мові програмування, розробленій для простого сприйняття людиною, транслюється у програму написану низькорівневому асемблері, створеному для комп’ютерів.

 

 

Paralel Programming: курс, який вчить використанню CUDA/OpenCL, OpenACC, та MPI для програмування гетерогенних паралельних обчислювальних систем. Курс є практично-орієнтованим, і лише надає вступ до необхідних технічних знань, чого, як на мене, цілком достатньо.

Коментарі

коментарі

Powered by Facebook Comments

Comments are closed.