Сьогодні пройшов завдання 7-го тижня #CS50 від
Прометеуса. Завдання було як на мене простіше, ніж позаминулого тижня.
Необхідно було формувати власний словник за вказаним файлом а потім перевіряти
текст в іншому файлі на наявність/відсутність слів в словнику (аля синтаксична
перевірка). Оцінювалися часові показники роботи алгоритму. Для реалізації
пропонувалося 2 варіанти: використання хеш-таблиці або префіксне дерево. Дане
завдання більш направлено не на вивчення "С" а на теорію алгоритмів.
Це те, чого явно бракує самоучкам в програмуванні, типу мене. Так що, користь звісно
є. Отже, трохи висновків:
1. Хеш-списки, дерева – це та штука яка точно потрібна всі
програмістам, навіть програмістам-автоматчикам (чуєте самоучки!?).
2. Приклади з CS50 явно кращі ніж класичні "порахуйте формулу" та "знайдіть
рішення рівняння", якими забивали на класичній інформатиці. Цікавість
прикладу тримає студента не на "треба" а на "хочу".
У описі завдання були застереження, які я не зрозумів. Наприклад
"Крім регістру, ваша реалізація check повинна повертати true лише для
слів, які дійсно є в словнику. Будьте обачні і не захардкодьте слова, які часто
зустрічаються (наприклад the), щоб запобігти проблем якщо ми передамо вашій
реалізації словник (dictionary) без них.)" У таких випадках, я, як завжди залишив це
нерозуміння не потім. Але коли перевірка
пройшла вдало, вже не переймався цим фактом. Те саме стосується і помилок на
перевірку valgrind. Отже:
3. При розробці курсів треба враховувати неоднозначність результатів
і множину рішень. Якщо можна пройти простішим шляхом, люди завжди підуть по
ньому. Можливо помилки в пам'яті
треба створювати штучно в прикладах, щоб людина навчилася їх шукати за
допомогою вказаних інструментів.
Помічаю що не вистачає конспекту. Відео - це добре, але
хочеться все тримати в одному файлі-конспекті. При такій великій кількості
паралельних робіт (в тому числі програмуванні у інших середовищах) важко
згадати що там в "С". Відео-уроки та відео-підказки (а їх там просто
неміряно) не зручні в цьому плані. Тому користуюся Інтернетом, благо матеріалу там
багато і знайти його простіше. Це ще
один досвід, який я отримав і буду враховувати в своїх курсах:
4. Повинен бути конспект! Або свій, або готовий, але доступний для редагування.
Матеріали у відео повторюються. З одного боку - це добре, "повторение
– мать учения!", але з іншого – потребує більше часу. Адже не знаєш, чи
варто пропускати це відео, бо там може бути якась цінна інформація, яку ти не
чув в попередньому. Це ще один мінус до відеоматеріалів , як мінімум матеріали треба
дублювати текстом. У будь якому випадку:
5. Багато матеріалу це не плюс, а мінус, тим більше коли він
дублюється. Весь додатковий матеріал, не потрібний для "поборення" завдання
треба винести окремо. У своєму дист.курсі "пром. мережі" відео писав
не для курсу, тому його там заздалегідь було більше ніж треба для даного курсу.
Це я вже знав на початку курсу, але час піджимав, тому змирився з цим. Бачу, що
лишнє треба рубати.
Чекаю наступного тижня. Виділяти час для курсу все важче,
але "лупайте сю скалу!"
Комментариев нет:
Отправить комментарий