Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 15.09.09 16:38
Оценка: :)
Приветствую,

Дано: студенты 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.Что такое фютекс?


Заранее спасибо.
П.С. Опыта преподавательской деятельности практически нет — одна лекция + руководство дипломом.
Re: Это-то вам зачем?
От: Erop Россия  
Дата: 15.09.09 17:57
Оценка: +1
Здравствуйте, Бабошин Андрей, Вы писали:

А зачем вот эти вопросы нужны?
БА>
БА>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, а про другое. Так что, по идее надо делать так, чтобы было удобно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Это-то вам зачем?
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 16.09.09 00:05
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, Бабошин Андрей, Вы писали:


E>А зачем вот эти вопросы нужны?

БА>>
БА>>3.Безопасно ли выполнение следующего кода? Почему? Какие последствия будут, если выполнить его с правами суперпользователя (root)? 
БА>>4.Каким будет значение переменной a в результате выполнения данного фрагмента кода: int a = 5 > 6 ? 8 : 0.
БА>>6.Какие значения будет иметь массив msv:
БА>>

E>Что ты пытаешься выяснить?

Я пытаюсь выяснить что (1) они помнят/знают про программирование на C, (2) знакомы ли они с linux'ом и в какой степени, (3) что они помнят про программирование под многозадачные ОС.

E>Не проще прямо спросить чего они там и как изучали?

Я даже знаю, что они мне ответят

E> Я так понимаю, что у тебя курс не про UNIX, а про другое. Так что, по идее надо делать так, чтобы было удобно...

Рамок особо жёстких пока никто не ставил, научник хочет, чтобы я рассказал немного и про линукс, и про параллельное программирование.
Re: Помогите с вопросами для студентов
От: Mr.Cat  
Дата: 16.09.09 00:24
Оценка: +1
Здравствуйте, Бабошин Андрей, Вы писали:
БА>Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.
Мож ну нафиг тесты? Просто поболтай с ними немного. Потому как ответы на тест непременно являются результатом работы хайвмайнда.

А тест у тебя странный какой-то получился. Как раз в духе 4-х утра.
Re: Помогите с вопросами для студентов
От: Pavel Dvorkin Россия  
Дата: 16.09.09 05:10
Оценка:
Здравствуйте, Бабошин Андрей, Вы писали:

БА>Приветствую,


БА>Дано: студенты 5 курса тех. ВУЗа, которым что-то читали про языки, ОС, параллельное/распределённое программирование.

БА>Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.

Вообще-то не мешало бы сообщить, что это за специальность. Программисты или просто так, для общего ознакомления ? Что значит "что-то читали" ? Что именно читали ? Была ли практика ? Если да — какого объема ? Все это можно узнать в деканате.
With best regards
Pavel Dvorkin
Re[2]: Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 16.09.09 12:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вообще-то не мешало бы сообщить, что это за специальность. Программисты или просто так, для общего ознакомления ?

Программисты, в дипломе скорее всего будет ПМ.

PD>Что значит "что-то читали" ? Что именно читали ? Была ли практика ? Если да — какого объема ? Все это можно узнать в деканате.

Тут есть небольшая проблема — я к этому ВУЗу непосредственного отношения не имею, зав. нашей лаборатории связан с этим ВУЗом, отсюда и студенты.
Так что точного названия курсов я не знаю, но им должны были читать про алгоритмы/ЯП, был курс по теории параллельного программирования.
Я для начала хочу выяснить что у них осталось в голове. Учитывая, что их будет немного — 8 человек, можно и голосом со всеми пообщаться.
Re[3]: Помогите с вопросами для студентов
От: Pavel Dvorkin Россия  
Дата: 17.09.09 10:11
Оценка:
Здравствуйте, Бабошин Андрей, Вы писали:

БА>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Вообще-то не мешало бы сообщить, что это за специальность. Программисты или просто так, для общего ознакомления ?

БА>Программисты, в дипломе скорее всего будет ПМ.

Тогда практически на все вопросы из этого теста они должны дать правильные отвтеты, иначе их надо с 5 курса гнать. Хотя трюк с i[mas] едва ли показателен в плане знания. Я о нем довольно долго не знал, хотя знал С++ вполне прилично, и что такое *(mas+i) — конечно, знал. Но не приходило мне в голову i[mas]

PD>>Что значит "что-то читали" ? Что именно читали ? Была ли практика ? Если да — какого объема ? Все это можно узнать в деканате.

БА>Тут есть небольшая проблема — я к этому ВУЗу непосредственного отношения не имею, зав. нашей лаборатории связан с этим ВУЗом, отсюда и студенты.

Они Вам платить будут ? Вас там на работу (хоть и на почасовую) приняли ? Если нет — тогда что за лекции, почему они обязаны на них ходить ?

БА>Так что точного названия курсов я не знаю, но им должны были читать про алгоритмы/ЯП, был курс по теории параллельного программирования.


Пусть ваш зав.лаб узнает, если Вы не можете. Хинт — попросить учебный план.

БА>Я для начала хочу выяснить что у них осталось в голове. Учитывая, что их будет немного — 8 человек, можно и голосом со всеми пообщаться.


Можно и так.
With best regards
Pavel Dvorkin
Re[4]: Помогите с вопросами для студентов
От: elmal  
Дата: 17.09.09 10:27
Оценка: 9 (1) +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Тогда практически на все вопросы из этого теста они должны дать правильные отвтеты, иначе их надо с 5 курса гнать. Хотя трюк с i[mas] едва ли показателен в плане знания. Я о нем довольно долго не знал, хотя знал С++ вполне прилично, и что такое *(mas+i) — конечно, знал. Но не приходило мне в голову i[mas]

Это не трюк, за такой код убивать надо (кстати, интересно, предупреждение компилятор или анализатор текста выдаст или нет ... ). Так как очень много студентов любит подобные "трюки" в реальных проектах, чтобы показать свои мегазнания, то лучше уж проверяете знания синтаксиса, то после каждого вопроса надо писать жирным, что не надо делать никогда.
Re[5]: Помогите с вопросами для студентов
От: Pavel Dvorkin Россия  
Дата: 17.09.09 11:03
Оценка: -1
Здравствуйте, elmal, Вы писали:

E>Это не трюк, за такой код убивать надо (кстати, интересно, предупреждение компилятор или анализатор текста выдаст или нет ... ).


Я не больщой знаток стандарта, но ИМХО это корректно по стандарту

a[i] === i[a] === *(a+i)


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


+1
With best regards
Pavel Dvorkin
Re[4]: Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 17.09.09 11:20
Оценка: :)
Здравствуйте, Pavel Dvorkin, Вы писали:

Я применил совмещённую схему — сначала дал этот тест на час, а потом устно пообсуждали какие проблемы были.
Всё очень печально Об алгоритмах (например, быстрой сортировки) они не знают/не помнят, что такое сложность не представляют.
Про параллельное программирование у них был только теоретический курс, практики никакой, и помнят они из него только отдельные слова.

PD>Тогда практически на все вопросы из этого теста они должны дать правильные отвтеты, иначе их надо с 5 курса гнать. Хотя трюк с i[mas] едва ли показателен в плане знания. Я о нем довольно долго не знал, хотя знал С++ вполне прилично, и что такое *(mas+i) — конечно, знал. Но не приходило мне в голову i[mas]


PD>Они Вам платить будут ? Вас там на работу (хоть и на почасовую) приняли ? Если нет — тогда что за лекции, почему они обязаны на них ходить ?


Нет, они обычные бюджетники. Научник в ВУЗе на ставке профессора, он меня попросил провести практическую часть.

PD>Пусть ваш зав.лаб узнает, если Вы не можете. Хинт — попросить учебный план.

Тут учебного плана чётко сформулированного нет, есть просьба зав. каф. из ВУЗа (научник с зав. каф. хорошие знакомы) — "научить детей программировать".
Про детей я, конечно, утрирую.
Re: Помогите с вопросами для студентов
От: Sergey Chadov Россия  
Дата: 17.09.09 13:58
Оценка: 7 (2) +2
Здравствуйте, Бабошин Андрей, Вы писали:

БА>Дано: студенты 5 курса тех. ВУЗа, которым что-то читали про языки, ОС, параллельное/распределённое программирование.

БА>Я им буду рассказывать про параллельное программирование под Linux, но предварительно хочу выяснить уровень их знаний.

БА>Будет ли следующий тест адекватным?


Бредятина полнейшая. Вопрос первый — у меня девочки-первокурсницы прекрасно справляются, второй — непонятно причем он здесь, ну напишет человек O(N^2) и что? третий — ребус какой-то, я думаю тебе студенты ребусов не хуже понапридумывать могут, потом вопросы на знание основ синтаксиса С++ (это после того как в первом вопросе на этом самом С++ нужно быо написать программу) ну и под конец три темы для диссертации.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 17.09.09 14:27
Оценка:
Здравствуйте, Sergey Chadov, Вы писали:

Как я сегодня выяснил — почти всё из этого они должны были знать или уметь.
Им не рассказывали никаким боком только про линукс, но особых сложностей эта часть не вызвала.

SC>Бредятина полнейшая. Вопрос первый — у меня девочки-первокурсницы прекрасно справляются,

Увы, но у меня здесь всё очень плохо не решили

SC> второй — непонятно причем он здесь, ну напишет человек O(N^2) и что?

Довольно известный алгоритм сортировки, вопрос больше на память, я же не прошу их вывести почему это так.
Pavel Dvorkin ответил, что делать им в ВУЗе в таком случае нечего, я бы гвоздь в голову забил, но ни то, ни другое не возможно по действующему законодательству.

SC>третий — ребус какой-то, я думаю тебе студенты ребусов не хуже понапридумывать могут, потом вопросы на знание основ синтаксиса С++ (это после того как в первом вопросе на этом самом С++ нужно быо написать программу)

Согласен.

SC>ну и под конец три темы для диссертации.

Хм, в рамках вузовского-то курса? По мне так вполне нормальные вопросы, тем более что теория про параллельные вычисления у них была. И на часть этих вопросов они ответы в конце концов дали.

---
Тут вырисовывается такая проблема — они знают немало, но вытянуть из них ответы на вопросы тяжело.
Они слышали про дедлоки, "гонки", даже задачу про "обедающих философов" решали, но вопрос 12 вызывает у них ступор.
Если начать с ними говорить, то всё более или менее не так уж плохо.

П.С. Хотя, может, я действительно слишком жестокий и с людьми надо по-мягче? Неспеша вводить в курс дела?
Только так ничего же не успеть будет сделать.
Re[4]: Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 17.09.09 14:29
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

Я им на первом занятии задание дал — поставить себе линукс и разобраться с make-файлами.
Это же не очень жестоко?
Re[3]: Помогите с вопросами для студентов
От: Sergey Chadov Россия  
Дата: 17.09.09 14:41
Оценка: +2
Здравствуйте, Бабошин Андрей, Вы писали:


SC>>ну и под конец три темы для диссертации.

БА>Хм, в рамках вузовского-то курса? По мне так вполне нормальные вопросы, тем более что теория про параллельные вычисления у них была. И на часть этих вопросов они ответы в конце концов дали.
в любом случае,вопросы

11.Какие типы многозадачности вы знаете?
12.Какие проблемные ситуации в многозадачных системах вам знакомы?
13.Чем различаются мьютексы и семафоры?

слишком неконкретные. 11-й вопрос я вообще плохо понимаю что имеется ввиду, SIMD vs MIMD или data parallelism/ task parallelism или еще что-нибудь? как тема для разговора — может и ничего, но не для письменного же теста. 12-й вопрос еще лучше, тут точно можно диссер написать, ну и 13-й вопрос, "чем отличается тапочек от фумитокса"

БА>Тут вырисовывается такая проблема — они знают немало, но вытянуть из них ответы на вопросы тяжело.

С такими вопросами — еще бы, они просто не понимают о чем их спрашивают

БА>П.С. Хотя, может, я действительно слишком жестокий и с людьми надо по-мягче? Неспеша вводить в курс дела?

Стоит подумать о том, что студенты могут видеть только текст вопросов, а залезть к тебе в голову и понять чего ты от них хочешь — не могут.
--
Sergey Chadov

... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[4]: Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 17.09.09 21:25
Оценка: +1
Здравствуйте, 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 — Да что угодно, хочется ведь знать, что им знакомо. Например вытесняющая/невытесняющая и т.д.

Спасибо за критику, в процессе дальнейшего общения со студентами буду меньше опираться на то, что что-либо должно быть очевидным.
Re[3]: Это-то вам зачем?
От: Erop Россия  
Дата: 17.09.09 21:31
Оценка: +1
Здравствуйте, Бабошин Андрей, Вы писали:

БА>>>
БА>>>3.Безопасно ли выполнение следующего кода? Почему? Какие последствия будут, если выполнить его с правами суперпользователя (root)? 
БА>>>4.Каким будет значение переменной a в результате выполнения данного фрагмента кода: int a = 5 > 6 ? 8 : 0.
БА>>>6.Какие значения будет иметь массив msv:
БА>>>

E>>Что ты пытаешься выяснить?

БА>Я пытаюсь выяснить что (1) они помнят/знают про программирование на C, (2) знакомы ли они с linux'ом и в какой степени,


вопрос про system -- это вообще какая-то мегаобфускация кода. У тебя студенты, что так пишут что ли?
Вопрос про ?: -- тоже муть какая-то.
Хочешь выяснить умеют ли они прогать на С — ну и попроси их что-то жизненное показать...

БА>(3) что они помнят про программирование под многозадачные ОС.

Дык, а под какую немногозадачную ОС они могли учиться программировать? DOS что ли где-то выжил?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Помогите с вопросами для студентов
От: Erop Россия  
Дата: 17.09.09 21:35
Оценка: 1 (1) +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>a[i] === i[a] === *(a+i)


Для С или для встроенных типов С++ -- да. Но вот имеет ли это отношение к знанию С --
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Помогите с вопросами для студентов
От: Erop Россия  
Дата: 17.09.09 21:38
Оценка: 4 (2)
Здравствуйте, Бабошин Андрей, Вы писали:

БА>П.С. Хотя, может, я действительно слишком жестокий и с людьми надо по-мягче? Неспеша вводить в курс дела?

БА>Только так ничего же не успеть будет сделать.

IMHO, ты не мягкий там, или жёсткий, а непоследовательный и не целенаправленный.
Надо не высасывать тест из пальца, а поставить перед собой цели, и уже исходя из целей понять, как их добиваться, а не эго своё тешить...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Помогите с вопросами для студентов
От: Mr.Cat  
Дата: 17.09.09 21:53
Оценка:
Здравствуйте, Бабошин Андрей, Вы писали:
БА>вопрос 12 вызывает у них ступор.
Ну так, чтобы перечислить проблемы в многозадачных средах — надо на практике поработать с многозадачностью, многопоточностью и т.п. Без этого даже суть вопроса трудно уловить.
Re[4]: Помогите с вопросами для студентов
От: Бабошин Андрей Германия http://andreybaboshin.livejournal.com/
Дата: 17.09.09 23:14
Оценка:
Здравствуйте, Erop, Вы писали:

E>Дык, а под какую немногозадачную ОС они могли учиться программировать? DOS что ли где-то выжил?

1) В вузах, про преподавание в которых я знаю — да, на младших курсах именно что DOS.
2) Можно же программировать хоть на Windows, хоть на Linux, совершенно не задумываясь при этом про многопоточность.

E>Надо не высасывать тест из пальца, а поставить перед собой цели, и уже исходя из целей понять, как их добиваться, а не эго своё тешить...

Про непоследовательность отчасти согласен, но выделенное не понимаю.
Ты хочешь сказать, что я перед студентами эго своё тешил? Это шутка такая была?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.