OverCode: Visualizing Variation in Student Solutions to Programming
Problems at Scale
ELENA L. GLASSMAN,
JEREMY SCOTT, and RISHABH SINGH, MIT CSAIL
PHILIP J. GUO, MIT
CSAIL and University of Rochester
ROBERT C. MILLER, MIT
CSAIL
In MOOCs, a single programming exercise may produce
thousands of solutions from learners. Understanding solution variation is
important for providing appropriate feedback to students at scale. The wide
variation among these solutions can be a source of pedagogically valuable
examples and can be used to refine the autograder for the exercise by exposing
corner cases. We present OverCode, a system for visualizing and exploring
thousands of programming solutions. OverCode uses both static and dynamic
analysis to cluster similar solutions, and lets teachers further filter and
cluster solutions based on different criteria. We evalu-ated OverCode against a
nonclustering baseline in a within-subjects study with 24 teaching assistants
and found that the OverCode interface allows teachers to more quickly develop a
high-level view of students’ understanding and misconceptions, and to provide
feedback that is relevant to more students’ solutions.
Reza Fahlevi (G64120003)
Program merupakan serangkaian perintah yang berupa
kode yang digunakan oleh sang programmer untuk membuat aplikasi atau untuk
menyelesaikan masalah. Setiap program dapat dibentuk melalui berbagai macam
bahasa pemograman. Setiap bahasa pemograman memiliki cirri khasnya sendiri dan
cirri khas itulah yang menjadi daya tarik tersendiri bagi para programmer.
Dalam membuat suatu program biasanya di dasari oleh latar belakang programmer
itu sendiri diantaranya logika, pengalaman, serta budaya programmernya sendiri.
Untuk itu tidak jarang dijumpai banyak kasus susunan kode program yang berbeda
antara satu programmer dengan programmer lain namun memiliki output atau hasil
yang sama.
Pada kasus ini penulis membahas tentang sistem yang
dapat menvisualisasi dan mengeksploarsi variasi dari ratusan solusi pemogramman
yang dapat meng-grade secara otomatis,
sistem tersebut dinamakan OverCode. OverCode digunakan bagi lembaga yang
memiliki kelas pemogramman dimana banyak para murid yang diharuskan
menyelesaikan satu permasalah yang sama. OverCode menggunakan tekhnik novel
clustering yang melihat dari kesamaan clean code nya. Cluster tersebut berisi
serangkaian dari solusi yang memiliki komputasi sama tetapi variable berbeda
atau urutan statement nya yang berbeda. OverCode dapat memberikan sudut pandang
baru bagi para pengajar pemogramman bahwa variasi dari kode program itu tak
dapat dihindari. Jadi tidak ada solusi mutlak dalam menangani suatu
permasalahan dalam dunia pemograman.
Dalam interface aplikasi OverCode terdapat panel yang
dinamakan stack pada kolom pertama yang menampung jumlah solusi berbeda dari
permasalahan yang sama. Panel berikutnya pada kolom kedua terdapat sintaks yang
beda namun memiliki makna sama. Pada kolom ketiga terdapat panel baris dari
tiap kode yang sama yang digunakan oleh programmer dengan jumlah frekuensinya.
Dalam proses analisisnya OverCode menggunakan tekhnik pipeline, tahapan
analisisnya yaitu: Reformat solutions, Execute solutions, Extract variable
sequence, Identify common variables, Rename common and unique variables, dan Make
stacks.
Dengan adanya sistem para guru atau pengajar dapat
dengan mudah mengetahui kondisi murid secara keseluruhan apakah murid tersebut
paham atau tidak. Jadi pengajar atau guru dapat dengan cepat mengevaluasi hasil
kinerja nya, dan mengambil tindak lanjutnya.