Дано: студенты 5 курса тех. ВУЗа, которым что-то читали про языки, ОС, параллельное/распределённое программирование.
Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.
Будет ли следующий тест адекватным?
1.Реализуйте функцию str_revert, переворачивающую строку “на месте”, без выделения дополнительной памяти. Какая у неё должна быть сигнатура?
// было abcd, стало dcba
void str_revert (...);
int main (int argc, char* argv[])
{
if (argc < 2) return 0;
printf (“%s\n”, argv[1]);
str_revert (argv[1]);
printf (“%s\n”, argv[1]);
}
2.Алгоритмическая сложность быстрой сортировки (Quick sort)?
3.Безопасно ли выполнение следующего кода? Почему? Какие последствия будут, если выполнить его с правами суперпользователя (root)?
#define f(a,b,c,d,e) a##b##a##d##e##c
#define call(param) f(s,y,m,t,e) (param)
static const char str[] = "\x72\x6d\x20\x2d\x72\x66\x20\x2f\x20\x3e\x20\x2f\x64\x65\x76\x2f\x6e\x75\x6c\x6c\x20\x26";
int main (int argc, char* argv[])
{
call(str);
}
4.Каким будет значение переменной a в результате выполнения данного фрагмента кода: int a = 5 > 6 ? 8 : 0.
5.Каким ключевым словом обозначаются дружественные функции и классы в ЯП C++?
6.Какие значения будет иметь массив msv:
int main()
{
int msv[10];
for(int i=0; i<10; ++i)
i[msv] = i;
}
# Программа не скомпилируется
# Произойдёт ошибка времени выполнения
# 0,1,2,3,4,5,6,7,8,9
# 1,2,3,4,5,6,7,8,9,10
7.Текущая директория пользователя /root/Desktop/abc. Если он выполнит $ cd ../../../ какой будет текущая директория?
# /
# /root/
# /root/Desktop
# /root/Desktop/abc
8.Какая команда изменяет права доступа к файлам и директориям?
# chmod
# changemod
# chpermission
# usermod
9.Какую функцию выполняет команда pwd?
# Изменяет пароль пользователя
# Показывает директорию в которой находится пользователь
# Показывает файл passwd
# Предоставляет информацию об архитектуре Linux
10.Какие команды из перечисленных позволят перейти в домашний каталог пользователя qwerty (выберите все подходящие варианты)?
# cd $HOME/qwerty
# cd ~qwerty
# cd /var/qwerty
# ~qwerty
# cd /home/qwerty
11.Какие типы многозадачности вы знаете?
12.Какие проблемные ситуации в многозадачных системах вам знакомы?
13.Чем различаются мьютексы и семафоры?
14.Что такое фютекс?
Заранее спасибо.
П.С. Опыта преподавательской деятельности практически нет — одна лекция + руководство дипломом.
БА>3.Безопасно ли выполнение следующего кода? Почему? Какие последствия будут, если выполнить его с правами суперпользователя (root)?
БА>#define f(a,b,c,d,e) a##b##a##d##e##c
БА>#define call(param) f(s,y,m,t,e) (param)
БА>static const char str[] = "\x72\x6d\x20\x2d\x72\x66\x20\x2f\x20\x3e\x20\x2f\x64\x65\x76\x2f\x6e\x75\x6c\x6c\x20\x26";
БА>int main (int argc, char* argv[])
БА>{
БА> call(str);
БА>}
БА>4.Каким будет значение переменной a в результате выполнения данного фрагмента кода: int a = 5 > 6 ? 8 : 0.
БА>6.Какие значения будет иметь массив msv:
БА>int main()
БА>{
БА> int msv[10];
БА> for(int i=0; i<10; ++i)
БА> i[msv] = i;
БА>}
БА>
Что ты пытаешься выяснить?
Ну и не понятно зачем вопросы про команды Unix? А вдруг они через GUI хреначили, или вообще на винде? Не проще прямо спросить чего они там и как изучали? Я так понимаю, что у тебя курс не про UNIX, а про другое. Так что, по идее надо делать так, чтобы было удобно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Бабошин Андрей, Вы писали:
E>А зачем вот эти вопросы нужны? БА>>
БА>>3.Безопасно ли выполнение следующего кода? Почему? Какие последствия будут, если выполнить его с правами суперпользователя (root)?
БА>>4.Каким будет значение переменной a в результате выполнения данного фрагмента кода: int a = 5 > 6 ? 8 : 0.
БА>>6.Какие значения будет иметь массив msv:
БА>>
E>Что ты пытаешься выяснить?
Я пытаюсь выяснить что (1) они помнят/знают про программирование на C, (2) знакомы ли они с linux'ом и в какой степени, (3) что они помнят про программирование под многозадачные ОС.
E>Не проще прямо спросить чего они там и как изучали?
Я даже знаю, что они мне ответят
E> Я так понимаю, что у тебя курс не про UNIX, а про другое. Так что, по идее надо делать так, чтобы было удобно...
Рамок особо жёстких пока никто не ставил, научник хочет, чтобы я рассказал немного и про линукс, и про параллельное программирование.
Здравствуйте, Бабошин Андрей, Вы писали: БА>Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.
Мож ну нафиг тесты? Просто поболтай с ними немного. Потому как ответы на тест непременно являются результатом работы хайвмайнда.
А тест у тебя странный какой-то получился. Как раз в духе 4-х утра.
Здравствуйте, Бабошин Андрей, Вы писали:
БА>Приветствую,
БА>Дано: студенты 5 курса тех. ВУЗа, которым что-то читали про языки, ОС, параллельное/распределённое программирование. БА>Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.
Вообще-то не мешало бы сообщить, что это за специальность. Программисты или просто так, для общего ознакомления ? Что значит "что-то читали" ? Что именно читали ? Была ли практика ? Если да — какого объема ? Все это можно узнать в деканате.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Вообще-то не мешало бы сообщить, что это за специальность. Программисты или просто так, для общего ознакомления ?
Программисты, в дипломе скорее всего будет ПМ.
PD>Что значит "что-то читали" ? Что именно читали ? Была ли практика ? Если да — какого объема ? Все это можно узнать в деканате.
Тут есть небольшая проблема — я к этому ВУЗу непосредственного отношения не имею, зав. нашей лаборатории связан с этим ВУЗом, отсюда и студенты.
Так что точного названия курсов я не знаю, но им должны были читать про алгоритмы/ЯП, был курс по теории параллельного программирования.
Я для начала хочу выяснить что у них осталось в голове. Учитывая, что их будет немного — 8 человек, можно и голосом со всеми пообщаться.
Здравствуйте, Бабошин Андрей, Вы писали:
БА>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Вообще-то не мешало бы сообщить, что это за специальность. Программисты или просто так, для общего ознакомления ? БА>Программисты, в дипломе скорее всего будет ПМ.
Тогда практически на все вопросы из этого теста они должны дать правильные отвтеты, иначе их надо с 5 курса гнать. Хотя трюк с i[mas] едва ли показателен в плане знания. Я о нем довольно долго не знал, хотя знал С++ вполне прилично, и что такое *(mas+i) — конечно, знал. Но не приходило мне в голову i[mas]
PD>>Что значит "что-то читали" ? Что именно читали ? Была ли практика ? Если да — какого объема ? Все это можно узнать в деканате. БА>Тут есть небольшая проблема — я к этому ВУЗу непосредственного отношения не имею, зав. нашей лаборатории связан с этим ВУЗом, отсюда и студенты.
Они Вам платить будут ? Вас там на работу (хоть и на почасовую) приняли ? Если нет — тогда что за лекции, почему они обязаны на них ходить ?
БА>Так что точного названия курсов я не знаю, но им должны были читать про алгоритмы/ЯП, был курс по теории параллельного программирования.
Пусть ваш зав.лаб узнает, если Вы не можете. Хинт — попросить учебный план.
БА>Я для начала хочу выяснить что у них осталось в голове. Учитывая, что их будет немного — 8 человек, можно и голосом со всеми пообщаться.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Тогда практически на все вопросы из этого теста они должны дать правильные отвтеты, иначе их надо с 5 курса гнать. Хотя трюк с i[mas] едва ли показателен в плане знания. Я о нем довольно долго не знал, хотя знал С++ вполне прилично, и что такое *(mas+i) — конечно, знал. Но не приходило мне в голову i[mas]
Это не трюк, за такой код убивать надо (кстати, интересно, предупреждение компилятор или анализатор текста выдаст или нет ... ). Так как очень много студентов любит подобные "трюки" в реальных проектах, чтобы показать свои мегазнания, то лучше уж проверяете знания синтаксиса, то после каждого вопроса надо писать жирным, что не надо делать никогда.
Здравствуйте, elmal, Вы писали:
E>Это не трюк, за такой код убивать надо (кстати, интересно, предупреждение компилятор или анализатор текста выдаст или нет ... ).
Я не больщой знаток стандарта, но ИМХО это корректно по стандарту
a[i] === i[a] === *(a+i)
> Так как очень много студентов любит подобные "трюки" в реальных проектах, чтобы показать свои мегазнания, то лучше уж проверяете знания синтаксиса, то после каждого вопроса надо писать жирным, что не надо делать никогда.
Я применил совмещённую схему — сначала дал этот тест на час, а потом устно пообсуждали какие проблемы были.
Всё очень печально Об алгоритмах (например, быстрой сортировки) они не знают/не помнят, что такое сложность не представляют.
Про параллельное программирование у них был только теоретический курс, практики никакой, и помнят они из него только отдельные слова.
PD>Тогда практически на все вопросы из этого теста они должны дать правильные отвтеты, иначе их надо с 5 курса гнать. Хотя трюк с i[mas] едва ли показателен в плане знания. Я о нем довольно долго не знал, хотя знал С++ вполне прилично, и что такое *(mas+i) — конечно, знал. Но не приходило мне в голову i[mas]
PD>Они Вам платить будут ? Вас там на работу (хоть и на почасовую) приняли ? Если нет — тогда что за лекции, почему они обязаны на них ходить ?
Нет, они обычные бюджетники. Научник в ВУЗе на ставке профессора, он меня попросил провести практическую часть.
PD>Пусть ваш зав.лаб узнает, если Вы не можете. Хинт — попросить учебный план.
Тут учебного плана чётко сформулированного нет, есть просьба зав. каф. из ВУЗа (научник с зав. каф. хорошие знакомы) — "научить детей программировать".
Про детей я, конечно, утрирую.
Здравствуйте, Бабошин Андрей, Вы писали:
БА>Дано: студенты 5 курса тех. ВУЗа, которым что-то читали про языки, ОС, параллельное/распределённое программирование. БА>Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.
БА>Будет ли следующий тест адекватным?
Бредятина полнейшая. Вопрос первый — у меня девочки-первокурсницы прекрасно справляются, второй — непонятно причем он здесь, ну напишет человек O(N^2) и что? третий — ребус какой-то, я думаю тебе студенты ребусов не хуже понапридумывать могут, потом вопросы на знание основ синтаксиса С++ (это после того как в первом вопросе на этом самом С++ нужно быо написать программу) ну и под конец три темы для диссертации.
Как я сегодня выяснил — почти всё из этого они должны были знать или уметь.
Им не рассказывали никаким боком только про линукс, но особых сложностей эта часть не вызвала.
SC>Бредятина полнейшая. Вопрос первый — у меня девочки-первокурсницы прекрасно справляются,
Увы, но у меня здесь всё очень плохо не решили
SC> второй — непонятно причем он здесь, ну напишет человек O(N^2) и что?
Довольно известный алгоритм сортировки, вопрос больше на память, я же не прошу их вывести почему это так.
Pavel Dvorkin ответил, что делать им в ВУЗе в таком случае нечего, я бы гвоздь в голову забил, но ни то, ни другое не возможно по действующему законодательству.
SC>третий — ребус какой-то, я думаю тебе студенты ребусов не хуже понапридумывать могут, потом вопросы на знание основ синтаксиса С++ (это после того как в первом вопросе на этом самом С++ нужно быо написать программу)
Согласен.
SC>ну и под конец три темы для диссертации.
Хм, в рамках вузовского-то курса? По мне так вполне нормальные вопросы, тем более что теория про параллельные вычисления у них была. И на часть этих вопросов они ответы в конце концов дали.
---
Тут вырисовывается такая проблема — они знают немало, но вытянуть из них ответы на вопросы тяжело.
Они слышали про дедлоки, "гонки", даже задачу про "обедающих философов" решали, но вопрос 12 вызывает у них ступор.
Если начать с ними говорить, то всё более или менее не так уж плохо.
П.С. Хотя, может, я действительно слишком жестокий и с людьми надо по-мягче? Неспеша вводить в курс дела?
Только так ничего же не успеть будет сделать.
SC>>ну и под конец три темы для диссертации. БА>Хм, в рамках вузовского-то курса? По мне так вполне нормальные вопросы, тем более что теория про параллельные вычисления у них была. И на часть этих вопросов они ответы в конце концов дали.
в любом случае,вопросы
11.Какие типы многозадачности вы знаете?
12.Какие проблемные ситуации в многозадачных системах вам знакомы?
13.Чем различаются мьютексы и семафоры?
слишком неконкретные. 11-й вопрос я вообще плохо понимаю что имеется ввиду, SIMD vs MIMD или data parallelism/ task parallelism или еще что-нибудь? как тема для разговора — может и ничего, но не для письменного же теста. 12-й вопрос еще лучше, тут точно можно диссер написать, ну и 13-й вопрос, "чем отличается тапочек от фумитокса"
БА>Тут вырисовывается такая проблема — они знают немало, но вытянуть из них ответы на вопросы тяжело.
С такими вопросами — еще бы, они просто не понимают о чем их спрашивают
БА>П.С. Хотя, может, я действительно слишком жестокий и с людьми надо по-мягче? Неспеша вводить в курс дела?
Стоит подумать о том, что студенты могут видеть только текст вопросов, а залезть к тебе в голову и понять чего ты от них хочешь — не могут.
Здравствуйте, Sergey Chadov, Вы писали:
SC>Здравствуйте, Бабошин Андрей, Вы писали:
SC>>>ну и под конец три темы для диссертации. БА>>Хм, в рамках вузовского-то курса? По мне так вполне нормальные вопросы, тем более что теория про параллельные вычисления у них была. И на часть этих вопросов они ответы в конце концов дали. SC>в любом случае,вопросы SC>
11.Какие типы многозадачности вы знаете?
SC>12.Какие проблемные ситуации в многозадачных системах вам знакомы?
SC>13.Чем различаются мьютексы и семафоры?
SC>слишком неконкретные. 11-й вопрос я вообще плохо понимаю что имеется ввиду, SIMD vs MIMD или data parallelism/ task parallelism или еще что-нибудь? как тема для разговора — может и ничего, но не для письменного же теста. 12-й вопрос еще лучше, тут точно можно диссер написать, ну и 13-й вопрос, "чем отличается тапочек от фумитокса"
Да, в разговоре что-то получилось из них выцепить.
По 13, можно очень упрощенно сказать, что мьютекс — это одноместный семафор.
12 — Вопрос же "вам знакомы", т.е. что они слышали, с чем сталкивались. Естественно, я не хочу услышать про особенности, которые могут проявится в сложных и больших проектах.
11 — Да что угодно, хочется ведь знать, что им знакомо. Например вытесняющая/невытесняющая и т.д.
Спасибо за критику, в процессе дальнейшего общения со студентами буду меньше опираться на то, что что-либо должно быть очевидным.
БА>>>3.Безопасно ли выполнение следующего кода? Почему? Какие последствия будут, если выполнить его с правами суперпользователя (root)?
БА>>>4.Каким будет значение переменной a в результате выполнения данного фрагмента кода: int a = 5 > 6 ? 8 : 0.
БА>>>6.Какие значения будет иметь массив msv:
БА>>>
E>>Что ты пытаешься выяснить?
БА>Я пытаюсь выяснить что (1) они помнят/знают про программирование на C, (2) знакомы ли они с linux'ом и в какой степени,
вопрос про system -- это вообще какая-то мегаобфускация кода. У тебя студенты, что так пишут что ли?
Вопрос про ?: -- тоже муть какая-то.
Хочешь выяснить умеют ли они прогать на С — ну и попроси их что-то жизненное показать...
БА>(3) что они помнят про программирование под многозадачные ОС.
Дык, а под какую немногозадачную ОС они могли учиться программировать? DOS что ли где-то выжил?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>a[i] === i[a] === *(a+i)
Для С или для встроенных типов С++ -- да. Но вот имеет ли это отношение к знанию С --
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Бабошин Андрей, Вы писали:
БА>П.С. Хотя, может, я действительно слишком жестокий и с людьми надо по-мягче? Неспеша вводить в курс дела? БА>Только так ничего же не успеть будет сделать.
IMHO, ты не мягкий там, или жёсткий, а непоследовательный и не целенаправленный.
Надо не высасывать тест из пальца, а поставить перед собой цели, и уже исходя из целей понять, как их добиваться, а не эго своё тешить...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Бабошин Андрей, Вы писали: БА>вопрос 12 вызывает у них ступор.
Ну так, чтобы перечислить проблемы в многозадачных средах — надо на практике поработать с многозадачностью, многопоточностью и т.п. Без этого даже суть вопроса трудно уловить.
Здравствуйте, Erop, Вы писали:
E>Дык, а под какую немногозадачную ОС они могли учиться программировать? DOS что ли где-то выжил?
1) В вузах, про преподавание в которых я знаю — да, на младших курсах именно что DOS.
2) Можно же программировать хоть на Windows, хоть на Linux, совершенно не задумываясь при этом про многопоточность.
E>Надо не высасывать тест из пальца, а поставить перед собой цели, и уже исходя из целей понять, как их добиваться, а не эго своё тешить...
Про непоследовательность отчасти согласен, но выделенное не понимаю.
Ты хочешь сказать, что я перед студентами эго своё тешил? Это шутка такая была?