By Steven Halim
This lecture is a chance for Steven to summarize what he (1) and his team (23 others) have done from ~Jul 2011-present (6 years old as of 02 April 2017) in creating, developing, and maintaining VisuAlgo
Some of these success (and a few failure) stories may be relevant for your own web projects now/in the future
I may have to use https://visualgo-translation.club/en today
Supported by CDTL TEG 2011/2012 (~2K SGD)
Presented on Tuesday, 23 April 2013
No longer maintained now :O
Because the better version exists :)
We were a 'new player' back in 2011
There were other algorithm visualization websites/webpages out there...
We use modern* client-side technologies:
HTML5, CSS3, JS+jQuery for highly interactive visualization
We really code those algorithms in JS
and accept any valid inputs
The visualization pages are designed
with future extension in mind
The 'first version' of our own graph drawing library was built for this purpose
We include a few advanced graph and
geometry algorithms right from the start
They did not exist in the Internet before year 2011
It was something along this line:
“It is good, but not world beater yet...”
During CS2010, Aug-Nov 2012 version, we found out that CS2010 students that year only use the visualization ~twice:
around lecture time and just before test
And that's all :(
Supported by the second TEG Grant (~8K SGD, 2 years)
We switch from B/W, non-responsive website to a
colorful, responsive, more user-friendly website
We switch from the reasonably good HTML5 canvas to
an even better HTML5 SVG in D3.js (in our custom library)
Major boost via second CDTL Teaching Enhancement Grant
Frequency | # Questions | |
---|---|---|
Many Other Modules @ NUS |
11 weeks Tutor-limited |
3-5 Qs/week Reuse past year |
CS2010 with VisuAlgo Online Quiz |
"24/7" 1-to-1 tutor |
#100+ Rand Qs in Q bank & growing Actually stalled in AY16/17 :( |
Later... CS2040/C, CS3233, CS4234 |
As above | As above But with MUCH bigger Q bank :) |
Frequency | When | |
---|---|---|
Many Other Modules @ NUS |
Usually 2 times |
Mid Semester, End of Semester |
CS2010 with VisuAlgo Online Quiz |
At least 4 times |
Week 01, 06, 11, End of Semester |
Later... CS2040/C, CS3233, CS4234 |
(Much) more frequent | Maybe a small chunk every week, all automated :) |
I used my collection of pas
data structures and algorithms exams @ NUS 2003-2010
and my own CS2010 exams (2011-2016 :O)
Some (but not all) of these questions can be automated
I will add more new creative randomized questions soon for CS2040/C, CS3233, and CS4324 :)
Static questions = fixed answers, e.g. try this
(only the fixed options are permuted)
Issue: Memorizing the answers versus
understanding how to derive the solution
We need to build a system that can
generate questions with randomized parameters
As the questions are randomly generated,
we cannot hardcode the answers
Real algorithms verify the answers (note: there can be ≥1 valid answers) for all questions instantly behind the scene
We give (visual) instant feedback if the answer is wrong
This way, the student can always re-study the visualizations, re-generate new random questions, re-train, and so on until they achieve self mastery of the basic topics
Given A and B, compute A+B?
We randomize A and B within reasonable parameter ranges
Easy: A, B ∈ [0..9], Medium: A, B ∈ [0..99], Hard: A, B ∈ [-99..99]
Suppose that the question generated is:
Given A=5 and B=2, compute A+B?
and student X answers 7 and student Y answers 3
We congratulate X but give feedback to Y saying that he/she may accidentally do subtraction instead of addition
Given a random directed weighted graph (from MySQL db),
compute the shortest path from a random source vertex s
to a random destination vertex t?
Easy: Small Graph; Medium: Medium Graph; Hard: Graph with negative weight edge(s)/cycle(s)
If student X/Y answers correctly/wrongly,
We congratulate X but give feedback to Y by showing the visualization of the appropriate Shortest Path algorithm on the same randomized directed weighted graph G
This check is done by a back-end PHP script that really runs a Bellman Ford's algorithm
So that students cannot run the algorithms
to generate the answers on their own computers
It is currently impossible to replicate a creative lecturer's brain with a computerized system
Basically, it cannot generate a new question type
that has not been added by the developer
So, clever and diligent NUS students can ace the Online Quiz
It is NOT for Final (Summative) Assessment level yet...
But more for 'Formative Assessment' level at the moment
(read about the pedagogical jargon here)
Too easy to make careless mistake
Exam-only question and/or parameter range :)
This AY 2016/17, 3 of my current FYP students proposed a radical idea at the beginning of Sem 1...
Migrate to Laravel...
To ensure that the home page, every single visualization page (there are ~23 of them), and all other relevant pages have 100% similar look and feel (use the same CSS/fonts) and load the same set of latest libraries (jQuery, D3.js, etc)
This single thing took us a good part of Sem1 plus December 2016-early January 2017 holiday just to complete...
Really a case of stepping back one step to move two steps...
Previously (actually up to now), anyone on earth can use VisuAlgo anonimously, for free...
But that way, we cannot differentiate user (early/medium/advanced CS student or even CS algorithm instructor :O) authorization levels and everyone will see the same version of VisuAlgo...
Current user account features: https :), /login, /accesscontrol, /profile, /training...
It was Steven's dream since ~2014 but only realised in 2017...
Preview of /variables, /translation, /accesscontrol (again)
Performance issue and Laravel's Redis (in-memory database) support to the rescue...
Life question: What happened if I die today?
What if I can script my (algorithm) lectures as web-based presentations?, preview of /electure
More stuffs that I will only say verbally...
New visualizations that are not found elsewhere in the Internet at the moment:
Maybe... Let's see :O...
Using your favorite search engine
(Google, Yahoo, Bing, Yandex, etc)
Search: '[obscure algorithm name in your native language] visualization [also in your native language]'
Try 'Visualisasi Pohon Biner Terurut'
(the Indonesian translation of
'Binary Search Tree Visualization')
Search: '[any algorithm name that you can remember]'
That is, drop the keyword 'visualization' or 'animation' :O
Try 'sorting', 'binary heap', 'suffix array', etc
Average: ~3000+ sessions/day with weekly study pattern...
Average: ~3200+ (goes up... but only by a bit :O) sessions/day still with weekly study pattern...
Is this going to be the new trend?
The traffic does NOT just come from CS1020+/CS2010+/CS3233/CS4234 (notice the average session duration is much higher in Singapore, due to NUS students usage...)
There are lots of Chinese users, still the key market... (notice the average session duration is on average ~2m across all languages, so language is not (yet) the key factor for higher engagement...)
Alexa web ranking
(still very far from rank 1, but already OK in its field and much better than 2016 ranking)
Google Search Console
(haven't really spend time and analyze)
No S$ TEG left to hire another USRs and not planning to hire USRs/GSRs... :O
I only have one current FYP student and myself to work on this in 2017
See the long to do list (mostly verbal explanation)
Try VisuAlgo, tell your friends/juniors, and while we are at it, please write a public blog about it and give one more incoming link :)