Matching Items (5)

132577-Thumbnail Image.png

Random Python Program Generator for JavaScript

Description

The most important task for a beginning computer science student, in order for them to succeed in their future studies, is to learn to be able to understand code. One of the greatest indicators of student success in beginning programming

The most important task for a beginning computer science student, in order for them to succeed in their future studies, is to learn to be able to understand code. One of the greatest indicators of student success in beginning programming courses is the ability to read code and predict its output, as this shows that the student truly understands what each line of code is doing. Yet few tools available to students today focus on helping students to improve their ability to read code. The goal of the random Python program generator is to give students a tool to practice this important skill.

The program writes randomly generated, syntactically correct Python 3 code in order to provide students infinite examples from which to study. The end goal of the project is to create an interactive tool where beginning programming students can click a button to generate a random code snippet, check if what they predict the output to be is correct, and get an explanation of the code line by line. The tool currently lacks a front end, but it currently is able to write Python code that includes assignment statements, delete statements, if statements, and print statements. It supports boolean, float, integer, and string variable types.

Contributors

Created

Date Created
2019-05

134510-Thumbnail Image.png

Barrett Poly Colloquial Hub

Description

The Barrett Poly Writing Colloquium is a dedicated group of students and faculty that come together to provide Freshmen in the Human Event with an impactful tutoring experience that enriches their Human Event papers and reading responses. There were, however,

The Barrett Poly Writing Colloquium is a dedicated group of students and faculty that come together to provide Freshmen in the Human Event with an impactful tutoring experience that enriches their Human Event papers and reading responses. There were, however, a few major issues with the way in which tutoring sessions were recorded, archived, and maintained. We set out to clean up the process and provide a more positive experience for all involved. Starting out, we searched to find a way to electronically archive tutoring receipts that students receive at the end of a tutoring session. In the beginning of the project, we were sporting experience with front-end coding languages such as HTML and CSS, with a minuscule amount of experience using JavaScript. By diving in and closing the gaps in our knowledge of JavaScript, we were able to build a web form that would suit the needs of the tutors and administrators, while still offering students the feedback that they needed to improve their writing, in a personal way that preserves the quality of the core service provided by the colloquium. Our primary objective was to build a system that moved the reporting of tutoring sessions online, while maintaining a way to generate a receipt for distribution to the students and tutors. We delivered on that, and then some, by building an automated system using Google's developer tools to automatically write all tutoring session data to a Google Sheet, and send an automated email with all relevant information to both the student and tutor. We then dedicated the time we had remaining to adding additional features. It is here that we began to run into problems that unfortunately proved to be technological constraints of the platforms we were developing on, and the languages we were using. By this point, it was too late for us to pivot, but we were still able to achieve many of our goals. For example, we successfully implemented a feature that automatically archives the entire year's worth of data and creates a new, clean Google Sheet at the beginning of each school year. If we were to continue our project, with more time, we would use different development tools and systems so that we could have more flexibility. However, using the Google API provided us with many benefits that allowed us to jump right in to building our program, without having to struggle with building a whole database with accounts and permissions.

Contributors

Agent

Created

Date Created
2017-05

136360-Thumbnail Image.png

Genie: A Population Genetics Simulation Built with JavaScript

Description

The modern web presents an opportunity for educators and researchers to create tools that are highly accessible. Because of the near-ubiquity of modern web browsers, developers who hope to create educational and analytical tools can reach a large au- dience

The modern web presents an opportunity for educators and researchers to create tools that are highly accessible. Because of the near-ubiquity of modern web browsers, developers who hope to create educational and analytical tools can reach a large au- dience by creating web applications. Using JavaScript, HTML, and other modern web development technologies, Genie was developed as a simulator to help educators in biology, genetics, and evolution classrooms teach their students about population genetics. Because Genie was designed for the modern web, it is highly accessible to both educators and students, who can access the web application using any modern web browser on virtually any device. Genie demonstrates the efficacy of web devel- opment technologies for demonstrating and simulating complex processes, and it will be a unique educational tool for educators who teach population genetics.

Contributors

Agent

Created

Date Created
2015-05

131631-Thumbnail Image.png

Analysis of Design Patterns on an AI Game Environment

Description

This Barrett thesis seeks to analyze software design patterns’ effects on a software system. To achieve this, the author specified a game environment that lets users write their own artificial intelligence (AI) algorithms for simulation in the environment. Afterwards, the

This Barrett thesis seeks to analyze software design patterns’ effects on a software system. To achieve this, the author specified a game environment that lets users write their own artificial intelligence (AI) algorithms for simulation in the environment. Afterwards, the author designed an architecture implementing the game system and designed components implementing the architecture. In software design, engineers use design patterns to develop components since software patterns generally apply to object-to-object interactions; architecture patterns apply to component-to-component interactions, and while they greatly influence software design, they are out of this project’s scope. To design the objects comprising this thesis system's event-driven model-view-controller (MVC) architecture, the author used the Adapter pattern to interface with other libraries, the Publisher-Subscriber pattern to pass information between objects, the Singleton pattern to enforce the existence of single state objects, the Dependency Injection pattern to build generic and composable functions, the Observer pattern to directly alert objects of observed objects’ changes, the Factory pattern to abstract object initialization, the Monad pattern to express complex computations without explicit branch control logic, and the Facade pattern to unite the game objects’ disparate interfaces into a single interface for AI developers. The implementation, integration, and synthesis of these pre-existing design patterns is the primary contribution of this project. After designing the software system, the author implemented the design using the TypeScript programming language, the Babel transpiler, the Webpack code bundler, and the Babylon.js graphics library. The author then performed a static evaluation on the implemented game system files by describing the overall dependency hierarchy and measuring each file’s lines of code, maintainability index, cyclomatic complexity, and Halstead difficulty score. Furthermore, the author compared these measurements with those collected from the Babylon, Phaser, and Lodash JavaScript libraries. The goals for reporting these measurements were to help show the game’s design enabling the system’s maintainability, usability, and expandability quality attributes and underscore software development as a creative and artistic discipline grounded in computational science. This thesis highlights the need for further research including developing methods with tools for evaluating behavioral aspects of design patterns relative to their quality attributes.

Contributors

Agent

Created

Date Created
2020-05

152796-Thumbnail Image.png

Dependency analysis in the HTML5, JavaScript and CSS3 Stack

Description

The Internet is transforming its look, in a short span of time we have come very far from black and white web forms with plain buttons to responsive, colorful and appealing user interface elements. With the sudden rise in demand

The Internet is transforming its look, in a short span of time we have come very far from black and white web forms with plain buttons to responsive, colorful and appealing user interface elements. With the sudden rise in demand of web applications, developers are making full use of the power of HTML5, JavaScript and CSS3 to cater to their users on various platforms. There was never a need of classifying the ways in which these languages can be interconnected to each other as the size of the front end code base was relatively small and did not involve critical business logic. This thesis focuses on listing and defining all dependencies between HTML5, JavaScript and CSS3 that will help developers better understand the interconnections within these languages. We also explore the present techniques available to a developer to make his code free of dependency related defects. We build a prototype tool, HJCDepend, based on our model, which aims at helping developers discover and remove defects early in the development cycle.

Contributors

Agent

Created

Date Created
2014