This term UCOSP is happy to be partnering with eight 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.
- Fish: Web platform for simulation-based experiments.
- CodeIgniter: PHP framework for web applications.
- Waterbear: Web programming toolkit.
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. More information: http://markusproject.org/ and their blog, http://blog.markusproject.org/
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
PhoneGap/Cordova Plugins for BlackBerry 10
- 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.
CodeIgniter 1.0 was released in 2006, by EllisLab, in Beaverton, Oregon. It has undergone a number of revisions over the years, with version 2.0 released in 2011; the current stable version sits at 2.2.0. In the fall of 2014, ownership was transferred to the British Columbia Institute of Technology, in Burnaby, BC. There has been a lot of activity this fall, as we get ready for version 3.0, to be released shortly under the MIT license.
Our source code repository is at https://github.com/bcit-ci/CodeIgniter. The project has a substantial base of contributors from around the world, and is the most forked PHP framework on Github. We have an active forum (http://forum.codeigniter.com), an IRC channel (http://webchat.freenode.net/?channels=%23codeigniter&uio=d4%22), and even the occasional tweet (https://twitter.com/CodeIgniter). We use the Git-flow workflow model, with forking and branching. Code contributions are handled by pull requests to the main repository, usually to the “develop” branch. Travis-ci is used to run unit testing builds against all submitted pull requests. Documentation is built using Sphinx.
Governance is provided by a council of seven experienced CodeIgniter developers, from Bulgaria, Canada, Germany and USA. We use Trello for brainstorming and out-of-band deliberations, and that would be a good tool for a distributed team too.
The project lead (and project mentor for a UCOSP student team) is a full-time instructor at BCIT. His primary teaching responsibility is the webapp development course for their Computer Systems Technology diploma. He has been using CodeIgniter in the course for four years, and will be using a Github repository to distribute and manage labs and assignments during the winter 2015 term – something that could be extended to include a UCOSP student team. He is also advocating a devops course for the first year computer students, before they start work on industry-sponsored programming projects.
CodeIgniter has several subprojects that would suit a UCOSP student team:
- Unit testing: Our unit testing support needs beefing up, both in terms of the quality of unit tests for core framework components, and building new components that would make it easier for application developers to unit test theor code built on top of CodeIgniter. To be built using PHPunit.
- Command line tools: We don’t have any command line tools, and there are a number of them that would be really handy … for instance, updating Composer dependencies, generating scaffolding or even base applications, andupgrading from one version to another. To be built using PHP and CodeIgniter.
- IDE plugins: we don’t have any IDE plugins, which would make it easier for new adoptees of the frameworks (and students) to use CodeIgniter for their projects. NetBeans and Eclipse are the two that come to mind, although others are welcome afterwards. The plugins would be implemented using the native language of the IDE, typically Java, with Ant scripts to run the CI command line tools.
- Application manager: a tool, command-line and/or IDE based, which would make it easy for an app developer to choose compatible and approved plugins, from a number of categories, to integrate with their webapp. To be built using PHP.
There are usually any number of outstanding issues to address, as well as proposed enhancements. Once the roadmap for version 4 is finalized, there will be even more and bigger projects too!
Waterbear is a toolkit for making programming more accessible and fun. Having a visual language means you don’t have to focus on learning a syntax to start programming. Waterbear is also a toolkit for making programming more accessible and fun. Having a visual language means you don’t have to focus on learning a syntax to start programming. It’s good for kids, artists, and anyone who would like to make their computer do something new without having to become a “programmer” (although it could lead to that). More details are available at the Waterbear site or in the Waterbear Github repository.
* As the Waterbear foundations stabilize, we need to rework the interactive development interface (IDE) to make it friendler, more powerful, and easier to use.
* Creating demos which use the blocks to showcase different programming tasks.
* Creating new block-based teaching languages using a subset of the blocks, or by wrapping a different language (such as Python or Lua).