Dojo Coding Test
The idea of our coding test is to assess where your strengths and weaknesses are so we can evaluate your Summer of Code proposals better and get an idea of which mentors might suit you best. Not everyone is expected to be strong in every area, but make sure you show off what you're good at and what you're passionate about!
We want you to build a single page that lets users discover trends and build understanding about the provided data. In this case, it's a set of student marks for a course called "DOJO.101". There are some details for each student (name, age, sex, campus), marks for 4 assignments, and a total weighted mark for the course.
Things we'll be looking for:
- following the Dojo Javascript style guide for code you write
- commenting and inline documentation
- use of common Javascript techniques and conventions
- how buggy (or not) it is
- the spirit of web standards (HTML/CSS, semantic code, well named IDs/CLASSes, etc)
- Note that we don't need you to use Dojo if you're more familiar with another Javascript toolkit
There are lots of aspects you could focus on:
- representing the data in different ways (tables, grids, lists, charts, trees, statistics)
- being able to filter or slice the data in different ways, or compare different groups (eg. campus), maybe dynamically
- accessibility (a11y)
- CSS and visual design
- internationalization (i18n)
- graceful degradation in browsers without Javascript
- cross-browser compatibility
- creating a build profile
- commenting or annotating the data or specific students/assignments
- loading data dynamically
You don't need to bother doing any of the following:
- handle errors in the data, it'll be perfect.
- handle flexible data sets. The fields and attributes are fixed, only the number of records might change.
- involve databases or server-side scripting (PHP, etc).
We want you to spend no more than 8 hours working on it, so you'll need to choose which aspects you want to focus on to showcase your skills. This is important - don't spend days and days on it, life is too short! It is much better to focus on a few things in depth than try and do everything in a mediocre way. Having said that, if you're proposing a Summer of Code project on accessibility then spending some time on a11y would be sensible - likewise for i18n, charts, build system, ...
Once you're done please find a suitable web-host and place your code there, and when you're filling in your SoC application to Google, make sure you include:
- a URL to your work
- a URL to a zip file containing all the HTML/JS/CSS etc files so we can look at your source code easily.
- a couple of paragraphs telling us what's good about your work, what you've focussed on, and features we might not notice straight away.
The data is available in the following formats so hopefully you shouldn't have to do any manipulation at all:
- Javascript array
- HTML Table
- JSON (dojo.data.ItemFileReadStore format)
- CSV
- Download here
Any questions? Add a comment here or start a topic in the SoC forums. We're not going to be providing "is this good enough?" answers - you're expected to work independently and decide when you're done.
- Printer-friendly version
- Login or register to post comments
- Subscribe post

What is graceful degradation?
If a browser doesn't have Javascript we obviously can't do lots of clever animations or AJAX or dynamic sorting or graphs. But we can provide something to the user, not just leave them on a blank page.
In many cases the Javascript isn't essential, it's just a "nice to have", so maybe all your titlepanes are open or your tabs are all displayed at once. If you're using a fancy calendar widget, it can fallback to a plain textbox. If you use a LightBox-style gallery to view images associated with an article, maybe it could fall back to a <UL> of thumbnails of links to the large images.
Other times the Javascript is critical to the page - in which case the least you could do is display an error message saying "you need javascript", so the user knows why its not working.
Dijit's widgets try pretty hard to gracefully degrade.
JSON Data Updates
The column headings in the JSON were messing things up for a few people. I've taken them out now (they're in marks.columns.txt if you still want them).
- Rob :)