CSC293: CS Improves: Tools for 3D Printed Manufacturing

The widespread availability of affordable 3D printers has allowed people to combine 3D printed parts with existing components like screws, belts, motors, etc. to produce objects that anybody with access to a 3D printer can manufacture. Here are a few examples:

By making the 3D design of these objects freely available along with the instructions on how to build and assemble them, these objects are the products of a nascent 3d-printed open-source hardware movement. This movement has its roots in free and open-source software (FOSS) movement that has given us software such the Python programming language and the Linux operating system kernel.

Over multiple decades, the community around FOSS has developed technologies to improve the process of creating FOSS, the version control software Git being a notable and recent example. As the foundational technology of GitHub for example, Git has enabled millions of people all around the world to collaborate to produce software (and hardware!).

The heavy use of computer-aided design (CAD) in the production of 3D printed hardware means that many of the artifacts used in their production live within a computer and can be manipulated by software tools. Therefore, in this course, we will seek to create technologies to improve the process of creating and using 3D printed open-source hardware. To do this, we will learn to:

  • Understand the landscape and needs of potential users
  • Identify the artifacts they currently produce
  • Analyse their current process for producing those artifacts
  • Develop new technology, where appropriate, to improve those processes through the use of computation
  • Embody this newly created technology in appropriate tools for use by the community

In this course, we will not develop business plans or learn how to attract VC funding, or other business development activities.

We will learn how to work in teams to solve real-world problems using our combined knowledge of computer science.

Course Outline

The course will meet three times a week for discussion of readings revolving around technology, brainstorming and fleshing out of ideas, problem solving, and for development. Students will work in teams to build projects. The projects are expected to move through various stages of a project maturity model:

  • Pitch: Ideas for a new technology/tool
  • Mockup: Initial plans that show the tool in action without any source code being necessarily written
  • Prototype: Project works in very limited, developer-controlled situations and will form the basis of the ultimate project
  • Alpha: Project can be used by people other than its developers [e.g., it has documentation] but is not feature complete
  • Beta: Project is feature complete but needs wider testing beyond the class by a subset of its actual users
  • Release

All projects will strive to maintain high quality using techniques that will be introduced in the initial portion of the course.

It is not expected that all projects will reach the Release stage in one semester, but all projects must reach at least the Alpha stage to demonstrate that the students have learnt most of the skills for technology development using computer science.

It is strongly recommended that students not take another coding-heavy course during the semester they take CSC293. The official pre-requisites: CSC173 and at least two of (CSC252, CSC254, CSC242, CSC280, CSC282).

Grading

Grading criteria is being finetuned, but will almost certainly consist of participation and progress in the course. Attendance will be mandatory.

There will be no exams, this is solely a project-based course, with increased expectations for the quality of projects. In particular, single-person projects may not have enough time to reach increased maturity levels.

Potential Readings

This list will certainly expand, and a final list will be posted when the class starts.