Matching Items (8)
Filtering by

Clear all filters

134339-Thumbnail Image.png
Description
Implementing a distributed algorithm is more complicated than implementing a non-distributed algorithm. This is because distributed systems involve coordination of different processes each of which has a partial view of the global system state. The only way to share information in a distributed system is by message passing. Task that

Implementing a distributed algorithm is more complicated than implementing a non-distributed algorithm. This is because distributed systems involve coordination of different processes each of which has a partial view of the global system state. The only way to share information in a distributed system is by message passing. Task that are straightforward in a non-distributed system, like deciding on the value of a global system state, can be quite complicated to achieve in a distributed system [1]. On top of the difficulties caused by the distributed nature of the computations, distributed systems typically need to be able to operate normally even if some of the nodes in the system are faulty which further adds to the uncertainty that processes have about the global state. Many factors make the implementation of a distributed algorithms difficult. Design patterns [2] are useful in simplifying the development of general algorithms. A design pattern describes a high level solution to a common, abstract problem that many systems may face. Common structural, creational, and behavioral problems are identified and elegantly solved by design patterns. By identifying features that an algorithm uses, and framing each feature as one of the common problems that a specific design pattern solves, designing a robust implementation of an algorithm becomes more manageable. In this way, design patterns can aid the implementation of algorithms. Unfortunately, design patterns are typically not discussed when developing distributed algorithms. Because correctly developing a distributed algorithm is difficult, many papers (eg. [1], [3], [4]) focus on verifying the correctness of the developed algorithm. Papers that are more practical ([5], [6]) establish the correctness of their algorithm and that their algorithm is efficient enough to be practical. However, papers on distributed algorithms usually make little mention of design patterns. The goal of this work was to gain experience implementing distributed systems including learning the application of design patterns and the application of related technical topics. This was achieved by implementing a currently unpublished algorithm that is tentatively called Bakery Consensus. Bakery Consensus is a replicated state-machine protocol that can tolerate servers with Byzantine faults, but assumes non-faulty clients. The algorithm also establishes non-skipping timestamps for each operation completed by the replicated state-machine. The design of the structure, communication, and creation of the different system parts depended heavily upon the book Design Patterns [2]. After implementing the system, the success of the in implementing its various parts was based upon their ability to satisfy the SOLID [7] principles as well as their ability to establish low coupling and high cohesion [8]. The rest of this paper is organized as follows. We begin by providing background information about distributed algorithms, including replicated state-machine protocols and the Bakery Consensus algorithm. Section 3 gives a background on several design patterns and software engineering principles that were used in the development process. Section 4 discusses the well designed parts of the system that used design patterns, and how these design patterns were chosen. Section 5 discusses well designed system parts that relied upon other technical topics. Section 6 discusses system parts that need redesign. The conclusion summarizes what was accomplished by the implementation process and the lessons learned about design patterns for distributed algorithms.
ContributorsStoutenburg, Tristan Kaleb (Author) / Bazzi, Rida (Thesis director) / Richa, Andrea (Committee member) / Computer Science and Engineering Program (Contributor) / Barrett, The Honors College (Contributor)
Created2017-05
135981-Thumbnail Image.png
Description
Education in computer science is a difficult endeavor, with learning a new programing language being a barrier to entry, especially for college freshman and high school students. Learning a first programming language requires understanding the syntax of the language, the algorithms to use, and any additional complexities the language carries.

Education in computer science is a difficult endeavor, with learning a new programing language being a barrier to entry, especially for college freshman and high school students. Learning a first programming language requires understanding the syntax of the language, the algorithms to use, and any additional complexities the language carries. Often times this becomes a deterrent from learning computer science at all. Especially in high school, students may not want to spend a year or more simply learning the syntax of a programming language. In order to overcome these issues, as well as to mitigate the issues caused by Microsoft discontinuing their Visual Programming Language (VPL), we have decided to implement a new VPL, ASU-VPL, based on Microsoft's VPL. ASU-VPL provides an environment where users can focus on algorithms and worry less about syntactic issues. ASU-VPL was built with the concepts of Robot as a Service and workflow based development in mind. As such, ASU-VPL is designed with the intention of allowing web services to be added to the toolbox (e.g. WSDL and REST services). ASU-VPL has strong support for multithreaded operations, including event driven development, and is built with Microsoft VPL users in mind. It provides support for many different robots, including Lego's third generation robots, i.e. EV3, and any open platform robots. To demonstrate the capabilities of ASU-VPL, this paper details the creation of an Intel Edison based robot and the use of ASU-VPL for programming both the Intel based robot and an EV3 robot. This paper will also discuss differences between ASU-VPL and Microsoft VPL as well as differences between developing for the EV3 and for an open platform robot.
ContributorsDe Luca, Gennaro (Author) / Chen, Yinong (Thesis director) / Cheng, Calvin (Committee member) / Computer Science and Engineering Program (Contributor) / Barrett, The Honors College (Contributor)
Created2015-12
Description

The field of quantum computing is an exciting area of research that allows quantum mechanics such as superposition, interference, and entanglement to be utilized in solving complex computing problems. One real world application of quantum computing involves applying it to machine learning problems. In this thesis, I explore the effects

The field of quantum computing is an exciting area of research that allows quantum mechanics such as superposition, interference, and entanglement to be utilized in solving complex computing problems. One real world application of quantum computing involves applying it to machine learning problems. In this thesis, I explore the effects of choosing different circuit ansatz and optimizers on the performance of a variational quantum classifier tasked with binary classification.

ContributorsHsu, Brightan (Author) / De Luca, Gennaro (Thesis director) / Chen, Yinong (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2022-12
Description

Find My College is an app to help people who are interested in pursuing a collegiate degree; find a college/s that is right for them. This app is designed using the Ionic Framework, to allow access across all operating systems such as Android and MacOS. We wanted to create an

Find My College is an app to help people who are interested in pursuing a collegiate degree; find a college/s that is right for them. This app is designed using the Ionic Framework, to allow access across all operating systems such as Android and MacOS. We wanted to create an app that people using Android or Apple can use, and this framework allows us to do that. The app is very user friendly and straightforward, which makes it usable to all types of people. It will be a free to use app that can be improved and adjusted if changes are needed/wanted.

ContributorsSolis, Jalen (Author) / Vadlamudi, Sai (Co-author) / Miller, Phillip (Thesis director) / De Luca, Gennaro (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2022-05
165162-Thumbnail Image.png
ContributorsSolis, Jalen (Author) / Vadlamudi, Sai (Co-author) / Miller, Phillip (Thesis director) / De Luca, Gennaro (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2022-05
165163-Thumbnail Image.png
ContributorsSolis, Jalen (Author) / Vadlamudi, Sai (Co-author) / Miller, Phillip (Thesis director) / De Luca, Gennaro (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2022-05
165391-Thumbnail Image.png
Description
Programming front-end human computer interfaces follows a unique approach of iterative design and testing to produce a creative model envisioned by the developer and designer. Small but frequent changes to visual or audio aspects of the program are commonplace in order to implement different design ideas, implementations, and adjustments. Functional

Programming front-end human computer interfaces follows a unique approach of iterative design and testing to produce a creative model envisioned by the developer and designer. Small but frequent changes to visual or audio aspects of the program are commonplace in order to implement different design ideas, implementations, and adjustments. Functional Reactive Programming (FRP) acts as a compelling programming paradigm towards this iterative design process, following its strength in utilizing time-varying values. Therefore, this thesis will introduce Coda, a Visual Programming Language (VPL) focused on developing audio interfaces using FRP. Coda focuses on the goal of streamlining audio interface prototyping and development, through two primary features: rapid but sensible code hot-reloading, and the use of time and I/O as an interactive development tool. These features allow Coda to greatly reduce the development cycle time commonly seen in typical, text-based programming languages. Coda also comes in its own integrated development environment (IDE) in the form of a web-application.
ContributorsShrestha, Abhash (Author) / Omais, Adam (Co-author) / De Luca, Gennaro (Thesis director) / Chen, Yinong (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2022-05
165392-Thumbnail Image.png
Description
Programming front-end human computer interfaces follows a unique approach of iterative design and testing to produce a creative model envisioned by the developer and designer. Small but frequent changes to visual or audio aspects of the program are commonplace in order to implement different design ideas, implementations, and adjustments. Functional

Programming front-end human computer interfaces follows a unique approach of iterative design and testing to produce a creative model envisioned by the developer and designer. Small but frequent changes to visual or audio aspects of the program are commonplace in order to implement different design ideas, implementations, and adjustments. Functional Reactive Programming (FRP) acts as a compelling programming paradigm towards this iterative design process, following its strength in utilizing time-varying values. Therefore, this thesis will introduce Coda, a Visual Programming Language (VPL) focused on developing audio interfaces using FRP. Coda focuses on the goal of streamlining audio interface prototyping and development, through two primary features: rapid but sensible code hot-reloading, and the use of time and I/O as an interactive development tool. These features allow Coda to greatly reduce the development cycle time commonly seen in typical, text-based programming languages. Coda also comes in its own integrated development environment (IDE) in the form of a web-application.
ContributorsOmais, Adam (Author) / Shrestha, Abhash (Co-author) / De Luca, Gennaro (Thesis director) / Chen, Yinong (Committee member) / Barrett, The Honors College (Contributor) / Computer Science and Engineering Program (Contributor)
Created2022-05