Дистанційне навчання інформатики в світових університетах. MOOC

Coursera — технологічна компанія, що працює в галузі освіти; заснована професорами інформатики Ендрю Нг та Дафні Коллер зі Стенфордського університету. Пропонує величезну кількість різноманітних курсів багатьох університетів.

EdX — платформа дистанційного навчання Massachusetts Institute of Technology та Harvard University.
Прослухавши кілька курсів з інформатики на цих платформах, хочу порадити деякі з них учням та вчителям інформатики.

1) Computer Science 101, Stanford University, викладач Nick Parlante.

Вступ до інформатики, оглядовий і загалом приблизно відповідає інформатиці середньої школи (власне в частині інформатики, не ІКТ). Зміст:
The nature of computers and code, what they can and cannot do
How computer hardware works: chips, cpu, memory, disk
Necessary jargon: bits, bytes, megabytes, gigabytes
How software works: what is a program, what is «running»
How digital images work
Computer code: loops and logic
Big ideas: abstraction, logic, bugs
How structured data works
How the internet works: ip address, routing, ethernet, wi-fi
Computer security: viruses, trojans, and passwords, oh my!
Analog vs. digital
Digital media, images, sounds, video, compression

Частина лекцій має російські субтитри (переклад любительський). Завдання — лише англійською. Використовується мова програмування, що базується на JavaScript.
Я б радила цей курс для вчителів — щоб побачити, що можна викладати теми у відносно нетрадиційному порядку, і учням — гарно узагальнює і оглядає те, що вивчали у школі.

2) Internet History, Technology, and Security, University of Michigan, викладач Dr. Chuck=Charles Severance (надзвичайно позитивний дядько, відео переглядаються на одному подиху).

 Курс про Інтернет, його історію, технології та безпеку. Найбільше про історію (розпочинаючи з Блетчлі-парку, Тюринга і компанії), багато інтерв’ю з людьми, які власне будували цю історію. ДУЖЕ цікаво, не стільки в ракурсі якигось нових технологічних знань (в принципі рівень інформації дещо вищий за шкільний курс, але не надто), скільки власне «як це було» і «звідки це взялось».
Раджу вчителям і учням, яким цікаві мережі, комп’ютерна техніка, історія. До невеликої частини лекцій є субтитри російською, але значно менше, ніж у попередньому курсі.

3) Learn to Program: The Fundamentals, University of Toronto, викладачі Jennifer Campbell, Paul Gries.

Не можу зайти в архів курсу, але по темах це базове програмування (саме написання коду). Шкільний «стандарт» охоплювався в 1 занятті, «академ» — в трьох, наскільки пригадую. Далі — глибше і ширше за профільний рівень.
Курс дуже хороший: чіткі пояснення, гарні завдання, дещо примітивні тести, але загальний результат мені сподобався. Середовище програмування Python. Цілком реально пройти учням, яким «набрид» Паскаль. Цікаво буде вчителям — послідовність викладання наших шкільних тем трохи інша, ну і самі пояснення: на що звертається увага, які приклади, як пояснюється.
Курс має продовження Learn to Program: Crafting Quality Code, але за браком часу я його не проходила, тож не можу коментувати.

4) An Introduction to Interactive Programming in Python, Rice University, викладачі Joe Warren, Scott Rixner, John Greiner та Stephen Wong.

 Цей курс я не закінчила, з середини курсу викладалось ООП, яке мені в даному курсі в той момент «не пішло» (хоча після завершення попереднього курсу Learn to Program: The Fundamentals і наступного 6.00x, напевно, пішло б краще).
Перша половина, тим не менш, містила дуже цікаві проекти, і викладачі з оригінальним почуттям гумору подавали цей курс як програмування ігор.
0    Statements, expressions, variables    
1    Functions, logic, conditionals    «Rock-Paper-Scissors-Lizard-Spock» game
2    Event-driven programming, local and global variables, buttons and input fields    «Guess the Number» game
3    The canvas, static drawing, timers, interactive drawing    Stopwatch: The Game
4    Lists, keyboard input, motion, positional/velocity control    «Pong» game
5    Mouse input, more lists, dictionaries, images    «Memory» game
6    Classes, tiled images    «Blackjack» game
7    Acceleration and friction, spaceship class, sprite class, sound    Spaceship from «RiceRocks» game
8    Sets, groups of sprites, collisions, sprite animation    Full «RiceRocks» game
Теж середовище Python, причому в авторському онлайновому варіанті http://www.codeskulptor.org/
Цей курс можна радити тим, хто добре зорієнтувався в мові Python після попереднього курсу.

5) 6.00x Introduction to Computer Science and Programming, MITХ, викладачі Eric Grimson та John Guttag

Курс виходить за рамки шкільної програми, це курс університету, ну але рівня перших курсів (власне, в тому середовищі, де цей курс викладається, його слухають не лише майбутні програмісти, це курс «загального користування»). Середовище програмування — Python.

Introduction to Computer Science
Core Elements of Programs
Simple Algorithms
Functions
Recursion
Objects and Types
Debugging
Efficiency and Orders of Growth
Searching and Sorting
Classes
Object Oriented Programming
Plotting
Simulations and Random Walks
Sampling and Monte Carlo Methods
Statistical Thinking
Using Randomness to Solve Non-Random Problems
Curve Fitting
Optimization
Graphs
Graphs
Dynamic Programming
Statistical Fallacies
Interviews with Professors: Fields of CS Research
Summary

Для мене це був найскладніший з прослуханих курсів, коли доводилось серйозно вникати в матеріал і думати над завданнями і проектами. Але це дуже цікавий курс, зокрема в першій половині (до графіків). Дуже вдалі проекти, покроково прописані (але не в стилі «клацнути там-клацнути сям», а описані логічними етапами). Субтитри англійські.
Можна порадити тим, хто гарно розібрався з Python (бо на саме середовище в курсі час не відводиться), і хоче вникнути в саме інформатику, computational thinking постійно наголошується в лекціях і завданнях.

6) CS50x Introduction to Computer Science, HarvardX, викладач David J. Malan.

 Починала слухати в режимі відео-лекцій http://cs50.tv/2012/fall/, тепер хочу спробувати з розв’язуванням завдань, якщо знайду на це час.
 Зміст курсу:
Week 0 Introduction. Bits. Binary. ASCII. Programming. Algorithms. Statements. Boolean expressions. Conditions. Loops. Variables. Threads. Events.
Week 1 C. Source code. Compilers. Object code. Functions. Comments. Standard output. Arithmetic operators. Precedence. Local variables. Types. Casting. Standard input. Libraries. Boolean expressions…
Week 2 Functions, continued. Global variables. Parameters. Return values. Stack. Frames. Scope. Arrays. Strings. Command-line arguments. Cryptography.
Week 3 Linear search. Binary search. Asymptotic notation. Bubble sort. Selection sort. Merge sort.
Week 4 Recursion. Debugging. File I/O. Structures. Pointers. Dynamic memory allocation. Heap.
Week 5 CS50 Library. Pointers, continued. Forensics.
Week 6 Linked lists. Stacks. Queues. Hash tables. Trees. Binary search trees. Tries.
Week 7 Huffman coding. Bitwise operators. HTTP. HTML.
Week 8 CSS. PHP. SQL.
Week 9 SQL, continued. JavaScript. Ajax. Design.
Week 10 Security.
Week 11 Life after 50.

Спосіб викладання (іноді складається враження, що я комічне ток-шоу дивлюсь, а не лекцію з Гарварду), приклади, ілюстрації до алгоритмічних конструкцій — все це цікаво подивитись для вчителя, але може бути надто складним для учня. Використовується цілий букет мов і середовищ: C, PHP, JavaScript, SQL, CSS, та HTML… В описі вказано, що для усіх, і без попереднього досвіду вивчення програмування, але щось я сумніваюсь, що початківець у власне програмуванні це потягне. Цікаво, що перше завдання присвячене середовищу Scratch — який вивчатимуть другокласники 🙂 Загалом завдання досить складні (кожне має 2 рівні: стандарт і Хакер), але досить різноманітні (біологія, криптографія, фінанси, криміналістика, ігри); в принципі їх можна адаптовувати, і фрагментарно використовувати на уроках.

7) Creative Programming for Digital Media & Mobile Apps, University of London, викладачі Dr Marco Gillies, Dr Matthew Yee-King, Dr Mick Grierson.

 Курс програмування програм для мобільних пристроїв у середовищі Processing — щось схоже до Java Script, але не таке (бо насправді він перетворюється на Java Script для виконання в браузері, але це вже деталі).
З точки зору програмування — це рівень шкільної програми, приблизно академічний, але курс не про це. Власне ця «теорія» викладалась окремими лекціями — для тих, хто програмує вперше (хоча саме ці лекції не дуже вдалі, як на мене). Курс присвячений саме аспектам мобільних програм: це графіка (малювання і картинки), взаємодія з мишею/пальцем на тачскріні, робота з відео/аудіо, взаємодія з акселерометром мобільного пристрою, створення інтерфейсу користувача.
Курс побудований так, що кожен студент виконує проект, який оцінюють інші студенти. Тому викладається багато прикладів проектів, можна побачити багато цікавих ідей.
Раджу курс учням, які хочуть щось витворити зі своїм смартфоном, бо власне програмування у курсі легке (зокрема, в першій частині в аспекті малювання ліній, їх кольорів і т.д.)

8) Beginning Game Programming with C# , University of Colorado, викладач  Dr. Tim «Dr. T» Chamillard

Курс початкового програмування мовою С# та розширенні XNA. Дуже цікаво та доступно пояснюються основи об’єктно-орієнтованого програмування у середовищі Visual Studio. Протягом курсу учасники створюють проекти, як у консольному варіанті, так і в графічному. Проекти оцінюються іншими учасниками за критеріями, розробленими викладачем.
Курс є базовим, проте створені проекти дозволяють відчути смак розробки ігор у сучасному середовищі програмування.

Курси 5 і 6 це платформа EdX, решта — Coursera.
Звичайно, курсів пропонується значно більше, ніж я описала, але це ті, які можуть бути цікавими для учня/вчителя.
Всі вони передбачають певний процес навчання, це не книги, які читаєш автономно. Потрібно проглянути слайди, прослухати лекцію для того, щоб прояснити моменти на слайдах, або вивчити тему, по ходу лекції пропонуються простенькі питання, після лекції тест по матеріалу, а раз на тиждень — завдання з програмування, яке потрібно підготувати в себе на комп’ютері і надіслати в систему. Посередині курсу зазвичай є додатковий контроль: більший тест або більше завдання. В кінці — великий тест та/або фінальний проект. Часто практикується цікава форма оцінювання — іншими студентами. Тобто я виконую завдання, і 5 інших студентів його перевіряють за певними критеріями. Я теж маю перевірити 5 студентів. В цьому є певні недоліки, ну але при десятках тисяч студентів не буде ж викладач всі ці роботи перевіряти…

Окремо про сертифікацію — всі ці курси видавали сертифікат про проходження курсу, якщо виконати певний відсоток завдань (50-70%). Цей сертифікат не має офіційного визнання, він лише підтверджує прикладені зусилля.