Inspired by Justin Flory and Dan Schneiderman, I decided to make a 2018 review post. I believe that it would be a good way to reflect upon what I did in 2018 and make plans for 2019. This post will be a very high level overview of the projects and activities that I did in 2018 – nothing personal. Pictures say a thousand words, so, I will include a lot.

**Eagle Ceremony**

A few weeks ago I presented my musical floppy drives at the Rochester Maker Faire with RITlug. Wow, that sentence had a ton of links– you should check them out. This post is a quick recap of my experience at the Maker Faire and a project update for my musical floppy drive project. For those of you who don’t know, Maker Faires are community gatherings where people “celebrate arts, crafts, engineering, science projects and the Do-It-Yourself (DIY) mindset”.

I would like to give a huge thanks to Christian for providing me with some of these pictures and RITlug for giving me the opportunity to present at the Maker Faire.

This a very high level review post that I am making for myself and other people reviewing CS Theory. If you want to lean more about content in this blog post I recommend cracking open a text book– I know, gross. This hastily thrown together post will cover how to solve typical problems relating to topics covered by my second CS Theory exam.

L is regular if and only if it has a finite index. The index is the maximum number of elements that are pairwise distinguishable. Two strings are said to be pairwise distinguishable if you can append something to both of the strings and it makes one string accepted by the language and the other string rejected. The size of an index set X equals the number of equivalence classes it has and the minimum number of states required to represent it using a DFA. Each element in the language is accepted by only one equivalence class.

Although the movie *I Robot* has not aged well, it still brings up some interesting ethical questions that we are still discussing concerning self driving cars. The protagonist Detective Spooner has an almost unhealthy amount of distrust towards robots. In the movie, a robot decided to save Spooner’s life over a 12 year old girl in a car accident. This ignites the famous ethical debate of the trolley problem, but, now with artificial intelligence. The debate boils down to this: are machines capable of making moral decisions. The surface level answer from the movie is presented as **no** when Spooner’s presents car crash antidote. This question parallels the discussion that we are currently having with self driving cars. When a self driving car is presented with two options which result in the loss of life, what should it choose?

When surveyed, most people say that they would prefer to have self driving cars take the utilitarian approach towards the trolley problem. A utilitarian approach would try to minimize the total amount of harm. MIT made a neat website where it presents you with a bunch of “trolley problems” where you have to decide who dies. At the end of the survey the website presents you with a list of observed preferences you made when deciding who’s life was more important to save. The purpose of the trolley problem is merely to ponder what decision a self driving car should make when **all** of its alternatives are depleted.

If you have ever taken a computer science class you probably know what the fibonacci sequence is and how to calculate it. For those who don’t know: Fibonacci is a sequence of numbers starting with 0,1 whose next number is the sum of the two previous numbers. After having multiple of my CS classes give lectures and homeworks on the Fibonacci sequence; I decided to write a blog post going over the 4 main ways of calculating the nth term of the Fibonacci sequence. In addition to providing the python code for calculating the nth perm of the sequence, a proof for their validity and an analysis of their time complexities both mathematically and empirically will be examined.

By the definition of the Fibonacci sequence, it is the most natural to write it as a recursive definition.

```
def fib(n):
if n == 0 or n == 1:
return n
return fib(n-1) + fib(n-2)
```