Welcome to Evolution as a Creative Tool.
This course will approach the subjects of evolutionary computation and machine learning from the perspective of a Research & Development or Product Development team. Of course, we’ll need to adapt those ways of working a bit to fit a classroom setting. So here’s what that means:
Over the course of the semester, each member of the team will:
- Help to define the team’s pure research goals through in-class collaboration.
- Develop a unique applied research project or domain.
- Define and execute the applied research project.
- Contribute applied learnings back to team and help refine common research goals.
My Role:
In addition to my role as a team member, I will also provide technical tutorials and more traditional curriculum components as well as help facilitate group discussions, task assignments and code review.
Class time will be used for the following things:
- Technical tutorials and discussions.
- Defining common goals, architectures & API features.
- Reviewing pull-requests to the common API.
- Presenting and discussing team’s applied research projects.
- Collaborative troubleshooting and brainstorming for applied research projects.
Pure & Applied Research:
Generally speaking, pure research tries to gain knowledge for its own sake, whereas applied research tries to solve a specific problem.
In this class, we are using the term pure research to refer to our exploration of the theory, operation, capabilities and limitations of various evolutionary computation and machine learning techniques. In this area, we will develop highly generalized code that will enable us to sketch, prototype and develop more specific applications of these technologies. These specific applications, our applied research, will fuse the ideas and techniques we’ve exposed in our pure research with our individual areas of design interest and expertise – e.g., graphic design, music production, healthcare administration, etc.
A core value in this course is the idea that pure and applied research can fuel one another as well as keep each other honest.
How We’ll Work:
Each of us is coming to this class with a unique set of technical skills, development experiences, platform preferences and coding styles. Before coming together around deeper discussions of digital design and evolutionary computation, we’ll make a few nuts-and-bolts choices about the way we’ll work and share code ideas for this course.
Common Platform Specifications:
- IDE: XCode
- Language: C++ (including C++11, using the LLVM compiler)
- Application framework: Cinder (included as a submodule of the course repository)
- Additional libraries: STL (built-in), Boost (included in Cinder)
- Code Documentation: Doxygen
- Code Collaboration: GitHub
Code submission:
The course GitHub repository can be found here: CreativeEvolutionCourse on GitHub
- Each member of the team will submit code to the course’s GitHub repository using pull-requests. Pull-requests will be reviewed by the team in class.
- Submitted code should be well documented for Doxygen and follow team’s common formatting guidelines.
- Applied research projects should fork from the team’s shared repository and be either publicly visibly or at least visible to all members of the team.
Other ways of collaborating and interacting:
In addition to the GitHub repo, we will also use this blog and Google Docs to collaborate, document and discuss various non-code-related aspects of the course.
Please do the following things before the first session:
- Download the XCode IDE from Apple Developer Site or the Mac App Store
- Download Cinder from the Cinder Github Repository (Build instructions here)
- Download the file labeled, “A binary distribution for Mac OS X 10.5 and later” from Doxygen OS X GUI
- If you’re unfamiliar with Doxygen, take a look at these overviews: Wikipedia and Doxygen manual
- If you don’t have one, create a Gmail account (for shared Google Docs)
- If you don’t have one, create a GitHub account (a free one is fine)
- If you’re unfamiliar with GitHub’s Issues & Milestones features, take a look at this overview: GitHub Issues 2.0
Please also try to have all of the above installed before the first session. If you have any trouble building Cinder from source, we can look at this together in class. If you are not using OS X, please email me directly. I can only provide limited help with Visual Studio issues. Linux is not supported at all because there is currently no stable Linux port of Cinder.