
The goal of this project was to build a program that was capable of solving a tower of hanoi with a baxter robot arm. The overall project
took 5 weeks in total, and was worked on by myself and one partner. We coded the program in lab using python and with the assistance of the
package moveit as well as the software framework ROS (robot operating system). The final solution involved computer vision, inverse and forward
kinematics, and the data clustering algorithm DBScan.
The source code can be found on GitHub.

This was an individual project over the course of a semester with the end goal being an mspaint clone. There were 3 iterations of the project, with
each iteration adding something new. Iteration 1 was about project planning with a focus on building a UML diagram. For iterations 2 & 3, the course instructor
added framework for the program and I added functionality. This included things like the highlight tool, the marker tool, and eventually filters like inverse and
blur where we edited the kernel of the picture to the corresponding filter.
Principles of programming design/analysis. Concepts in software development. Uses C/C++ language to illustrate
key ideas in program design/development, data structures, debugging, files, I/O, state machines, testing, coding standards.
Rigorous analysis of algorithms/implementation. Algorithm analysis, sorting algorithms, binary trees, heaps, priority queues,
heapsort, dynamic programming, greedy algorithms, graphs, graph traversal, single source shortest path, minimum cost spanning trees,
binary search trees, hash tables and hashing.
Issues in internet programming. Internet history, architecture/protocols, network programming, Web architecture. Client-server
architectures and protocols. Client-side programming, server-side programming, dynamic HTML, Java programming, object-oriented
architecture/design, distributed object computing, Web applications.
A brief overview, agent definition search (search space, uninformed and informed search, game playing, constraint satisfaction),
planning, knowledge representation (logical encodings of domain knowledge, ontologies).
Tools/techniques for programming games/interactive computer graphics. Event loops, rendering/animation, polygonal models, texturing,
physical simulation. Modern graphics toolkits. History/future of computer games technology. Social impact of interactive computer graphics.
This course covers Artificial Intelligence (AI) that deals with uncertainty or learning. It covers: a brief review of uncertainty and
probability, Bayesian networks, Markov models, decision trees/networks, neural networks and reinforcement learning.
Data pre-processing techniques, data types, similarity measures, data visualization/exploration. Predictive models
(e.g., decision trees, SVM, Bayes, K-nearest neighbors, bagging, boosting). Model evaluation techniques, Clustering (hierarchical,
partitional, density-based), association analysis, anomaly detection. Case studies from areas such as earth science, the Web,
network intrusion, and genomics. Hands-on projects.
Transformations, kinematics/inverse kinematics, dynamics, control. Sensing (robot vision, force control, tactile sensing),
applications of sensor-based robot control, robot programming, mobile robotics, microrobotics.