Quizzera is an online quizzing platform originally created to replace an older solution on Blackboard, reusing the pedagogical content created by Robert Sedgewick and Kevin Wayne for the COS 226 course. It was developed by Rushy Panchal (Computer Science B.S.E., '19) in the summer of 2016 under the mentorship of Dr. Robert Fish and Dr. Jéremie Lumbroso, and in the 2016-17 academic year by Maia Ginsburg and Dr. Jérémie Lumbroso.
Quizzera is made primarily with Django. The API is created with a popular library for Django, the Django REST Framework. In addition, it uses Celery to manage background workers, Redis as a cache and task queue, Postgres for the database, NginX as the public-facing webserver and reverse-proxy, and uWSGI as the protocol to communicate between Django and NginX.
The frontend is built with React.js (along with the Babel transpiler) and SCSS. Static assets are built with the Gulp task manager.
Vagrant, a virtual-machine management tool, and Ansible, a provisioning tool, are used to deploy the server and develop on a consistent environment.
The content is randomly generated using the Java library Quizgen, which was also created and is maintained by students.
Andrew Wonnacott (Computer Science B.S.E. '19) refactored the legacy content-generating codebase, called the Quizgen library.
This version of Quizzera is built upon initial prototypes designed by Elise Georis ('17), Marisa Chow ('17), Jeffrey Han ('17), Jimmy Zuber ('15), and Violeta Ilieva ('15).
There is a lot of room for improvement and the platform is designed to be easy to extend. Working on Quizzera will have a large, lasting impact on students (over 1200 this year, between COS 226 and COS 126) and courses alike, so it's a great project to pursue independent work on!
If you want to get started with the project or spin-up a development server, checkout the documentation. To get access to the repository, contact one of the project maintainers mentioned in the 'Contact' section.
There are many potential options for future work on Quizzera. Possible projects include:
- Question Interfaces. Improve interfaces, especially for graphical questions and questions that accept arrays as input. The current interfaces improve upon that of Blackboard, but there is still a lot of room for bettering them. Graphical interfaces will forever put your name in history as the student who finally vanquished Blackboard's awful input formats.
- Design and User Experience. Design and style the website. Currently, functionality was prioritized over aesthetics, and so there is significant work that can be done in improving how the website looks and the overall student experience - a great project if you're interested in UI/UX!
- Integrations. Integrate with other software/projects used in the department, such as Classroom Salon, to create an increasingly immersive learning experience for students.
- Partial Credit System. Currently, partial credit is difficult to implement and requires direct developer intervention. Grading is a particular pain point because it requires code changes. If you are interested in engineering a modular system that interacts with the internals of Quizzera and has a large impact on professors and students alike (what student doesn’t like increased partial credit?), this project is for you. The primary goal of such a grading system is to maintain the various layers of abstraction built into Quizzera while integrating an elegant solution to facilitate varying partial credit policies.
- Administrative Tools. An important long-term goal of Quizzera (and realistically, any successful platform) is that professors can use it without requiring a developer for their administrative needs. The largest focus of this project is to figure out what professors want to do with the platform and how their needs can be realistically met.
- Expansion. Expand to other courses and departments. Quizzera is not restricted to COS 226 or the COS department at all. In fact, it is designed to work with any course, so expanding the platform will be beneficial to all.
- New Question Modules. Create innovative question modules to replace the older Quizgen library. Quizzera is designed to be simple to add new question modules, and so working on these modules is a small and manageable project that will be seen by hundreds of students.
- Timed Quizzes. Implement timed quizzes (optionally enabled by instructors). For more rigid course requirements, especially when expanding to other departments and courses, instructors may want to enforce a time limit on a given quiz. By implementing this feature, the platform can be used by a wide variety of courses and instructors!
- Your Own Project. Suggest and implement your own project. We want to build the best platform for students to learn, and if you have an idea of how to help achieve that goal, take on an independent-work project or build up small features in your own time. It'll benefit thousands of students at Princeton (and in the future, at other universities too)!
You can also sign up for Dr. Fish's Independent Work Seminar (currently, IW 04) which focuses on improving how students learn in the CS department, especially through projects such as Quizzera.