Overview

Computer Science at MAMS covers many flavors of programming and design. I’ve learned that CS is more than coding with Red Bull, and that “hacking” is often more about fixing things than breaking them.

Good Code XKCD
Cartoon Courtesy of XKCD

immiGreat: Apps For Good Project

Overview

ImmiGreat is a centralized hub of important information designed to educate users about life in the Commonwealth of Massachusetts. Our application includes 3 main features: The first is public transportation, which provides users with the necessary information regarding various methods of public transportation in Massachusetts. This feature covers the subway, ferry, bus, and commuter rail routes. Fares, schedules, and even etiquette is covered for each mode of transportation. The second main feature deals with laws, and covers many different areas including education, driving, public charge, anti-discrimination, and basic rights everyone should know. The last main feature is healthcare, and it provides a general overview on what immigrants need to do in order to obtain healthcare, the resources available for groups which have special health concerns, and links to helpful external information via factsheets.

Inspiration

Our school participates in a project titled Apps for Good. We were brainstorming ideas when we came across an app titled Ankommen which teaches refugees to Germany about life and customs there. There was no equivalent app in the United States, so we decided to make one. One of our teammates contacted her old guidance counselor, who had worked with immigrants in the public school system. With her help, we selected important topics to cover in our app. The only way to thrive in a place is to understand it, and that is the goal of this app - to provide clear and simple explanations of vital aspects of life in America.

Implementation Challenges

The main difficulty that our team faced while programming our app was that the nature of our app caused it to be extremely data heavy. For this reason, it was important that we implemented an efficient method of storing and displaying this information. Our team managed this by using partial page elements called fragments in order to display the information. These fragments could be applied to a shared page called an activity, allowing different information to be displayed, depending on what the user was looking for, but on the same page. By reducing the number of digital resources used, the overall efficiency of the app was improved.

Future Improvements

If we were to create a second version of our application, we would extend the application to include more states; possibly the entire New England area. We would also like to expand on the information in the public transportation section to include more than the Boston area. Additionally, we would like to add a component that allows users to search for affordable housing or other shelter options in their area, as that is another major difficulty that many immigrants face upon arrival in a new country. Finally, we would like to create a social network that allows users to connect with other users for additional support. The users would be able to create accounts that would allow them to communicate with others who are facing the same challenges.

Presentation

Here are the slides of our final presentation. A transcript is attached below.

Websites

Designing this website was the first major project of Junior year. Working on these pages has helped me realize that CS requires creativity and imagination. In a way, it’s like learning to paint - index.html is my first canvas.

So feel free to look around, take in the scenery, and read my tales! I strive to use my pixels as meaningfully as possible.

Applying the skills that I learned in this class, I also curate a few other sites:

sunnysideup.life is my personal page, where I publish my writing and other work. You can also reach this site through the "What I Think" tab in the Navigation bar.

mamsmag.wordpress.com is for the Mass Academy community. There are so many talented people around here, I thought we should have a platform to exhibit those talents. It's not handcoded, but it's still made with love.

aMaze

Since I self-learned Java over the summer, I had the opportunity to join the Advanced CS class this year. Rather than redo basic Java, we were allowed to pursue self-directed CS projects. My project, "aMaze", focuses on creating and solving mazes!

The Plan

Below is my initial Project Proposal, which gives a good overview of my project.

Maze Solving

The current technique being used to solve the mazes is dubbed "Wall-Follower". This algorithm works by sticking to the right wall of the path, and simply travelling until it reaches the endpoint. While it's not as fast as some other algorithms such as A*, or Dijkstra's, wall-follower assumes no prior knowledge of the maze. Like a firefighter heading into a burning building, it assumes that you're going in blind. Of course, in some cases, there are floor plans and other such guides, and in those cases another algorithm may model the situation better. An interesting extension to explore would be determining which algorithm works better in mazes where some aspects are known, such as the structure of the maze, but others aren't - for example, some pathways might be blocked off (consider debris or others hazards which wouldn't exist on a floor plan) Perhaps some mixture of the two algorithms would work best. Or perhaps, a totally different approach would be required.

Maze Creating

To create mazes, I used a technique known as the "Recursive Backtracker". Imagine this algorithm like a miniature bulldozer in a solid square. You start it at a point, and let it travel in random directions, plowing a path wherever it goes.

The only rule is that it can't travel where a path has already been created, or leave the square. Once it reaches a point from where it can no longer go any farther, it will return to the last position and begin digging from there again. Once that path has been exhausted, it will again return to last position, and so forth.

aMaze Code

The code for this project, can be found on my GitHub:

https://github.com/neilkale/aMaze