Ну, опять я пристаю к уважаемому ALL все с тем же вопросом...
Чему и как учиить в программировании?
Глобально мне видятся такие направления:
1. Языки и связанные с ними понятия...
2. Базы данных
3. Интернет-программирование...
4. Взгляд сверху — проектирование, архитектура, парадигмы...
5. Да, еще ОСи... Поскольку в 3 — сетевое программирование...
Если по поводу 1 — я все знаю, то по поводу 2 — в недоумении... Теории практически нет... Единственное, что нужно там — рассказать об ООП-БД и реляционных... Ну, еще о нормализации... Фактически нужно учить совершенно КОНКРЕТНЫМ вещам... SQL... и как через ODBC связаться с базой на сервере... И тоому подобным вещам...
По поводу 3 — я вообще в шоке... Настолько здесь много всего... Причем, опять же теории никакой, а все сплошь практика...
Вот как раз о 3 я и хотел поговорить более всего...
С чего начинать, чем продолжать и куда двигать?
Если ориентированться на Дотнет... То как бы это составить целостную картину всего...
Учитывая, что студентов нужно учить конкретике, но не забывать показывать место изучаемого в общей картине...
HTML, XML, VBScript, JScript, ASP... Веб-сервисы...
Java, JSP и все с эттим связанное?...
PHP — ? PERL?
Или завязаться полностью на Додиез? Тем более, что там же и Веб-сервисы и ХМЛ и ASP...
Вообще, каким образом можно постороить этот курс — Интернет программирование?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, опять я пристаю к уважаемому ALL все с тем же вопросом... LVV>Чему и как учиить в программировании? LVV>Глобально мне видятся такие направления:
LVV>1. Языки и связанные с ними понятия... LVV>2. Базы данных LVV>3. Интернет-программирование... LVV>4. Взгляд сверху — проектирование, архитектура, парадигмы... LVV>5. Да, еще ОСи... Поскольку в 3 — сетевое программирование...
LVV>Если по поводу 1 — я все знаю, то по поводу 2 — в недоумении... Теории практически нет... Единственное, что нужно там — рассказать об ООП-БД и реляционных... Ну, еще о нормализации... Фактически нужно учить совершенно КОНКРЕТНЫМ вещам... SQL... и как через ODBC связаться с базой на сервере... И тоому подобным вещам...
LVV>По поводу 3 — я вообще в шоке... Настолько здесь много всего... Причем, опять же теории никакой, а все сплошь практика... LVV>Вот как раз о 3 я и хотел поговорить более всего... LVV>С чего начинать, чем продолжать и куда двигать? LVV>Если ориентированться на Дотнет... То как бы это составить целостную картину всего... LVV>Учитывая, что студентов нужно учить конкретике, но не забывать показывать место изучаемого в общей картине... LVV>HTML, XML, VBScript, JScript, ASP... Веб-сервисы... LVV>Java, JSP и все с эттим связанное?... LVV>PHP — ? PERL?
LVV>Или завязаться полностью на Додиез? Тем более, что там же и Веб-сервисы и ХМЛ и ASP...
LVV>Вообще, каким образом можно постороить этот курс — Интернет программирование?
И кстати... В Осях — естественно учим API...
Но еще, например, для винды — COM — DCOM — изучать ли?
Или сразу ориетироваться в сторону дотнетовских решений?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Опыта преподавания у меня нет, поэтому буду говорить, как человек учащийся, свои пожелания.
LVV>1. Языки и связанные с ними понятия...
Тут я хотел бы, чтобы в курсе были рассмотрены императивное программирование(С или С++), пара функциональных языков(например OCaml, Lisp, Erlang,...) с демонстрацией простых приемов программирования на них и преимуществ каждого вида программирования на примере конкретных классов задач.
LVV>2. Базы данных LVV>3. Интернет-программирование... LVV>4. Взгляд сверху — проектирование, архитектура, парадигмы...
Тут хотелось бы рассмотрения самых употребительных паттернов из GoF + пара заданий. Задания такие, что каждое из них может быть решено несколькими приемлимыми способами. От студентов требуется не только решить, но и рассказать о преимуществах своего решения.
LVV>5. Да, еще ОСи... Поскольку в 3 — сетевое программирование...
Тут Windows + Linux.
LVV>По поводу 3 — я вообще в шоке... Настолько здесь много всего... Причем, опять же теории никакой, а все сплошь практика... LVV>Вот как раз о 3 я и хотел поговорить более всего... LVV>С чего начинать, чем продолжать и куда двигать? LVV>Если ориентированться на Дотнет... То как бы это составить целостную картину всего... LVV>Учитывая, что студентов нужно учить конкретике, но не забывать показывать место изучаемого в общей картине... LVV>HTML, XML, VBScript, JScript, ASP... Веб-сервисы... LVV>Java, JSP и все с эттим связанное?... LVV>PHP — ? PERL?
Забить на это. Когда пойдут работать, сами все изучат. В крайнем случае сделать разделение на специализации на 5-ом курсе.
LVV>Если по поводу 1 — я все знаю, то по поводу 2 — в недоумении... Теории практически нет... Единственное, что нужно там — рассказать об ООП-БД и реляционных... Ну, еще о нормализации... Фактически нужно учить совершенно КОНКРЕТНЫМ вещам... SQL... и как через ODBC связаться с базой на сервере... И тоому подобным вещам...
нууу, тут имхо смешались в кучу кони-люди.
sql-ю учи. учи так, чтоб во-всяком случае знали, что такое план запроса.
а ODBC.... сами выучат.
LVV>По поводу 3 — я вообще в шоке... Настолько здесь много всего... Причем, опять же теории никакой, а все сплошь практика... LVV>Вот как раз о 3 я и хотел поговорить более всего... LVV>С чего начинать, чем продолжать и куда двигать?
начать, как и все начинают, нужно с модели OSI
а дальше.... на HTML, XML (XSL/XPATH/etc) — забивай сразу. до глубинных тонкостей в объяснениях вряд ли успеешь дойти, только время зря потратишь. а самые азы человек, которому это нужно, выучит сам — хотя бы на http://www.w3schools.com/. а которому не нужно — так ему вообще всё равно что рассказывать.
после OSI начинай рассказывать про IP. udp, tcp.
обязательно заставь написАть пару лаб с со старыми добрыми bsd sockets. на С. под *nix. покажи inetd. покажи как хорошо и красиво можно использовать stdio с сокетами. покажи O_NONBLOCK, select/poll. и не просто покажи, заставь сделать. Нельзя дать много заданий — раздели людей на группы и дай каждой группе своё.
у меня вот товарищ в Австралии учится, так у него лабы (по неделям):
1. C/*nix — клиент и сервер(fork), передача файла, tcp протокол.
2. C/*nix — клиент и сервер(1-пользовательский), передача файла, udp, ARQ.
3. java, оч.простой http-прокси (только метод GET)
4. java, CORBA, распределёная система, > 2х частей.
(что дальше будет не знаю, сейчас 4-ая неделя)
к работам 1-3 прилагается отчет — сравнение того что есть в RFC и того что реализовано, плюсы-минусы.
мне кажется — это интересно, полезно.... намного полезней чем рассказ про HTML. и в жизни пригодится.
закончишь с самописными серверами — приступай к уже существующим.
расскажи про апач и APR, заставь написАть модуль — там необычная, всяко заслуживающая внимания архитектура.
заодно и про nsapi расскажи, ещё один plugin... после апача это уже будет просто.
эти знания (если они получатся) и опыт отладки — это опыт надолго.
после этого можно хоть j2ee пробовать, хоть php.
всё будет выглядеть для слушателя _совершенно_иначе_.
зы я сам закончил вуз несколько лет назад. хорошо помню свой курс сетевого программирования. НЕ_О_ЧЁМ. HTML + PERL_или_PHP в крайне малых дозах. так — нельзя.
сейчас наблюдаю современных студентов в виде младших товарищей на работе. неглупые ребята — но не знают как проверить телнетом, поднят ли tcp-сервер на другой машине. и множества прочих элементарных вещей. универ — не научил.
измени ситуацию
Re[2]: Чему сейчас учить в области программирования?
Здравствуйте, yacc, Вы писали: Y>...
Извини, но как преподаватель, могу сказать, что ты как-раз намешал в кучу _все_, что можно.
И сетевые технологии и распределенные системы и серверное программирование.
Нельзя давать материал студентам так, как ты написал. Т.к. главное для студента не набраться
понемногу от всего, а упорядочить свои знания.
Поэтому надо разделять мух от котлет.
Во-первых — сетевая архитектура это одно, а программирование под сети — это другое.
Во-вторых — программирование PHP — это вообще недоразумение и учить ему стоит только
в качестве факультатива. Вот чему учить, так это ASP.
В-третьих — HTML + XSL/XPATH — учить нормальному HTML дизайну это дело довольно небыстрое,
другое дело, что для программистов в основном ненужное. А перспектива XSL/XPATH — для меня
довольно туманна.
Ну и последнее — выучить можно все самому, вопрос только в том, сколько на это потребуется
усилий без наставника (преподавателя).
PS
Сам веду курсы про сетевые протоколы и HTML + ASP. Сейчас планирую разработать что-то под .NET.
Здравствуйте, LaptevVV, Вы писали:
LVV>Вообще, каким образом можно постороить этот курс — Интернет программирование?
Это очень обширная тематика. Определись, что ты хочешь дать студентам.
Все, что связано с C# без предварительных курсов по .Net Framework и самому шарпу
ИМХО безсмысленно. Поэтому лучше чистый API.
Потом, Web-сервисы работают в паре с протоколом HTML и давать их в отрыве от него
тоже малопонятно.
Что остается? Программирование распределенных систем? Но оно тоже далено не всегда
связано с интернетом. Базы данных — также в основном не связаны с интернетом.
Опять-же ASP и PHP куда девать?
Я считаю, что название подразумевает очень широкий курс, который охватит смежные
тематики, что не есть хорошо и потребует времени на четыре семестра.
Поэтому стоит сузить сам предмет до разумных пределов и не кидаться рассказать все
сразу. Можно выбрать или ASP + PHP + Web-сервисы или рассматривать протоколы интернета.
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, опять я пристаю к уважаемому ALL все с тем же вопросом... LVV>Чему и как учиить в программировании?
Собственно говоря, кого учим? Подготавливаем программистов-пратиков, востребованых на рынке? Или теоретиков, способных двигать IT индустрию, придумывать новые подходы, парадигмы, ..?
Здесь главное не зацикливаться на императивных языках программирования, а рассмотреть ещё декларативные и функциональные. При этом желательно рассмотреть разные языки в каждой категории... там Python, perl, javascript (на самом деле удивительный язык) и т.д..
LVV>2. Базы данных
Зря вы так про теорию... По-хорошему, эту тему надо начинать с реляционной алгебры...
LVV>3. Интернет-программирование...
Посмотреть в сторону Web2, Semantic Web, RDF, OWL, XQuery.
LVV>4. Взгляд сверху — проектирование, архитектура, парадигмы...
Про это ничего не могу сказать...
LVV>5. Да, еще ОСи... Поскольку в 3 — сетевое программирование...
Здесь тоже желательно не зацикливать на всяком конкретном API, а начинать с общих вещей и теории... Я бы посоветовал построить курс по книге Таненбаума. Если бы я сейчас учился в универе, то был бы рад, если бы вместо виндов и лункса преподование ОС шло на базе MINIX, где можно нормально покапаться во внутренностях (Linux для этих целей не подходит из-за монолитности ядра).
Re[2]: Чему сейчас учить в области программирования?
LVV>>1. Языки и связанные с ними понятия...
DB>Здесь главное не зацикливаться на императивных языках программирования, а рассмотреть ещё декларативные и функциональные. При этом желательно рассмотреть разные языки в каждой категории... там Python, perl, javascript (на самом деле удивительный язык) и т.д..
Здесь забыл добавить, что если в Университете нет курса "Тестирование программ", то для императивных и функциональных языков программирования можно сделать несколько лекций о тестировании: критерии тестированности, мутационное тестирование, тестирование методом потока данных, возможности автоматического построения тестов, доказательство корректности программ, пред-условия, пост-условия, инварианты циклов и т.д..
Re[3]: Чему сейчас учить в области программирования?
Здравствуйте, De-Bill, Вы писали:
LVV>>2. Базы данных
DB>Зря вы так про теорию... По-хорошему, эту тему надо начинать с реляционной алгебры...
А еще лучше — с понятия модели данных. И рассмотреть несколько примеров. Чтобы потом не думали,
что базы данных бывают только реляционными (ну и еще иногда ОО).
Ну, чтоб прояснить ситуацию, напишу дисциплины, которые связаны с программированием по моей специальности...
0. Введение в специальность, 1 семестр — думаем в связи с 3 и 4
1. Информатика, 1 семестр — готовим ГРАМОТНОГО пользователя
2. Дополнительные главы информатики, 1 семестр — можем давать все, что угодно... Думаем в связи с 3 и 4...
3. Языки программирования высокого уровня, 2 семестра — сейчас думаем, чему учить
4. ООП — 2 семестра — тоже думаем, в связи с 3
5. Организацияч ЭВМ и систем, 1 семестр
6. Операционные системы, 1 семестр
7. Системное ПО, 1 семестр
8. Технологии программирования, 1 семестр
9. Информационные технологии, 2 семестра, но один семестр нужно читать то, что в стандарте записано, зато второй можно сделать каким угодно...
10. Базы данных, 1 семестр — ну, от стандарта сильно отрываться нельзя, но понятно, что здесь давать. Дейт, или Кренке — самое то...
11. Системы искусственного интеллекта
12. Системы реального времени
13. Сети ЭВМ и телекоммуникации, 2 семестра
Вот что написано в стандарте
ОПД.Ф.11 Сети ЭВМ и телекоммуникации
Классификация информационно-вычислительных сетей. Способы коммутации. Сети одноранговые и “клиент/сервер”. Уровни и протоколы. Эталонная модель взаимосвязи открытых систем. Аналоговые каналы передачи данных. Способы модуляции. Модемы. Цифровые каналы передачи данных. Разделение каналов по времени и частоте. Характеристики проводных линий связи. Спутниковые каналы. Сотовые системы связи. Кодирование информации. Количество информации и энтропия. Самосинхронизирующиеся коды. Способы контроля правильности передачи информации. Алгоритмы сжатия данных. Локальные вычислительные сети. Методы доступа. Множественный доступ с контролем несущей и обнаружением конфликтов. Разновидности сетей Ethernet. Маркерные методы доступа. Сети Token Ring и FDDI. Высокоскоростные локальные сети. Организация корпоративных сетей. Функции сетевого и транспортного уровней. Алгоритмы маршрутизации. Протоколы TCP/IP. Протоколы управления. Адресация в Internet. Особенности технологий Frame Relay, ATM, SDH. Сетевые операционные системы. Технологии распределенных вычислений. Структура и информационные услуги территориальных сетей. Протоколы файлового обмена, электронной почты, дистанционного управления. Виды конференц-связи. Web-технологии. Языки и средства создания Web-приложений.
Но можем договорится с дружественной кафедрой — они нам все программирование прочитают... Вопрос, какое программирование
14. Методы и средства защиты компьютерной информациии
ОПД.Ф.12 Методы и средства защиты компьютерной информации
Основные понятия и определения. Источники, риски и формы атак на информацию. Политика безопасности. Стандарты безопасности. Криптографические модели. Алгоритмы шифрования. Модели безопасности основных ОС. Администрирование сетей. Алгоритмы аутентификации пользователей. Многоуровневая защита корпоративных сетей. Защита информации в сетях. Требования к системам защиты информации.
15. Сетевые технологии, 1 семестр
СД.05 Сетевые технологии
Классификация сетей; интеграция информационного сервиса пользователей; концепция архитектуры открытых систем как основа построения цифровых сетей интегрального обслуживания (ISDN); основные этапы построения сетей; иерархия моделей процессов в сетях; АТМ-технология; анализ и синтез топологической структуры магистральной и локальной сети; административное и оперативное управление сетью; управление режимами коммутации; адаптивная коммутация; управление обменом информации в сетях; адаптивная маршрутизация; архитектура узлов управления и коммутации ISDN; пакеты в ISDN; оценка эффективности сетей; перспективы развития ISDN; широкополосные B-ISDN.
Сейчас на вскидку не вспомню — мож еще чего есть — 1, 2 курса...
Вот и думай тут, что сейчас давать... Тем более — все так стремительно развивается...
ALL — в конспективном плане изложимте, что сейчас ВОСТРЕБОВАНО реально...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Чему сейчас учить в области программирования?
Здравствуйте, LaptevVV, Вы писали:
LVV>>Теории практически нет... Единственное, что нужно там — рассказать об ООП-БД и реляционных... Ну, еще о нормализации... Фактически нужно учить совершенно КОНКРЕТНЫМ вещам... SQL... и как через ODBC связаться с базой на сервере... И тоому подобным вещам.
нужно учить проектировать БД, а конкретные вещи — это одна практическая обьясняющая как из явы соединиться с базой и выполнить сиквел.
LVV>И кстати... В Осях — естественно учим API... LVV>Но еще, например, для винды — COM — DCOM — изучать ли?
в курсе ОС учат как они устроены, а приладные интерфесы учить не стоит, сами разберуться
Re[3]: Чему сейчас учить в области программирования?
Здравствуйте, cencio, Вы писали:
C>Здравствуйте, LaptevVV, Вы писали:
LVV>>>Теории практически нет... Единственное, что нужно там — рассказать об ООП-БД и реляционных... Ну, еще о нормализации... Фактически нужно учить совершенно КОНКРЕТНЫМ вещам... SQL... и как через ODBC связаться с базой на сервере... И тоому подобным вещам. C>нужно учить проектировать БД, а конкретные вещи — это одна практическая обьясняющая как из явы соединиться с базой и выполнить сиквел.
Ну, как проектировать — эт не теория... Эт как раз практика... Этому — учим...
LVV>>И кстати... В Осях — естественно учим API... LVV>>Но еще, например, для винды — COM — DCOM — изучать ли? C>в курсе ОС учат как они устроены, а приладные интерфесы учить не стоит, сами разберуться
Ну, в лекциях — как устроены... А на лабах — программируем же... На АПИ...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Чему сейчас учить в области программирования?
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, cencio, Вы писали:
C>>Здравствуйте, LaptevVV, Вы писали:
LVV>>>И кстати... В Осях — естественно учим API... LVV>>>Но еще, например, для винды — COM — DCOM — изучать ли? C>>в курсе ОС учат как они устроены, а приладные интерфесы учить не стоит, сами разберуться LVV>Ну, в лекциях — как устроены... А на лабах — программируем же... На АПИ...
у нас процесс по другому поставлен — проектрование ОС, т.е. на лекциях разбираем принципы построения, на лаборах — программируем модельную ОС ,желающие могут писать ОС, работающую ан реальном процессоре
memega
Re[5]: Чему сейчас учить в области программирования?
Здравствуйте, Мемега, Вы писали:
LVV>>>>И кстати... В Осях — естественно учим API... LVV>>>>Но еще, например, для винды — COM — DCOM — изучать ли? C>>>в курсе ОС учат как они устроены, а приладные интерфесы учить не стоит, сами разберуться LVV>>Ну, в лекциях — как устроены... А на лабах — программируем же... На АПИ...
М>у нас процесс по другому поставлен — проектрование ОС, т.е. на лекциях разбираем принципы построения, на лаборах — программируем модельную ОС ,желающие могут писать ОС, работающую ан реальном процессоре
Ого! Круто! Сильно полезно для повышения квалификации программеров...
Только вряд ли найдутся реальные задачи по написанию осей, а вот по использованию АПИ — половина рсдна этим занимается...
Поэтому я и решил когда-то — лучше апи давать, чем написание оси...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Чему сейчас учить в области программирования?
Здравствуйте, LaptevVV, Вы писали:
LVV>Ого! Круто! Сильно полезно для повышения квалификации программеров... LVV>Только вряд ли найдутся реальные задачи по написанию осей, а вот по использованию АПИ — половина рсдна этим занимается... LVV> LVV>Поэтому я и решил когда-то — лучше апи давать, чем написание оси...
Мне кажется, что маловероятность написания ОС в профессиональной деятельности не должна отменять курс по принципам построения ОС. Т.к. рассматривается круг проблем и их решений, которые уж точно пригодятся в жизни
Хотя все зависит от статуса курса — если ВУЗ, лучше дать основы построения, если проф.курсы — наверняка API.
Здравствуйте, LaptevVV, Вы писали:
LVV>Ну, опять я пристаю к уважаемому ALL все с тем же вопросом... LVV>Чему и как учиить в программировании? LVV>Глобально мне видятся такие направления:
LVV>1. Языки и связанные с ними понятия... LVV>2. Базы данных LVV>3. Интернет-программирование... LVV>4. Взгляд сверху — проектирование, архитектура, парадигмы... LVV>5. Да, еще ОСи... Поскольку в 3 — сетевое программирование...
Вопрос — а к какой части отнести архитектуру компьютеров?
memega
Re[2]: Чему сейчас учить в области программирования?
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, LaptevVV, Вы писали:
LVV>1. Информатика, 1 семестр — готовим ГРАМОТНОГО пользователя
В 2000 году слушал лекцию профессора Любимского, в которой он затронул эту тему. Мысль была такова — программисткие факультеты не должны готовить пользователей. Авторитет этого человека на меня действует очень сильно
LVV>3. Языки программирования высокого уровня, 2 семестра — сейчас думаем, чему учить LVV>4. ООП — 2 семестра — тоже думаем, в связи с 3 LVV>5. Организацияч ЭВМ и систем, 1 семестр
Правильно. Чтобы знали, что происходит, когда запускается исполнимый модуль, что такое RISC, CISC и прочее
LVV>6. Операционные системы, 1 семестр LVV>7. Системное ПО, 1 семестр
А это что? Не совсем уверен, но подозреваю, что методы трансляции, у нас пишется компилятор/интерпретатор модельного языка
LVV>8. Технологии программирования, 1 семестр
Software engineering?
LVV>9. Информационные технологии, 2 семестра, но один семестр нужно читать то, что в стандарте записано, зато второй можно сделать каким угодно...
а что здесь читается?