?

Log in

No account? Create an account
У меня возникла революционная педагогическая идея - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

У меня возникла революционная педагогическая идея [Aug. 15th, 2015|08:07 am]
Yuri Panchul
Как вы помните, я помогаю Тимуру Палташеву из AMD учить начинающих студентов в одном из местных вузов. На днях у меня возникла новая педагогическая идея - а что если составлять вопросы на контрольной/зачете/экзамене таким образом, чтобы студенты учились во время экзамена?

Для проверки идеи составил короткую контрольную на тему блокирующих, неблокирующих и непрерывных присваиваний + как из кода на SystemVerilog получается D-триггер. Без твердого понимания студентами этой хрени рассказывать им про конечные автоматы или конвейер имхо бессмысленно:


Quiz #5



Name ____________________________________ Student ID __________________



Understanding blocking and non-blocking assignments in SystemVerilog, combinational and sequential always-blocks, their simulation and synthesis.For each design under test (dut1-dut16) show the corresponding schematics and the corresponding waveform:



        module dut1                              module dut2
        (                                        (                          
            input              clk,                  input              clk,
            input        [7:0] d,                    input        [7:0] d,  
            output logic [7:0] q                     output logic [7:0] q   
        );                                       );                         
            always @(posedge clk)                    always_ff @(posedge clk)  
                q <= d;                                  q <= d;            
                                                                            
        endmodule                                endmodule                  
        
        
        module dut3                              module dut4
        (                                        (                            
            input              clk,                  input              clk,
            input        [7:0] d,                    input        [7:0] d,
            output logic [7:0] q                     output logic [7:0] q
        );                                       );                       
            logic [7:0] r;                           logic [7:0] r;       
                                                                          
            always @(posedge clk)                    always @(posedge clk)
            begin                                    begin               
                r <= d;                                  q <= r;
                q <= r;                                  r <= d;
            end                                      end                 
                                                                          
        endmodule                                endmodule               
        
        
        module dut5                              module dut6
        (                                        (                           
            input              clk,                  input              clk, 
            input        [7:0] d,                    input        [7:0] d,   
            output logic [7:0] q                     output logic [7:0] q    
        );                                       );                          
            always @*                                always_comb
                q = d;                                   q = d;
                                                                             
        endmodule                                endmodule                   
        
        
        module dut7                              module dut8
        (                                        (                            
            input              clk,                  input              clk,  
            input        [7:0] d,                    input        [7:0] d,    
            output logic [7:0] q                     output logic [7:0] q     
        );                                       );                           
            logic [7:0] r;                           logic [7:0] r;           
                                                                              
            always @(posedge clk)                    always @(posedge clk)    
                r <= d;                                  q <= r;
                                                                              
            always @(posedge clk)                    always @(posedge clk)    
                q <= r;                                  r <= d;
                                                                              
        endmodule                                endmodule                    
        
        
        module dut9                              module dut10
        (                                        (                            
            input              clk,                  input              clk,  
            input        [7:0] d,                    input        [7:0] d,    
            output logic [7:0] q                     output logic [7:0] q     
        );                                       );                           
            logic [7:0] r;                           logic [7:0] r;           
                                                                              
            always @*                                always @(posedge clk)    
                r = d;                                   q <= r;
                                                                              
            always @(posedge clk)                    always @*
                q <= r;                                  r = d;
                                                                              
        endmodule                                endmodule                    
        
        
        module dut11                             module dut12
        (                                        (                                  
            input              clk,                  input              clk,        
            input        [7:0] d,                    input        [7:0] d,          
            output logic [7:0] q                     output logic [7:0] q           
        );                                       );                                 
            logic [7:0] r;                           
                                                                                    
            assign r = d;                            wire [7:0] r = d;                     
                                                                                    
            always @(posedge clk)                    always @(posedge clk)          
                q <= r;                                  q <= r;                    
                                                                                    
        endmodule                                endmodule                          
        
        
        module dut13                             module dut14
        (                                        (                               
            input              clk,                  input              clk,     
            input        [7:0] d,                    input        [7:0] d,       
            output logic [7:0] q                     output logic [7:0] q        
        );                                       );                              
            logic [7:0] r;                           logic [7:0] r;              
                                                                                 
            assign r = d;                            assign q = r;               
            assign q = r;                            assign r = d;
                                                                                 
        endmodule                                endmodule                       
        
        
        module dut15_not_a_good_style            module dut16_bad_style
        (                                        (                            
            input              clk,                  input              clk,  
            input        [7:0] d,                    input        [7:0] d,    
            output logic [7:0] q                     output logic [7:0] q     
        );                                       );                           
            logic [7:0] r;                           logic [7:0] r;           
                                                                              
            always @(posedge clk)                    always @(posedge clk)    
            begin                                    begin                    
                r = d;                                   q <= r;
                q <= r;                                  r = d;
            end                                      end                      
                                                                              
        endmodule                                endmodule                    




The common testbench used to generate the waveforms



module testbench;

    logic clk;
    logic [7:0] d, q;

    dut dut (clk, d, q);

    initial
    begin
       clk = 0;

       forever
           #10 clk = ! clk;
    end

    initial
    begin
        $dumpvars ();

        for (int i = 0; i < 10; i++)
        begin
            @(posedge clk);
            #15;
            d = i;
        end

        $finish;
    end

endmodule




X)





Y)





Z)





Quiz is created by Yuri Panchul




UPD: Мне приятно представлять, что студентка, изучающая Verilog, выглядит вот так:



(картинка от http://www.volegov.com/ )

При этом все наши с Тимуром студентки - индуски, т.е. они выглядят не так.

Плодотворна ли идея обучать студентов во время контрольных?

Да, потому что дома он все равно ленятся это учить
1(5.6%)
Да, потому что они в это время сосредоточены, внимательны
3(16.7%)
Может быть, но такие контрольные нужно делать "open book" т.е. с открытыми учебниками
5(27.8%)
Если попробовать такое на гуманитарных студентах, они устроят протест и начнут кидаться кусками асфальта
8(44.4%)
Из-за бугра плюете?
1(5.6%)
LinkReply

Comments:
[User Picture]From: seerozha
2015-08-15 03:09 pm (UTC)
Революционные педагогические идеи - они у Макаренко ....
(Reply) (Thread)
[User Picture]From: panchul
2015-08-15 03:17 pm (UTC)
Дык у меня есть его книжка! Я даже писал сочинение на выпускном экзамене в школе, как Макаренко перевоспитывал малолетних проституток
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: evagen
2015-08-15 03:25 pm (UTC)
Когда я учился в институте, у меня возникала такая мысль: курс по предмету должен начинаться с экзамена. Этот экзамен ты проваливаешь, но зато появляется мотивация ходить на лекции и учиться, чтобы подготовиться к "пересдаче" -- реальному экзамену.
(Reply) (Thread)
[User Picture]From: panchul
2015-08-15 03:32 pm (UTC)
Во, значить я не одинок в своих рассуждениях! У меня подобные идеи и даже сделал это с одним из предыдущих контрольных - сначала "провальная" контрольная, а потом то же самое - на экзамене. Интересно, что находятся индивидуалы, которые все не учат, хотя знают, что вопросы будут теми же.
Еще важна защите от списывания - перемешивать вопросы.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: danvolodar
2015-08-15 09:13 pm (UTC)
У MS так на курсах по SQL Server.
(Reply) (Parent) (Thread)
From: realurix
2015-08-15 04:46 pm (UTC)
Для американских скудентов самое то.
Для российских экзамен - это нечто другое.
(Reply) (Thread)
[User Picture]From: panchul
2015-08-15 04:59 pm (UTC)
Это индийские студенты. А что нужно для российских?
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: just_developer
2015-08-15 05:19 pm (UTC)
Пора делать курсы в он-лайн...
(Reply) (Thread)
[User Picture]From: aleks_visero
2015-08-15 09:38 pm (UTC)
Боюсь, девочка изучающая Verilog, будет скорее выглядеть так http://i.ytimg.com/vi/uS0A-rbBSrI/sddefault.jpg

Edited at 2015-08-15 09:39 pm (UTC)
(Reply) (Thread)
[User Picture]From: swingaroo
2015-08-15 09:52 pm (UTC)
Во время финального экзамена, наверное, уже поздно учиться. Хотя некоторые узнают много нового именно там.
А на сквозных - почему нет.
На втором курсе была преподавательница какой-то экономической математики. Она на каждой лекции устраивала контрольную по материалам предыдущих. И так весь год.
После этого лет десять помнил предмет, хотя и не применял.
(Reply) (Thread)
[User Picture]From: orastosk
2015-08-15 11:27 pm (UTC)
Маковое поле, Афганистан, что-ле?
Да и если традиционную обитательницу тех мест отмыть и принарядить, вполне похожа будет.



Edited at 2015-08-15 11:27 pm (UTC)
(Reply) (Thread)
[User Picture]From: aavenger
2015-08-16 01:05 am (UTC)
Картинка хороша :))) Но нечто более выстеховское было бы больше в кассу :)))
(Reply) (Thread)
[User Picture]From: syrevitch
2015-08-16 05:20 am (UTC)
Как долгоработающий препод (любимая тема - результаты синтеза в CAD на основе VHDL) могу поделиться опытом, что если дать open book экзамен с нестандартными (неразжеванными) задачами, то он 1) дает с распределение оценок, равнительно сопоставимое со стандартным экзаменом, и 2) в памяти студентов сам предмет откладывается лучше, хотя бы на уровне "что-то такое было" (в отличие от предметов, где к экзамену надо было просто зазубрить).
(Reply) (Thread)
[User Picture]From: panchul
2015-08-20 10:10 pm (UTC)
Очень интересно, спасибо!
(Reply) (Parent) (Thread)
[User Picture]From: red_army_1917
2016-08-16 05:21 am (UTC)

Как долгоработающий препод

а у вас на занятиях студенты лекции конспектируют?
(Reply) (Parent) (Thread) (Expand)