Вопрос, наверное, больше к тем, кто так или иначе сталкивался с преподаванием.
Стоит задача для второкурсников инженерной специальности (интеллектуальные транспортные системы) после элементарной базы программирования, которая им давалась на первом курсе на PascalABC.Net, организовать курс (на один семестр), покрывающий вопросы ООП, основы GUI-разработки и элементы алгоритмизации (наподобие алгоритмов на графах). Какой, на ваш взгляд, язык/технологический стек больше всего подходит под эти цели? Пока ориентир на C++/Qt, но, может быть, есть что-то получше (и в методическом плане, и в прикладном), например, какой-нибудь там Python/PyQt?
Здравствуйте, _hum_, Вы писали:
__> Вопрос, наверное, больше к тем, кто так или иначе сталкивался с преподаванием. __>Стоит задача для второкурсников инженерной специальности (интеллектуальные транспортные системы) после элементарной базы программирования, которая им давалась на первом курсе на PascalABC.Net, организовать курс (на один семестр), покрывающий вопросы ООП, основы GUI-разработки и элементы алгоритмизации (наподобие алгоритмов на графах).
В один семестр ООП, основы GUI и элементы алгоритмизации для непрограммистов ? Однако. Особенно при том, что, видимо, кроме Паскаля из языков они ничего не знают.
Задача ИМХО безнадежная, и кроме профанации, ничего не получится.
Можно взять Delphi для GUI — хоть новый язык не придется учить. Разумеется, Delphi полностью устарела, но тут хоть что-то cделать бы ...
P.S. Сколько часов в неделю на лекции и практику ?
PD>В один семестр ООП, основы GUI и элементы алгоритмизации для непрограммистов ? Однако. Особенно при том, что, видимо, кроме Паскаля из языков они ничего не знают.
PD>Задача ИМХО безнадежная, и кроме профанации, ничего не получится.
думаю, умение программировать на PascalABCNet дает хороший задел для того, чтобы усвоить эти темы за отведенное время (им важно познакомиться с концептами и заложить базис, чтобы, при случае, они могли сами доразобраться и применить на практике — все-таки это университет, а не колледж)
PD>Можно взять Delphi для GUI — хоть новый язык не придется учить. Разумеется, Delphi полностью устарела, но тут хоть что-то cделать бы ...
в таком варианте можно было бы и на PascalABCNet продолжить, но хотелось бы совместить с полезным (познакомить еще и с использующимися на практике языками программирования)
PD>P.S. Сколько часов в неделю на лекции и практику ?
Всего: 50 а.ч. — лек, 50 а.ч. — лаб, 34 а.ч. — курсовой. В неделю по плану 3/3.
Здравствуйте, _hum_, Вы писали:
__>Стоит задача для второкурсников инженерной специальности (интеллектуальные транспортные системы) после элементарной базы программирования, которая им давалась на первом курсе на PascalABC.Net, организовать курс (на один семестр), покрывающий вопросы ООП, основы GUI-разработки и элементы алгоритмизации (наподобие алгоритмов на графах).
Для "элементы алгоритмизации" наверное https://drakon.su, но это не точно.
Для OOP java+javafx (1),(2) — но большой объём.
__>Какой, на ваш взгляд, язык/технологический стек больше всего подходит под эти цели? Пока ориентир на C++/Qt, но, может быть, есть что-то получше (и в методическом плане, и в прикладном), например, какой-нибудь там Python/PyQt?
В сжатые сроки хорошо втиснится Ultimate++
Но если транспортные системы и еще "интеллектуальные" то R, Python и Matlab будут более логичными для анализа и моделирования.
Здравствуйте, _hum_, Вы писали:
__>после элементарной базы программирования, которая им давалась на первом курсе на PascalABC.Net
Эксперты в области программирования в своих книгах пишут, что программировать нужно не на языке, а с помощью языка. Это значит, что алгоритмы не "прибиты гвоздями" к конкретным языкам и платформам.
__>организовать курс (на один семестр), покрывающий вопросы ООП, основы GUI-разработки и элементы алгоритмизации (наподобие алгоритмов на графах).
Тоже самое, вот первая ссылка в поисковике Эволюция дизайна интерфейсов операционных систем с 1981 по 2009 годы. С чего изучать ООП, с шаблонов проектирования, с основных принципов, а может с науки логики (Логика — учебник для средней школы. Виноградов), которую ООП просто копирует и адаптирует под компьютеры.
__>Какой, на ваш взгляд, язык/технологический стек больше всего подходит под эти цели? Пока ориентир на C++/Qt, но, может быть, есть что-то получше (и в методическом плане, и в прикладном)
В прикладном вряд ли есть что лучше, сверхобъёмы кода, огромные возможности. Но в методическом это лишь один из вариантов. Практически весь Qt состоит из божественных объектов. Можно ли было этого избежать? Ведь тогда классов стало бы гораздо больше. А что у нас там создаёт метаобъектный компилятор? Готовы ли вы заплатить за интроспецию такую цену? А ведь C++ имеет и другие возможности позволяющие не искать компромиссов между абстракцией и высокой производительностью.
Я часто слышал такое мнение, что люди должны научиться всему сами. Преподаватель в ВУЗе или ещё где это дескать прокладка, говорящая голова, от него ничего не зависит, всё в руках учеников. Не могут они усвоить информацию, так это просто они глупые и/или не хотят учиться. В этом есть доля истины, но тогда от преподавателей нужно избавляться в массовом порядке. Если ученик может систематизировать весь материал сам, так он возьмёт книжку и не нужен ему никакой курс обучения, даже для первоначального освоения.
Есть ещё такой юмор, что дескать те, кто не умеют работать идут учить, а те кто не умеют учить идут руководить. Но есть и другое мнение, вроде как если не можешь объяснить что-то ребёнку, то и сам этого не понимаешь. Имеет ли преподаватель абсолютное понимание предмета или он просто штудирует чужую методчику? Думаю по-настоящему хороший преподаватель сможет научить программировать даже без языка программирования, так как объяснит саму суть. Плохой же будет читать не систематизированную лекцию ещё и заставляя записывать весь этот словесный понос.
Вся гениальность в простоте,
А не в закрученных понятиях,
Чем проще высказана мысль,
Тем больше в мыслях знания.
Чем глубже мысль, тем шире круг,
Её вселенского познания.
Чем больше мысли глубина,
Тем выше понимание.
Здравствуйте, _hum_, Вы писали:
__> Вопрос, наверное, больше к тем, кто так или иначе сталкивался с преподаванием. __>Стоит задача для второкурсников инженерной специальности (интеллектуальные транспортные системы) после элементарной базы программирования, которая им давалась на первом курсе на PascalABC.Net, организовать курс (на один семестр), покрывающий вопросы ООП, основы GUI-разработки и элементы алгоритмизации (наподобие алгоритмов на графах).
Собственно, фейспалм вам по этому поводу уже сказали, присоединюсь.
После курса Паскаля студенты будут минимум занятий 8-10 переучиваться на новый язык. Проверено. Готовьтесь под предлогом "повторить основы" учить их основам нового синтаксиса. Поверьте, дешевле будет, чем начать сразу с алгоритмики и потом видеть абсолютно не понимающие лица. Дальше: 1. Основы ООП — минимум рассказать и показать: 3-4 недели (лекция+практика). Причём под "минимумом" подразумевается, что они не путаются в синтаксисе, а не "освоили паттерны проектирования и умеют их применять". Если давать хотя бы "нормально", то +курсовая и разбор хотя бы основных архитектурных подходов занятий на 8-10 (с написанием примера какой-нибудь задачи и подробным разбором, почему так, а не иначе). Меньше не получится физически — ООП не работает на маленьких проектах.
2. Алгоритмы и структуры данных — по нормальному, отдельный курс (36 часов лекций + 36 часов практик + зачёт/экзамен). Тогда получится туда и разбор типовых алгоритмов поисков/сортировок впихнуть, и списки/стеки/хештаблицы и основы алгоритмов на графах. Ключевое слово "основы", типа поиска в глубину/ширину. Хотите подробнее + ещё курс примерно на 18/18, и то, это если не углубляться.
3. GUI — смотря что хотите. Простейшие прямоугольники/круги — за пару объясняются без труда. Как только дело доходит до чего-то более-менее серьёзного — нет. Основы трёхмерщины — пара лекций и лаб, чтобы студенты научились рисовать вращающийся кубик (минималка для того, чтобы они поняли, что такое матрицы). Базовые алгоритмы попиксельного рисования — ещё 2-3 недели (лекция+лаба). Если лезть в современные библиотеки и доходить до шейдеров и прочего, то добро пожаловать на отдельный курс, причём как бы не покруче, чем на алгоритмику.
В общем, в обозначенные временные рамки (ответ Павлу я читал) более-менее укладывается только повтор синтаксиса + базовые алгоритмы (про графы забудьте, в дебри "10+ видов сортировок" тоже лезть не советую) + ООП на уровне "слышали три матерных слова: инкапсуляция, наследование и это, забыл как называется" + рисование простейших плоскостных фигур, копирование картинок и т.д... Курсовая может как "вытащить", так и всё "убить", сильно зависит от группы и качества преподавания. Попробуйте дать какую-нибудь простую игру на ООП/графику в качестве курсовой (чтобы студентам было интересно) и разбирать на лекциях-практиках аналогичную игру в качестве примера. Тогда может получиться что-нибудь путное. Игры "на ООП" — это не тетрис/змейка и т.д., а что-нибудь типа "Tower defence" с максимально упрощённой графикой и правилами. Но заранее готовьте несколько тем "для тех, кто послабее".
__> Какой, на ваш взгляд, язык/технологический стек больше всего подходит под эти цели? Пока ориентир на C++/Qt, но, может быть, есть что-то получше (и в методическом плане, и в прикладном), например, какой-нибудь там Python/PyQt?
Питон — задумка интересная, но не рекомендую. На перспективу лучше что-нибудь максимально C-подобное, из серии C++/Qt или C# или Java. Если есть возможность, я бы поинтересовался, а что им будут читать дальше и попробовал бы выстроить линейку курсов в целом. А то может выясниться, что им дальше на Java что-нибудь читают, а тут вы с C++/C#/Pyton.
__> Заранее благодарен всем за конструктивные ответы.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Здравствуйте, _hum_, Вы писали:
__> Заранее благодарен всем за конструктивные ответы.
Если это радиоинженеры, то безусловно LabView и что-то простенькое на C. ООП, ГУЙ, ну это такое...
Здравствуйте, kov_serg, Вы писали:
_>Для "элементы алгоритмизации" наверное https://drakon.su, но это не точно. _>Для OOP java+javafx (1),(2) — но большой объём.
Откуда вы эту мертвечину берёте?!?
Здравствуйте, _hum_, Вы писали:
__> Вопрос, наверное, больше к тем, кто так или иначе сталкивался с преподаванием. __>Стоит задача для второкурсников инженерной специальности (интеллектуальные транспортные системы) после элементарной базы программирования, которая им давалась на первом курсе на PascalABC.Net, организовать курс (на один семестр), покрывающий вопросы ООП, основы GUI-разработки и элементы алгоритмизации (наподобие алгоритмов на графах).
Сразу вообще всё? Тут каждый пункт — на отдельный курс.
Если брать практику — то сейчас UI пишется на HTML+JS (или его вариантах).
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, kov_serg, Вы писали:
_>>Для "элементы алгоритмизации" наверное https://drakon.su, но это не точно. _>>Для OOP java+javafx (1),(2) — но большой объём. C>Откуда вы эту мертвечину берёте?!?
Не нравится не ешь. Или вы из секты поклонников js+html+css, которая избавит человечество от страданий?
И стремиться надо только к тому чтобы всё было через браузер и наступит всеобщее счастье?
Здравствуйте, kov_serg, Вы писали:
C>>Откуда вы эту мертвечину берёте?!? _>Не нравится не ешь. Или вы из секты поклонников js+html+css, которая избавит человечество от страданий?
Зачем студентов учить уже заведомо дохлому JavaFX, когда JS вполне себе пригоден для 99% случаев.
Здравствуйте, Cyberax, Вы писали:
C>Здравствуйте, kov_serg, Вы писали:
C>>>Откуда вы эту мертвечину берёте?!? _>>Не нравится не ешь. Или вы из секты поклонников js+html+css, которая избавит человечество от страданий? C>Зачем студентов учить уже заведомо дохлому JavaFX, когда JS вполне себе пригоден для 99% случаев.
Вы видимо им не пользовались https://openjfx.io/
Здравствуйте, kov_serg, Вы писали:
_>>>Не нравится не ешь. Или вы из секты поклонников js+html+css, которая избавит человечество от страданий? C>>Зачем студентов учить уже заведомо дохлому JavaFX, когда JS вполне себе пригоден для 99% случаев. _>Вы видимо им не пользовались https://openjfx.io/
Конечно, не пользовался. Потому как пользоваться заведомо дохлым продуктом, который ещё и не поддерживается на мобильных устройствах, — это нынче из области психиатрии.
Здравствуйте, Cyberax, Вы писали:
_>>Вы видимо им не пользовались https://openjfx.io/ C>Конечно, не пользовался. Потому как пользоваться заведомо дохлым продуктом, который ещё и не поддерживается на мобильных устройствах, — это нынче из области психиатрии.
Если вы просто потребитель то не пользуйтесь.
Здравствуйте, kov_serg, Вы писали:
_>>>Вы видимо им не пользовались https://openjfx.io/ C>>Конечно, не пользовался. Потому как пользоваться заведомо дохлым продуктом, который ещё и не поддерживается на мобильных устройствах, — это нынче из области психиатрии. _>Если вы просто потребитель то не пользуйтесь.
Угу, настоящие гурманы-созидатели предпочитают некрофилию, да.
Здравствуйте, Александр Кузнецов, Вы писали:
АК>После курса Паскаля студенты будут минимум занятий 8-10 переучиваться на новый язык. Проверено. Готовьтесь под предлогом "повторить основы" учить их основам нового синтаксиса. Поверьте, дешевле будет, чем начать сразу с алгоритмики и потом видеть абсолютно не понимающие лица. Дальше:
Молодому мозгу не только просто, но и полезно осваивать новые синтаксисы. Помнится у нас за 2 семестра языков программирования давали процедурное, ООП, функциональное и логическое программирование, а в конце этого годового курса немного про компиляторы и трансляторы. Вот, было по несколько лабораторных на каждый язык, на каждую парадигму их было по 1-2 языка. Справлялись, ничего сложного. Зато потом на старших курсах на лабораторных по численным методам или методам оптимизации каждый уже выбирал себе тот язык, который ему нравился.
Также за 1 семестр прошли Mathcad, Matlab и Maple. Было тоже по несколько лабораторных: в одном занимались статистическим моделированием, во втором матрицами и численными методами, а в третьем символьными вычислениями. Такой подход галопом по языкам очень круто расширяет кругозор, когда известные задачи решаются различными инструментами. В итоге всё равно за семестр нельзя стать супер специалистом где-нибудь, но каждый знает о том, какой инструмент можно выбрать.
Вообще, вспоминая учёбу, мы за 5 лет в той или иной мере программировали на 10-15 разных языков, это 2000-е годы.
_>Для "элементы алгоритмизации" наверное https://drakon.su, но это не точно.
Точно, точно.
Сообщаю: нас конкретно попросили сделать дракон-среду для разработки ПО для ПЛК.
Вот эта контора: https://www.owen.ru/
Там пишут не программисты, а инженеры.
Они алгоритмизировать в соответствии с требованиями могут без проблем.
Но потом надо все это перевести в коды и отладить.
Хотят, чтобы дракон-схема переводилась в код.
И кстати, отлаживать прямо по дракон-схеме.
Так что Дракон вполне себе жив, и применяется.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!