NOTE: This is a tentative project list and is subject to change.
This term UCOSP is happy to be partnering with six projects:
- Markus: Web-based grading platform.
- UMPLE: UML modeling and programming tool.
- BB10 Phonegap: Mobile app platform.
- Formulize: Database, reporting and workflow management system.
- Review Board: Code review tool.
- Freeseer: Screen-casting tool.
MarkUs is a web-based grading tool built with Ruby on Rails. The primary goal of MarkUs is to make it easy for graders to read and annotate students’ code. Graders also fill in a marking scheme or rubric created by the instructor. Annotations may be saved for later reuse. Students submit their code using either the web interface or using standard Subversion tools, and can form their own groups when allowed by the instructor. As MarkUs grows, we continue to add more useful features including a REST API that allows some operations on MarkUS to be scripted, a remark request system, more reporting, and support for PDF annotations. We are also working towards integrating a testing infrastructure that would allow students to run instructor created tests on their submission and get realtime feedback.
Students working on MarkUs will learn basic web application development technologies using Ruby and Rails. MarkUs is hosted on github so students will become familiar with Git and the process we use when working on the code. Because MarkUs is used by several thousand students in more than 4 universities (on 3 continents!), we take code quality seriously. All code submissions go through a code review, so the first task that students are asked to complete is fixing a trivial bug so that they become familiar with the code review process. Students working on MarkUs need to be able to work in Linux either natively or in a virtual machine.
As the summer comes to a close, we are putting together a list of the next projects, but here are some of the areas we are looking at for the fall.
1) Completing the transition from Prototype to JQuery. This will be a good project for someone wanting to learn JQuery and willing to do some detailed work.
2) Enhancing the grade entry table. MarkUs includes a simple table that can be used to entry grades for tests or labs for example. It works reasonably well, but is missing some features and needs more testing.
3) Continue work on a git back end. In the current version, student files are stored in subversion repositories, and we would like to allow instructors to set up git repos instead.
4) Implementing additional user requested features. Many of these are recorded in the issue tracker.
5) Work on the port to Rails4. We may be nearly finished this port, but there are often additional things to clean up.
Umple is an open source toolkit whose objective is to merge UML modeling and programming into a single activity. Umple can be used in several ways: It can be used as a textual language for UML. It can also be used as a programming-language pre-processor, allowing UML concepts like associations and state machines to be added directly to Java, C++, and PHP. In addition, Umple allows drawing UML diagrams online and generating code directly from those diagrams. It is the goal of the Umple team to have large numbers of programmers and modelers incrementally adopt Umple. The barriers to entry are low, since using Umple can be done in a minimal way, without disrupting the existing model or code. Umple is an open-source project hosted on Google Code.
You will have the opportunity to learn some or all of the following:
- Model-driven design using UML
- Test-driven development using JUnit
- Compiler design including parsing and code generation
- Web site design (of the UmpleOnline tool)
- Eclipse plugin development (of the Umple plugins)
- A variety of other libraries and tools
- Agile open source development with continuous integration
The exact set of skills you will employ depends on the task(s) you choose to work on.
PhoneGap/Cordova Plugins for BlackBerry 10
BlackBerry is embracing application development with HTML5 and seeking to push the boundaries of what can be accomplished with web technologies on a mobile device. Our goal is to be the premier platform for the mobile web, with the most compliant, high performance, hardware accelerated engine we can create. We are rounding out the development experience with emulators, simulators, live Web Inspector debugging, support for all major frameworks, and we’re doing all of this in the open on Github.com under the Apache 2 license.
Formulize is a tool for making data management systems on the web. It has extensive support for modelling workflows, so that organizations can customize how users interact with the data that Formulize is managing. It is aimed at “power users” in not-for-profits and other organizations without large IT departments and resources, empowering them to create systems that would otherwise require custom programming to deploy.
The most basic operation in Formulize, is the creation of forms. Administrators can specify what elements should appear on the form, and also how different groups of end users should be able to interact with the form. From there, administrators can make custom screens that control how lists of entries in each form are shown to end users. Administrators can also control how different forms relate to each other, similar to describing table relationships in an ERD. These relationships then govern how data is queried from the database, enabling screens to display complex sets of information to users, rather than just entries from a single form.
Formulize can work as a standalone application, installed on a web server. Formulize can also be embedded within any PHP-driven web application on the same server where it is installed. A Drupal module has been created that supports extensive integration with the Drupal content management platform, including single sign-on for users. Integration plugins for WordPress and Joomla have also been created (by previous UCOSP students!).
Who uses Formulize?
Formulize is used by organizations around the world, for a variety of purposes, from tracking the status of housing renovations, to recording the activities of wilderness rescue teams. The lead developer of Formulize is Freeform Solutions, a Canadian not-for-profit organization that helps other not-for-profits with IT. Freeform has used Formulize with several past and current clients, including: Oxfam Canada, the Boys and Girls Clubs of Canada, the Ontario Association of Children’s Aid Societies, the Australasian College of Sports Physicians, and various social science research projects at the University of Toronto, McMaster University and the University of Western Ontario.
How is Formulize built?
What will students learn?
Students will have extensive exposure to PHP of course, and related web technologies. Students will be tasked with fixing problems and adding features to Formulize. We follow a specific process in our GitHub repository, to record code changes, documentation and Selenium tests all together. The tests are run automatically by our continuous integration system, based on Travis-CI and Sauce Labs. Students will have to develop documentation for their features, as well as verification tests in Selenium, before their code will be merged with the master branch. This should give students a deeper understanding of the role of software engineering in the larger process of maintenance and deployment of software.
Learn more about Formulize:
- Download Formulize and docs.
- Read the history and roadmap for Formulize.
- Browse the GitHub repository.
- Video tutorials for using Formulize (the full series is about three hours, but you can skip around between various videos at your leisure):
- Learn about our version control and continuous integration process.
- Visit the Formulize support forums.
Freeseer is a screencasting tool designed for recording presentations. It enables you to record from various video and audio sources such as local desktop, USB (e.g. webcam), microphone, and other sources. It supports live streaming to Twitch/Justin.TV and uploading to YouTube. It also provides rich meta data handling capabilities in which the speaker, title, event, and other meta data are encoded in the video files.
Freeseer is primarily used at open source technology conferences. The project is still growing rapidly and is perhaps one of the most capable open source tools available for screencasting, but there’s still a lot of room for improvement. Our codebase is written entirely in Python, a language that allows for rapid development and is really fun to use.
Opportunity to learn about:
- Python, plus some popular Python libraries like Flask (web framework)
- GStreamer, a multimedia framework
- Qt, a UI framework
- Git & GitHub
- Open source development practices
- Continuous integration
- Code review
- Writing tests and documentation
- Becoming familiar with an existing codebase [a][b]
- Maintaining a project that real users depend on
More Freeseer info:
Students are also welcome to come up with their own project ideas. Below are just a few ideas that we think have potential to fill a semester. As difficulty will vary, students are also encouraged to work in groups.
Goal: YouTube streaming
More project ideas can be found on our issue tracker:
[a]I would consider Freeseer to be a small code base.
[b]for professionals it’s small, but from a student’s perspective it’s large (that’s why we added “relatively”). but we can still change it to avoid confusion