Matching Items (16)
Filtering by

Clear all filters

Description

This paper explores the inner workings of algorithms that computers may use to play Chess. First, we discuss the classical Alpha-Beta algorithm and several improvements, including Quiescence Search, Transposition Tables, and more. Next, we examine the state-of-the-art Monte Carlo Tree Search algorithm and relevant optimizations. After that, we consider a

This paper explores the inner workings of algorithms that computers may use to play Chess. First, we discuss the classical Alpha-Beta algorithm and several improvements, including Quiescence Search, Transposition Tables, and more. Next, we examine the state-of-the-art Monte Carlo Tree Search algorithm and relevant optimizations. After that, we consider a recent algorithm that transforms Alpha-Beta into a “Rollout” search, blending it with Monte Carlo Tree Search under the rollout paradigm. We then discuss our C++ Chess Engine, Homura, and explain its implementation of a hybrid algorithm combining Alpha-Beta with MCTS. Finally, we show that Homura can play master-level Chess at a strength currently exceeding that of our backtracking Alpha-Beta.

ContributorsMoore, Evan (Author) / Kobayashi, Yoshihiro (Thesis director) / Kambhampati, Subbarao (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2023-05
161223-Thumbnail Image.jpg
Description

User interface development on iOS is in a major transitionary state as Apple introduces a declarative and interactive framework called SwiftUI. SwiftUI’s success depends on how well it integrates its new tooling for novice developers. This paper will demonstrate and discuss where SwiftUI succeeds and fails at carving a new

User interface development on iOS is in a major transitionary state as Apple introduces a declarative and interactive framework called SwiftUI. SwiftUI’s success depends on how well it integrates its new tooling for novice developers. This paper will demonstrate and discuss where SwiftUI succeeds and fails at carving a new path for user interface development for new developers. This is done by comparisons against its existing imperative UI framework UIKit as well as elaborating on the background of SwiftUI and examples of how SwiftUI works to help developers. The paper will also discuss what exactly led to SwiftUI and how it is currently faring on Apple's latest operating systems. SwiftUI is a framework growing and evolving to serve the needs of 5 very different platforms with code that claims to be simpler to write and easier to deploy. The world of UI programming in iOS has been dominated by a Storyboard canvas for years, but SwiftUI claims to link this graphic-first development process with the code programmers are used to by keeping them side by side in constant sync. This bold move requires interactive programming capable of recompilation on the fly. As this paper will discuss, SwiftUI has garnered a community of developers giving it the main property it needs to succeed: a component library.

ContributorsGilchrist, Ethan (Author) / Bansal, Ajay (Thesis director) / Balasooriya, Janaka (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2021-12
132147-Thumbnail Image.png
Description
Less than half of all premedical applicants get accepted into a medical school, 39.3% of applicants to be precise, and that statistic is based on the number of matriculants out of the total applicants in 2015. With such a discouraging acceptance rate, many students who start out as premed are

Less than half of all premedical applicants get accepted into a medical school, 39.3% of applicants to be precise, and that statistic is based on the number of matriculants out of the total applicants in 2015. With such a discouraging acceptance rate, many students who start out as premed are often not towards the end of their undergraduate career and post-graduation because they do not feel prepared for medical school. It’s difficult for premed students to find all the information they need in one place rather than going from place to place or school website to school website. Additionally, it can be a hassle for premeds to keep track of all their coursework and calculate separate GPAs for each category especially due to how annoying Excel spread sheets can be. This is where the conceptualization of Premed Portfolio comes in. Premed Portfolio is a prototype mobile application. Premed Portfolio aims to streamline the process of preparing for medical school by guiding students to create a portfolio aimed to address the most important aspects of a medical school application. Students will be able to keep track of their cumulative GPA, BCPM (also known as science/math) GPA, MCAT Scores, prerequisite coursework and many more targeted areas of medical school. Premed Portfolio will also hope to use the stats that students provide and educate them on their chances of getting into medical school.
ContributorsSiddique, Shabab (Co-author, Co-author) / Rahman, Ahnaf (Co-author) / Patel, Dhruv (Co-author) / Sarwat Abdelghany Aly Elsayed, Mohamed (Thesis director) / Coursen, Jerry (Committee member) / Computer Science and Engineering Program (Contributor) / Barrett, The Honors College (Contributor)
Created2019-05
132164-Thumbnail Image.png
Description
With the coming advances of computational power, algorithmic trading has become one of the primary strategies to trading on the stock market. To understand why and how these strategies have been effective, this project has taken a look at the complete process of creating tools and applications to analyze and

With the coming advances of computational power, algorithmic trading has become one of the primary strategies to trading on the stock market. To understand why and how these strategies have been effective, this project has taken a look at the complete process of creating tools and applications to analyze and predict stock prices in order to perform low-frequency trading. The project is composed of three main components. The first component is integrating several public resources to acquire and process financial trading data and store it in order to complete the other components. Alpha Vantage API, a free open source application, provides an accurate and comprehensive dataset of features for each stock ticker requested. The second component is researching, prototyping, and implementing various trading algorithms in code. We began by focusing on the Mean Reversion algorithm as a proof of concept algorithm to develop meaningful trading strategies and identify patterns within our datasets. To augment our market prediction power (“alpha”), we implemented a Long Short-Term Memory recurrent neural network. Neural Networks are an incredibly effective but often complex tool used frequently in data science when traditional methods are found lacking. Following the implementation, the last component is to optimize, analyze, compare, and contrast all of the algorithms and identify key features to conclude the overall effectiveness of each algorithm. We were able to identify conclusively which aspects of each algorithm provided better alpha and create an entire pipeline to automate this process for live trading implementation. An additional reason for automation is to provide an educational framework such that any who may be interested in quantitative finance in the future can leverage this project to gain further insight.
ContributorsYurowkin, Alexander (Co-author) / Kumar, Rohit (Co-author) / Welfert, Bruno (Thesis director) / Li, Baoxin (Committee member) / Economics Program in CLAS (Contributor) / School of Mathematical and Statistical Sciences (Contributor) / Barrett, The Honors College (Contributor)
Created2019-05
131477-Thumbnail Image.png
Description
The goal of this product was to create a highly customizable application in which any individual, musician or not, can create a harmony for the user’s melody. This Automating Music Composer is built on the underlying rules of music composition, rules that are unique for each type of music available.

The goal of this product was to create a highly customizable application in which any individual, musician or not, can create a harmony for the user’s melody. This Automating Music Composer is built on the underlying rules of music composition, rules that are unique for each type of music available. This program is built on rules that are similar to how a Finite State Machine works (Fig 1). Each state represents a different chord in a given key, where the first roman numeral represents the first note in the chord progression. Each transition represents the action that can be taken by the chord progression, or the next note that can be reached by the current note. The user is able to manipulate these rules and styles, adjust different musical parameters to their liking, and is able to input their own melody, which then will output a unique harmony. This product aims to bridge the gap between predictive technologies and musical composition. Allowing the user to be more involved in the composition process helps the program to act as a tool for the user, rather than a separate entity that simply gives the user a completed recording. This allows the user to appreciate and understand what they are helping to produce more than they would if they were to simply be an inactive consumer of a random music composer. This product is meant to feel like an extension of the user, rather than a separate tool.
ContributorsKumar, Dhantin (Co-author) / Lopez, Christian (Co-author) / Nakamura, Mutsumi (Thesis director) / Blount, Andrew (Committee member) / Computer Science and Engineering Program (Contributor) / Barrett, The Honors College (Contributor)
Created2020-05
131123-Thumbnail Image.png
Description
Gamification is used to provide an entertaining alternative to educate an individual on a topic that has proven to be difficult, confusing, or undesirable. This thesis describes the design of a video game whose goal was to provide a way for coders and non-coders to educate themselves on programming scopes

Gamification is used to provide an entertaining alternative to educate an individual on a topic that has proven to be difficult, confusing, or undesirable. This thesis describes the design of a video game whose goal was to provide a way for coders and non-coders to educate themselves on programming scopes while also being entertained in the process. Reaching the goal required using the puzzle genre to create a concept where programming scopes would serve as the primary mechanic while also using various other programming concepts to complement it. These concepts include variables, values, functions, programming statements, and conditions.
In order to ensure that the game worked both as an educational tool as well as an entertaining one, informal testers were used with various degrees of experience in both coding and video games. After reaching the end of the game, each of the testers demonstrated that they understood the programming concepts in their video game form. However, this understanding came after additional verbal help was supplied and illustrated that the tutorial section of the game would need to be re-worked in order to efficiently demonstrate each concept.
ContributorsLucero, Elijah Ray (Author) / Bazzi, Rida (Thesis director) / Selgrad, Justin (Committee member) / Computer Science and Engineering Program (Contributor) / Barrett, The Honors College (Contributor)
Created2020-05