Decisions People Make

Idea Generator Process

Grady Newberg

The process of creating the idea generator started by getting together a list of all the different filters that should be used to calculate what kind of activities the idea generator should use to determine the activity. From this it was concluded that the important filters used to determine what the activity should be were: Temperature outside, amount of time for the activity, amount of money willing to spend on a given activity, and how much energy that everybody included in the generator has. Once the filters were set up, the next step was to gather a brief list of 100 different activities, making sure that at least one activity would be assigned to every possible alignment of filters.

The next step after this was to work with the coding, making it so that the filters would actually bring up activities according to the specific filters. This was probably the greatest challenge because learning how to program an application as well as the server it needed to run on proved to be much more difficult than expected, making it necessary to become quite skilled at coding and programming. This took the most amount of time for the project to complete, as once this was finally finished the Idea Generator was mostly complete aside from a few adjustments like perfecting the visual of the server/application.

If the “Idea Generator” was to be worked on more, the first task would be to give many more activities and filters for the application, creating a more advanced and in depth version of what it is now.

Process

Samuel Glenn

Our initial idea for Proteus was a Pandora-esq website that would let allow people at parties to enter different genres of music so everyone would be happy. We decided to call the project Proteus, the Greek god of versatility. We decided that collecting 200 songs from 6 different genres would be a good place to start because it was an obtainable ammount of songs to collect, but also allowed variety when listening to genres.

Creating the database

We decided to use a website called Django to create our database which held all of our music. We had to add tags to every song which took hours upon hours to complete. We used Pandora's Music Genome Project to aid us with the tags. The Genome Project is how Pandora works. Music experts have categorized every song on Pandora into hundreds of tags, and when a listener tends to like certain tags, Pandora spits out more songs with those tags. We used the tags that were availiable for those songs to our songs.

Coding

To create the actual website, we had to use HTML, the language that creates web pages. We designed a website where you would input 3 tags, and then a screen would open and start playing music from the genres you entered. A video plays that displays colors with a kaleidoscope effect. We used python to code that actual sorting part. Python is a multi-purpose coding language that coders use around the world. 

Originally we thought that the genres should be indie rock, electronic, pop, rap, reggaetron, and dancehall. In the end we added country because of mass appeal. 

Challenges

Challenges included learning two difficult languages in a short time, getting 200 songs, tagging them all, and learning how to create a website that played music. Luckily we got past all of these and created a working project. 

Next Steps

We would like to add more genres, more songs, and make the website run a little smoother. 

Final

Mariamawit Loulseged

Decisions are an important component to one's day whether or not it is noticed. One makes a decision when eating breakfast or simply picking out an outfit in the morning. For some, decisions come easily like second nature while for others it may take longer depending on the situation. This studio allowed the members to study decision making and what current programs or systems exist that ease decision making for people. For example, on Youtube the decision making process of what video one should watch next is made easier by presenting the user with a recommended video list. The Proteus group decided that since music is universal the system we created would be related to music and easier decision making. When people are at a party or are at home trying to compose a playlist it is difficult to decide which songs to incorporate in the playlist. What if there are people with numerous music interests? What if the music doesn't fit the the mood? Proteus has came to save their day! With Proteus one can sign on the website and have multiple people at the gathering to input their genre interest, most relatable tag or mood. Once the party of people submit their inputs Proteus will begin to calculate the playlist from its database of 140 songs. It arranges it's song choice based on which tag matches the song the user input. The students in this group created a large database in order to provide variety. Once Proteus gathers all of its information it quickly creates a playlist that is equally divided by the genres. For example, if the people at the event have a misxed interest in Hip Hop, Indie and Reggae Proteus will formulate a shuffled playlist that equally divides the interests allwoing everyone at the party to be pleased, interested and have a great time. Proteus was highly successful and after numerous hours of uploading, tagging songs, and coding on python our creation has been successful! 

 

Process

Zack Steinberg

Movieninja started off as a complaint: that Netflix didn't give good movie recommendations. If I rated a movie one star, to anyone else it would be obvious that I didn't like the movie, but netflix would still recommend the movie to watch. We thought we could do better ratings by making our own movie site.

To make a site, we used Django. Django is a python framework that makes it easy to create webpages, then hook them up to databases. To do this, django uses "models". Models are frameworks of data that we entered in our database, and for our movie site, we initially had 2: the movie model, which held information like the title, actors, genre and director of a movie, and the rating model, which movies would have multiple of. Using the data in the movie model, we could search the database and return the most relevant movies.

To suggest movies, we needed some way of scoring them, so we could sort by the score in the database. We had a few different ideas. The first idea was to rate each movie on a 1 to 100 scale, then returning the highest rated movie. We scrapped that idea because it wouldn't be personalized; it would just be the same movies all the time.

Then we thought about rating the different aspects of the movie, like the music, special effects, and the visuals separately. This would give an increase to movies with a similar score. It would also boost the score for the director and lead actors. The rating system would be on a 1-100 scale, picking the movies with the highest score.

Now, we needed to get data. We started off by surveying people about movies to get ratings, but that was too slow and didn't have enough movies. What if someone searched for a different movie? Instead, we looked online. Thankfully, we found OMDB, an extensive movie database that had its data available for download. We downloaded it, made a simple script to import the movies into the database, and we finally had our data.

Then, we had to make a website to display the data. Since we called our site 'MovieNinja', we wanted to make our site ninja-themed. We used Adobe Flash to create a field with a dojo on it to be used as the background, and put 2 banners to the left and right of the screen. The right banner would be where you chose what movies to watch, the left banner would have popular movies, and the middle of the page would have the movie recommendations.

When we tried it out, we found errors: when we had imported the movie data from OMDB, we hadn't imported the genres correctly, so we couldn't search by genre. We quickly fixed the importing script, and re-imported the movies. It was taking a long time, so we decided to not import any short movies.

Then we booted up the website, and clicked the search by genre, and the website that we had made in a week returned relevant search results.

If we had more time, we could definitely improve our algorithm. Currently, it returns the highest-rated movie with no mention to popularity, leading to unknown movies popping up at the top. We could also add a login feature, and actually let movies be streamed through the site.

Final

Zack Steinberg

Movieninja started out as a complaint: that Netflix's recommendations weren't good enough for us. Movieninja is an attempt to rectify that by creating a website that gives movie suggestions while learning python and web design.

The website is powered by django, a python web framework. Django enables us to make a dynamic website and hook it up to a database so we can change the movies the website recommends based on the reviews. In our website, we can use two databases: the movie database, and the review database. The movie database holds movies, and we select movies based on the genres selected to the right and the movie reviews given.

We also coded the part of the site visible to users. It has 3 parts: The popular movies list, the recommendations, and the search query box. The popular movies list is a list of popular movies from movieninja users. Since we have no movieninja users yet, this currently is blank. On the right side of the page, there are options to find movies, and in the middle are the recommendations. By choosing options on the right, we adjust a score for each movie based on how much we think the movie is relevant, and then using django we scan the database to get the highest-scoring movies.

While the website is fully functional, we don't have a URL for it yet. We do have a database full of movies, a working movie selection, and a great-looking website that delivers movies catered to your tastes.

Decisions People Make

Ammar Ammar

From buying a brand breakfast cereal to choosing a college to attend, decision making pemeate every aspect of our lives. And while most of these simple decisions are made spontaneously and involve little, other decisions, individual and collective, can have far reaching consequences on our society and the environment we inhabit. 

In this studio, students will explore the various aspects the decision making process, in the presence of constraints and uncertainty. Using simplified concepts and techniques from computater science, game theory, probability, and behavioral economics, students will get a chance to tackle a variety of familiar decision problems and formulate solutions to deal with these problems. Using data and programming, students will design and implement a tool to demonstrate what they learned. 

 

Smart Chart

Kate Reed

We created an organizer to help you manage your study time. The Smart Chart tells you how much you need to study per class based on how much time you have, your current grade in the class and how far away the test is from that day. 

Process

Kate Reed

We started out the studio by fooling around with Python, the language we would be using to code, and learning about probability. Once we had a feeling for Python, we broke off into groups and started brainstorming what we wanted to make for a project.

I paired up with Alexandra and Zach, and we decided we wanted to make something to help organize student’s study time. We wanted to make something that would help with having a bunch of tests in a week, and the eventual stress of finals, by giving you a study plan for the week.

We first went about this by coming up with a plan on how to program the Smart Chart. We didn’t want to jump right into programming it, because that would just get way too crazy without knowing exactly what mathematical outcomes we were looking for. For example, we first had to figure out how the Smart Chart would calculate how much study time was needed per subject.

It is a little difficult to explain in writing how we planned for it to work, but I’ll give it a shot. You input how long you have to study in total, the day of the test, and your current grade in that class. Then the Smart Chart creates a number we call priority level. Each day is assigned a number. The numbers descend as they get farther away from the present day. The priority level is a number made by taking your current grade in the class, and subtracting it from 100, then adding the number of the day that the test is on. For each test, the priority number is calculated, keeping in mind that as the test approaches, the priority number increases.

Next we take all the tests with their priority numbers, and prioritize them based on their priority number. Ironic. Once we have the priority number of each test, we then can compare them and find the percentage of time you should be studying on that subject. The percentage is different for each day. For instance, if something has a high priority number, you will to spend 70% of your study time on that subject, and only 30% on the rest of the subjects.

Once we had a plan for how all the math would work, we started writing the code to create our project. Writing the code was very frustrating. We had several iterations of the code. Some of them worked, a lot of them didn’t. To make a study schedule for one day was fairly simple, it just took a lot of time. It started to get really tricky when we had to make a schedule for the entire week.

To make a schedule for the entire week, we had to program the Smart Chart to think for seven days. Because the priority levels change for every test per day, we had to program the Smart Chart to think of every day as if it was today, how poetic. It was very tedious to get the Smart Chart to think ahead. That was one of our biggest struggles. We probably went through five iterations of code until we programmed it right.

Once we had the math and code right, we were left with numbers. We then had to think about how we wanted to visualize the data. We did this by getting code for graphs from Matplotlib, which is a website that has open source code for graphs. Once we got the code, we fiddled with it so that the graphs would work for our data.

We first made a pie graph. The pie graph was a simple experiment to get to know the Matplotlib code. We made the pie graph so that it would display one day’s worth of information.

We knew we didn’t ultimately want the Smart Chart to be a pie graph, so we looked for another way to display the information. We then found a bar graph on Matplotlib, that looked promising. The graph we found was good, but didn’t do exactly what we wanted it to, so we had to fiddle with the code to make it right for our purposes.

In the code, we added a fixed height to the bars in the graph, so that it looks less like a graph and more like a schedule. We also made it so that the graph can take the numbers straight from the Smart Chart’s calculations, turn the number into a percentage, and graph it. The original graph was a fixed graph, so you couldn’t change the information with out reprogramming it. Now the graph is based on how long you need to study, and the user can easily change the values based on there study time, without having to reprogram it.

Once we had the graph, we had to combine it with our other program that does all the math. This was tricky. Both of the programs worked great alone, but we ran into problems when we tried to combine them. It was simple things like sorting out different variable names. It became very tedious work.

Once we did this, we still had a little more time left, so we thought, “Hmm what can we do to make this even more awesome?” We decided we should add an email function. Now when you create a Smart Chart for the week, our program will email you the chart so you can access it from anywhere.

Ironically, I have no use for the Smart Chart seeing as I don’t have exams at this stage of my education.