2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 00:04 


03/02/16
20
Україна
Добрый вечер.
Сначала о ситуации в целом. У нас раньше на специальности "Компьютерные науки" читался трехсеместровый курс, связаный с программированием на JS, PHP, Java. Со следующего года, ввиду каких то там изменений планов, этот курс прекратит свое существование. Вместо него будут введены несколько новых курсов. Так сложилось, что в следующем учебном году по двум курсам лабораторные работы буду проводить я (лектор опытный преподаватель, который к тому же работает в IT). Первый курс будет связан с изучением HTML+CSS+JavaScript+TypeScript (ІІІ курс, 5 семестр). Второй курс будет связан с разработкой программного обеспечения для мобильных платформ ( в роли инструмента NativeScript+JS+TS) (IV курс, 7 семестр). В предыдущей теме я писал, что навыки програмирования у меня практически отсутствуют (не считая работы с Maple). С этой проблемой я подошел к лектору, на что он мне ответил, что на "лабах" можно не переживать, главное как-то оценивать. Меня такой вариант не устраивает (не люблю быть идиотом). Хочу разобраться в этих вопросах сам, на сколько это возможно. Теперь о проблемах.
1. В роли учебного пособия для себя выбрал "Современный учебник Javascript" http://learn.javascript.ru/, по совету этого же лектора. Годится ли он?
2. Проблема в том, что у меня нету понимания основ программирования. Был когда-то курс Pascal. Что можно почитать вводного (без погружения в глубину), что бы понимать термины "ООП, инкапсуляция, прототип, наследование и т.д."?
Знаю, что на этом форуме много работающих программистов и преподавателей, которые программируют. Буду рад любым советам. Теперь собственно о времени. Ввиду семейных обстоятельств готов уделять этому делу 1-1,5 часа в день. Насколько реально вникнуть до сентября хотя бы в основы JS? Или нужно пойти другим путем?

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 00:16 
Заслуженный участник


09/05/12
25179
Распределение нагрузки поменять совершенно невозможно? Я не хотел бы вас расстраивать, но мне кажется, что в описанной ситуации других решений нет, вы просто не догоните студентов, интересовавшихся тем, чему они учатся.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 00:54 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
NVV в сообщении #1378594 писал(а):
1. В роли учебного пособия для себя выбрал "Современный учебник Javascript" http://learn.javascript.ru/, по совету этого же лектора. Годится ли он?
Имхо да, хороший учебник. Но других я все равно не видел :wink:
NVV в сообщении #1378594 писал(а):
2. Проблема в том, что у меня нету понимания основ программирования. Был когда-то курс Pascal. Что можно почитать вводного (без погружения в глубину), что бы понимать термины "ООП, инкапсуляция, прототип, наследование и т.д."?
Вместо слова "прототип" должно бы стоять "полиморфизм"...
Но это детали. ООП - это в значительной степени про то, как лучше организовать код, когда его ОЧЕНЬ много. Пока кода мало (а у студентов на учебных проектах его будет мало), преимущества не так очевидны.
Изначально идея простая. Весь ООП состоит в принципе из нескольких понятий - абстракция, инкапсуляция, полиморфизм, наследование. Еще есть принципы SOLID. Каждый из этих принципов можно в одном-двух абзацах объяснить, теоретически. Дальше начинаются паттерны (грубо говоря, типовые проблемы и типовые подходы для их решения). Обычно, паттерн можно объяснить на нескольких страницах. Читать можно было бы Фаулера ("Рефакторинг. Улучшение существующего кода"), Кириевски "Рефакторинг с использованием шаблонов"...
Но самая большая проблема со всеми этими принципами и паттернами в том, что без практического опыта программирования вы просто не поймете, в чем именно там проблема. Это примерно как объяснять охотнику-собирателю из африканских джунглей проблему заготовки сена и дров на зиму крестьянами в средней полосе России. Тут я соглашусь с Pphantom - интересующийся студент, скорее всего, будет располагать гораздо большим временем, будет много писать для себя, и, рано или поздно, ощутит все это на своей шкуре.
Можно попробовать еще почитать Хабр по тегу ООП.

-- 26.02.2019, 23:12 --

NVV в сообщении #1378594 писал(а):
С этой проблемой я подошел к лектору, на что он мне ответил, что на "лабах" можно не переживать, главное как-то оценивать.
А вы внедрите TDD :mrgreen: (можете заодно с лектором обсудить, если он практик, то может и советов полезных даст).
Вкратце, суть подхода TDD в том, что вы сначала пишете автоматические тесты, которые должен проходить код, а потом пишете код. В вашем случае, у вас будет какая-то задача для лабораторной работы, и соответствующие тесты, а студенты должны будут принести решение, которое через эти тесты пройдет. Это, в общем-то, относительно просто. Тестирование для javascript описано в учебнике выше в главе Автоматические тесты при помощи chai и mocha.
NVV в сообщении #1378594 писал(а):
Ввиду семейных обстоятельств готов уделять этому делу 1-1,5 часа в день. Насколько реально вникнуть до сентября хотя бы в основы JS? Или нужно пойти другим путем?
Существенный момент, про который я совсем забыл, - это то, что с некоторых пор JS перестал быть скриптовым языком для исполнения в браузере, и уже давно существует серверный фреймворк node.js - там тоже javascript, но решающий немного другие задачи. Про него я ничего не знаю, а вот что касается клиентского javascript - то, имхо, если вы действительно уделите честных 200 часов изучению этой темы, какой-то толк может выйти. Опять же, заручитесь поддержкой лектора, чтобы хотя бы раз в неделю минут 15 обсуждать с ним какие-то непонятные места и расставлять приоритеты.
Перед курсом JS пробегите хотя бы по диагонали самоучители HTML и CSS. Они древнющие, конечно, но какие-то основы поймете.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 01:42 
Заслуженный участник
Аватара пользователя


30/01/06
72407
NVV в сообщении #1378594 писал(а):
2. Проблема в том, что у меня нету понимания основ программирования. Был когда-то курс Pascal. Что можно почитать вводного (без погружения в глубину), что бы понимать термины "ООП, инкапсуляция, прототип, наследование и т.д."?

Чтобы пользоваться объектиками, этого попросту не нужно. А лабораторные по JavaScript большего и не потребуют.

NVV в сообщении #1378594 писал(а):
Насколько реально вникнуть до сентября хотя бы в основы JS?

Я вижу вашу главную проблему сейчас в "пересаживании" с синтаксиса Pascal на C-подобный синтаксис. Если это не так, прошу подтвердить отдельно. Если у вас не вызывает проблем чтение примерно таких примеров:
    код: [ скачать ] [ спрятать ]
    Используется синтаксис Javascript
    function count() {
      var n = 2;
      n += 5; // теперь n=7 (работает как n = n + 5)
      n *= 2; // теперь n=14 (работает как n = n * 2)
      if (n == 14) {
        alert( 'Ok!' );
      } else {
        alert( 'Something gone wrong!' ); // любое значение, кроме 14
      }

      var i = 0;
      i++;
      ++i;
      var j;
      for (i = 0; i < 3; i++) {
        j = i * 2;
      }
      alert( i ); // i=3
      alert( j ); // j=4

      var arr = [];
      arr[1] = 123;
      arr[9999] = 456;
     
      for(var i in arr) {
          if (!arr.hasOwnProperty(i)) continue; // пропустить индекс, по которому нет элемента
         // ... сделать что-то с arr[i] ...
      }
    }
то одной проблемой меньше.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 11:55 


05/09/12
2587
Синтаксис - это последняя по значимости проблема. Подавляющее большинство прочитавших пример кода выше скажут, что им все понятно, однако не смогут пояснить отличия поведения выбранного декларирования var от let и const, а также сказать прочие страшные сопутствующие слова про области видимости, ES5 - ES6, бабель и т.п., не говоря уже о причине выбора фора перед форычем или редьюсом.

Вижу 3 варианта:

1) Быть идиотом, честно признав это перед студентами, дабы даже не помышляли подходить с вопросами на лабах. Иметь готовые тесты, через которые тупо прогонять их решения, и если проходит - ставить галочку, в противном случае сообщать "компьютер говорит 'нет'" (С). А на все вопросы отвечать "вам в лекциях все должны были объяснять, да и сейчас в интернете полно материалов на эту тему".

2) Не быть идиотом, сняв с себя эту нагрузку, как советовали в первом же ответе

3) Изучить в какой-то мере часть из перечисленного в стартовом посте, обрести некоторую уверенность в своих силах, и устроиться на нормальную работу программистом

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 12:46 
Экс-модератор
Аватара пользователя


23/12/05
12046
Я бы взял эти лабораторные и стал разбираться, отталкиваясь от них - на конкретных примерах: профи не станете, но, возможно, чем-то как-то сможете студентам помочь/понять/оценить.

TDD - хорошо, но это же придется сразу навязать студентам определенные интерфейсы, не знаю, насколько это оправдано/корректно/соответствует целям лабораторок.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 13:25 


03/02/16
20
Україна
Спасибо за ответы.
Pphantom в сообщении #1378600 писал(а):
Распределение нагрузки поменять совершенно невозможно?

Так никакой нагрузки пока нет на следующий год. Но у нас введено идиотское требование: каждый преподаватель может или вести пять полных курсов (лекции+практики+лабы) или десять по кускам (только лекции, только лабы и т.д.) в год. Раньше, этот лектор сам вел этот курс, а теперь ему не влезает из за этих ограничений, потому что на магистратуое много курсов новых (а лекторов, способных их прочитать очень мало). Планирование курсов на преподавателей начинается уже сейчас, пока без распределения часов. Поэтому отказаться я как бы и могу (но не могу, на самом деле).
rockclimber в сообщении #1378613 писал(а):
А вы внедрите TDD
:mrgreen: (можете заодно с лектором обсудить, если он практик, то может и советов полезных даст).

photon в сообщении #1378687 писал(а):
TDD - хорошо, но это же придется сразу навязать студентам определенные интерфейсы, не знаю, насколько это оправдано/корректно/соответствует целям лабораторок.

Попробую обсудить это с лектором. Может чего и получится.
Munin в сообщении #1378618 писал(а):
Если у вас не вызывает проблем чтение примерно таких примеров:

В основном, я понимаю, что делается в этом куске кода, кроме последнего for.
photon в сообщении #1378687 писал(а):
профи не станете, но, возможно, чем-то как-то сможете студентам помочь/понять/оценить.

Так я и хочу для начала научиться хотя бы приблизительно понимать код. В общих чертах, так сказать.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 14:16 
Заслуженный участник
Аватара пользователя


30/01/06
72407
NVV в сообщении #1378699 писал(а):
В основном, я понимаю, что делается в этом куске кода, кроме последнего for.

Ну, это мелочь, и лечится чтением учебника / документации. Что ж, рад за вас. Значит, ваши проблемы более высокоуровневые, и уж по крайней мере ерунда не будет в ногах путаться.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 17:15 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
NVV в сообщении #1378594 писал(а):
Так сложилось, что в следующем учебном году по двум курсам лабораторные работы буду проводить я
Кстати, интересно: а вы - это, собственно, кто? Не в том смысле, что "назовите ФИО и дату рождения", а, так сказать, по жизни. Чем именно вы занимались в вузе до этого, и как так получилось, что программированием вы не занимались, но бросили на него именно вас?

photon в сообщении #1378687 писал(а):
TDD - хорошо, но это же придется сразу навязать студентам определенные интерфейсы, не знаю, насколько это оправдано/корректно/соответствует целям лабораторок.
Студенты - пусть сразу учатся хорошему, а для преподавателя и учебного процесса в данной ситуации - это оптимальный вариант, имхо. Нужно же как-то проверять качество работ студентов, а в ситуации, когда преподаватель сам только начал работать с этим курсом, что еще остается делать, когда студент спрашивает: "Что с моим решением не так?" Отвечать "вам на лекции все должны были объяснить". А так будут тесты: ожидалось на выходе 0, а у вас программа выдает 1, алгоритм должен работать за линейное время, а у вас - квадратичное, и т. д. Естественно, тут все упирается в качество тестов. Должно быть понятно, что и как тестируется, и почему результат должен быть такой. Но время на подготовку еще есть. А в качестве бонусной программы для студентов - внеочередную пятерку тому, кто найдет баг или уязвимость в тестах. :wink:

NVV в сообщении #1378699 писал(а):
Так я и хочу для начала научиться хотя бы приблизительно понимать код. В общих чертах, так сказать.
Возможно, у меня профдеформация (жизнь в свое время заставила изучить с десяток языков, если языки разметки тоже считать), но мне показалось, что javascript - довольно простой язык. Я потратил на HTML+CSS+JS в общей сложности пару-тройку месяцев в том режиме, который вы можете себе позволить, и мне этого более чем достаточно для практической деятельности.
Единственное, что могу добавить: не ограничивайтесь чтением, пытайтесь писать и запускать код тоже. Лучше один раз увидеть, чем сто раз услышать.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 18:18 
Заслуженный участник
Аватара пользователя


30/01/06
72407
rockclimber в сообщении #1378771 писал(а):
Нужно же как-то проверять качество работ студентов, а в ситуации, когда преподаватель сам только начал работать с этим курсом, что еще остается делать, когда студент спрашивает: "Что с моим решением не так?"

Типичная лабораторка по программированию "проверяется руками", так что студент должен продемонстрировать выполнение задания, и вопросов "что не так" не возникает: либо результат есть, либо его нет.

Написать же автоматизированные тесты... Если бы речь шла об обычном курсе для Pascal, C++ etc, то это было бы легко. В случае web-programming-а тестирующая часть может потребовать использования инструментов или средств, выходящих за рамки стандартных или базовых. (Я не очень представляю себе, например, автоматизированную проверку правильности HTML+CSS-вёрстки.)

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 18:29 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Munin в сообщении #1378790 писал(а):
Написать же автоматизированные тесты... Если бы речь шла об обычном курсе для Pascal, C++ etc, то это было бы легко. В случае web-programming-а тестирующая часть может потребовать использования инструментов или средств, выходящих за рамки стандартных или базовых. (Я не очень представляю себе, например, автоматизированную проверку правильности HTML+CSS-вёрстки.)
Так верстку тестировать и не предполагается вроде, а что до тестирования javascript - то я выше давал ссылку (вот она еще раз), там все настолько просто, насколько вообще может быть просто. Я буквально дня три назад таки собрался с силами и начал делать тесты для своего хобби-проекта, пары часов чтения мне хватило.

P.S. А что до верстки, ну так у каждого HTML-элемента всегда можно спросить его цвет, offsetTop, offsetLeft, offsetWidth и offsetHeight. Ну и так далее.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 19:39 
Заслуженный участник


15/05/05
3445
USA
NVV в сообщении #1378594 писал(а):
Насколько реально вникнуть до сентября хотя бы в основы JS? Или нужно пойти другим путем?
До сентября осталось целых 6 месяцев. За это время вполне можно освоить все, что Вам нужно.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение27.02.2019, 20:07 


03/02/16
20
Україна
rockclimber в сообщении #1378771 писал(а):
Кстати, интересно: а вы - это, собственно, кто? Не в том смысле, что "назовите ФИО и дату рождения", а, так сказать, по жизни. Чем именно вы занимались в вузе до этого, и как так получилось, что программированием вы не занимались, но бросили на него именно вас?

На этот вопрос ответ очень длинный, поэтому помещаю под тег офтопа, да простят меня модераторы.

(Оффтоп)

Я работаю в Украине старшим преподавателем в провинциальном вузе, к тому же еще педагогическом, на кафедре прикладной математики и статистики. Понятно, что большинство наших специальностей педагогические. Но на физико-математическом факультете у нас раньше были три непедагогические специальности: "Прикладная математикиа", "Компьютерные науки" и "Статистика". Выпускающими кафедрами для этой специальности были две: наша и кафедра прикладной и теоретической информатики. В прошлом году опять изменились правила набора, поэтому нам не удалось сделать удачный набор на специальность "Прикладная математика" (всего 5 человек). В связи с этим сократилась нагрузка на обе кафедры. Так же, сократили строк обучения магистров ( с 2 до 1,5 года), что тоже сократило часы. Начиная с этого года мы будем набирать только статистиков и программистов, потому что дальше только хуже будет (повышение стоимости обучения и т.д.) Так случилось, что за эти три года с кафедры информатики ушло два очень толковых преподавателя(за границу), а молодежь, которая обучалась в столице в аспирантуре, там и осталась. Итого, на кафедре информатики осталось всего три человека (из 15 преподавателей и 12 лаборантов), которые могут прочитать хорошие курсы, а остальные кандидаты и доктора педнаук (читают в основном методики и информатику для других специальностей). Когда начали дробить курсы, оказалось, что этих троих мало, чтобы покрыть все боле-менее хорошие, поэтому начали привлекать остальных членов кафедры. Ясно, что они отказались. Так как наши завкафедры дружат (много международных проектов делали вместе), то начали искать у нас на кафедре. И так вышло, что попал я (по возрасту мне 32 и нас таких трое), потому что остальные вообще не сталкивались с понятием програмирования даже в матпакетах (специалисты в области теории вероятности и матстатистики), а я как раз читал несколько курсов для програмистов, где мы програмировали в Maple. Честно, я в прошлом году тоже собрался уходить, благо было куда на очень хорошее место, но так сложились семейные обстоятельства, что мне нужна свободная вторая половина дня. Собственно о себе: 32 года, канд.тех наук по 01.02.05 - механика жидкости, газа и плазмы.


rockclimber в сообщении #1378771 писал(а):
Я потратил на HTML+CSS+JS в общей сложности пару-тройку месяцев в том режиме, который вы можете себе позволить, и мне этого более чем достаточно для практической деятельности.
Единственное, что могу добавить: не ограничивайтесь чтением, пытайтесь писать и запускать код тоже. Лучше один раз увидеть, чем сто раз услышать.

Спасибо, постараюсь. В принципе это не невозможно и это главное.

 Профиль  
                  
 
 Re: Лабораторные по курсам программирования JS+TS и NativeScript
Сообщение24.05.2019, 12:56 


07/08/16
328
NVV в сообщении #1378594 писал(а):
1. В роли учебного пособия для себя выбрал "Современный учебник Javascript" http://learn.javascript.ru/
, по совету этого же лектора. Годится ли он?

Не знаю, актуально ли еще, но по Javascript для начального уровня вам подойдёт
1.Выразительный Javascript: Введение в программирование, Хавербек Марейн - http://booksdl.org/get.php?md5=bf0c6060 ... daea31ee76
Есть более новые издания этой книги, если знаете английский, лучше берите их.
2.Цикл статей на MDN - https://developer.mozilla.org/en-US/doc ... ript/Guide
3.JavaScript: сильные стороны, Д. Крокфорд - http://booksdl.org/get.php?md5=8d304745 ... 367c8d355c
Это не очень простая книга и возможно, её придётся читать ни один раз.

Я, когда изучаю новый язык, иду на http://codeforces.com/ и пытаюсь решать несложные задачи на изучаемом языке, чтобы учиться думать "в его терминах".

Если что-то не понимаете - идёте на https://stackoverflow.com/ (https://ru.stackoverflow.com/) и спрашиваете.

А если заинтересуетесь и пройдете все три ступеньки - выбираете полноценный framework for web development и разбираетесь с ним.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Модераторы, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: mihaild


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group