**Assignment 1 (Due September 10):**

- This semester, we’ll be exploring a variety of conical algorithms and techniques. Before writing our own implementations or wrappers, we should do some preliminary research to get a sense of the open source libraries that are available in this domain.
- Through whatever means – Google searches, skimming Library docs, reading forum posts – try to find any and all C or C++ open-source libraries related to evolutionary computation and/or machine learning.
- In our shared Google Docs, you’ll find a spreadsheet called “Evolutionary & Machine Learning Library Comparisons.” Please contribute your findings to this collaborative document. You’ll notice that I’ve pre-populated the spreadsheet with some columns, please feel free to add columns and anything that seems relevant.

- Choose a real-world object that has an interesting geometry and/or mechanics. The object you choose should be somewhat complex (but not overly so).
- Create a text-only description of the object from which another person could completely recreate the object’s form and function.
- Create a diagram-only description of the object from which another person could completely recreate the object’s form and function.

**Assignment 2 (Due September 17):**

- In class this week, we looked at the concept of a
*statically-typed*language and some of the implications of this constraint upon the data structures we build in C++.- For this assignment, I would like you to look at your descriptions from the previous assignment and devise a
*generalized data structure*that can be used to represent the object you described. Ideally, all of the precision you put into your original text and diagrams will be captured by this data structure. If you find that the object you described does not lend itself to programmatic description, make compromises or abstractions. The data structure should be encoded for use with a C++ application. - Questions:
- Does the object you chose to describe with text and diagrams lend itself to programmatic description? Why or why not?
- What compromises, if any, were you forced to make in generalizing the data structure?
- Would it be possible to fit an object that one of your classmates described into your data structure? If not, is there a way to tailor your data structure so that it would be capable of representing both your object and your classmate’s object in a relatively precise manner?

- For this assignment, I would like you to look at your descriptions from the previous assignment and devise a

**Assignment 3 (Due October 1):**

- In the previous assignment, we started with specific objects and let their properties guide the generalized contexts or representations we built around them. For this assignment, let’s work in the opposite direction. We have a specific algorithmic technique – recursive backtracking – that appears to be good at solving certain kinds of problems (or at least certain kinds of academic example problems). Surely this technique must be applicable to something real! For example, recursive backtracking could be used to create a plan for efficiently packing boxes into a truck. For this assignment:
- Identify a real-world problem that could be solved through a recursive backtracking process.
- Create a programmatic model of this real-world scenario.
- Apply / adapt a recursive backtracking algorithm to your model to find viable solutions to the problem you’ve identified.
- Make sure that the output solutions can be presented in a human-decipherable form.

**Assignment 4 (Due October 22):**

- Genetic Sudoku Tournament:
- In Class – October 8:
- Form teams of 2, 3 or 4 students.
- Discuss preliminary roles and approach with team.
- Class-wide discussion of any questions or ideas that came out of team meetings.

- Homework – Due at start of class on October 22:
- Form teams of 2, 3 or 4 students.
- Implement a genetic Sudoku solver given the prescribed constraints and constants (imposed to ensure a fair competition).
- Document the algorithmic strategy and development process utilized by your team.

- In Class – October 22:
- The Genetic Sudoku tournament. Prizes will be awarded!
- Each team will present its work and documentation.

- In Class – October 8:
- The Genetic Sudoku Tournament will be the last “prescribed assignment” for the semester. After that, we will continue to study GA and ML techniques in class, but all assigned work will be related to the design and implementation of final projects. Over the next two weeks, please begin thinking about your final project.

**Assignment 5 (Due November 19):**

- In writing, diagrams, code sketches or any form that suits your ideas, articulate the design problem or set of design problems that you’re interested in addressing with your final project.
- Enumerate as many of the motifs, properties and variables that exist within the domain of the design problems that your project will address and create some preliminary sketches (in any form) for how you might expose / present these properties to the user.
- In class next week, please be prepared to present your thinking to the group.