суббота, 11 июня 2016 г.

7-й тиждень курсу #CS50



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

Комментариев нет:

Отправить комментарий