Software Portability and Optimization
Software is sometimes written to work on a specific computer architecture (type of computer), such as Intel-compatible x86_64 PCs, or IBM Z9 mainframes. This course is about bringing software to a new architecture.
This course deals with the challenge of making software compatible with a new architecture in one of two ways:
- Adding additional architecture-specific code so that the software can run on the new architecture ('porting' the software), or
- Removing the architecture-specific code and replacing it with architectural-neutral code, so that it can run on a variety of system architectures (making the software 'portable').
In either case, software can be altered or it can be built in such a way that performance is optimized - so that runs faster, or it uses less memory or other resources. In order to test optimizations, we'll be performing benchmark testing before and after modification.
SPO600 is a professional option in the Seneca School of Information and Communication Technology CTY and CPA programs. First offered: Winter 2014.
SPO600 in Fall 2014
In SPO600, you'll be working directly with open source communities to port software. This semester, we'll be collaborating with a project set up by Jon "Maddog" Hall and Linaro to port and optimize software which doesn't currently run on 64-bit ARM (aarch64) computers. This project has identified around 1400 software packages that need work. (As a bonus, completed projects may be eligible for recognition and possibly prizes from Linaro).
Note that, unlike some other project-based courses, the results of the projects done in SPO600 will be incorporated into open source projects, and have a real impact on other people. For this reason, projects must be completed in collaboration with the relevant open source communities, using relevant communication tools. Work performed in this course will be licensed using the relevant open source licenses used by the associated community.
Working in an open source community provides the opportunity to build solid real-world experience, your technical skills and reputation, and a network of contacts, all of which are useful in developing your career.
Course Materials / System Requirements
- Course information and labs are online.
- You will require access to a personal Linux installation on a 64-bit (x86_64) computer (ideally, a fast one). This may be on your own laptop, on a large/fast virtual machine on your laptop, on an SSH-accessible system (such as a home desktop computer), or on a SATA disk pack or USB drive for use with the Seneca computers.
- You will need to be able to ssh to computer systems at Seneca (CDOT).
Professor
SPO600 is taught by Chris Tyler.
Succeeding in SPO600
There are three keys to success in this course:
1. Work in the open source community. The projects we will be doing are too large and too unfamiliar for you to succeed entirely on your own. You will need to use the community's knowledge, connections, and resources to succeed well. Respect the community's standards, tell the community what you're doing, ask when you have a question, and pull your own weight within the community.
2. Blog. Tell your professor, your colleagues, the community, and everyone else what you're doing. Write a lot and write well, include good technical content, and incorporate links to all relevant resources and the product of your work, and write often. Almost all of your work in this course is submitted by blogging.
3. Be ambitious. In this course, you will need to be the driving force behind your project. The community will help you, but it's up to you to supply the energy. It's best to plan to make a bit of progress each day.
Weekly Outline
See the Fall 2014 SPO600 Weekly Schedule for specific dates and topics.
Course Outline
See the online course outline for course details.