Spring 2024 EL/R Project Offerings
This page has the projects for EL/R section A. For information on section B, please check 'The Section B Website'
New Projects
UBHacking CMS - Zaid Arshad
Openings (4-6)
Description
Running a hackathon for 600+ students involves a surprising amount of manual work. UBHacking needs your help to automate these tasks with UBManaging, a full-stack web app built to streamline our manual workflows. UBManaging is used to manage the UBHacking homepage, handling attendees applications, exporting data to our partners and sponsors, and sending out emails in bulk to our attendees and other mailing lists. Our goals for this semester are to iterate further on our existing pages, and integrate completely new features such as tracking the meal times during the event, having a mobile app to check-in attendees, and an SMS system.
This is an amazing opportunity to become familiar and comfortable with the listed technologies, and have something amazing to show off on your resume to tech recruiters for internships. You will be dipping your hands into every part of a web app, teaching you enough to be able to build your own projects.
Tech Stack:
React.js, TypeScript/JavaScript, Node.js, OpenAPI, Express.js, PostgreSQL. Potentially React Native + Expo + Tamagui.
Skills:
Experience working with websites in any capacity. Comfortable with HTML and CSS. Taken CSE 115 & CSE 116. SQL experience is a bonus.
Modular LED Video Wall - Nicholas Myers
Openings (4-6)
Description
The CSE department is developing a large, affordable, modular LED Video Wall that can be custom-built to perfectly fit any location. We plan to deploy it in the hallways of Davis Hall to impress potential new students and modernize our facilities. We made good progress last semester and built a small-scale demo. Next, we want to add features, make it easier to use, and build a larger wall.
Our goal for this semester is to: - Implement a web interface and API to configure and control the video wall - Implement live streaming to the wall (via RTMP[S] for OBS support) - Build a larger wall with more hardware
Skills
C++, computer graphics (such as OpenCV basics), micro controllers (ESP32), basic electronics, woodworking is a bonus You don't need to have all of these skills, but you should be excited to learn some of them!
Spreadsheet Evolved - Oliver Kennedy
Openings (4)
Description
Spreadsheets are really powerful programming tools. There is a lot you can do with them. But... they're also kinda stale. It's hard to make a spreadsheet "look good", and there's a lot of ways in which an infinite grid of cells is just painful to work with. There is a better way! Apple's Numbers takes the basic spreadsheet formula and revisits a lot of assumptions: Instead of a grid of cells, you get tables, you get UI widgets... you have an entire blank canvas on which to create actual interfaces. You get a formula entry tool that gives you human-readable formulas. Unfortunately, there's only one place you can get Numbers, and it's getting harder and harder each year to be a Mac user.
The goal of this project is to design and build an open-source adaptation of Apple Numbers, and eventually to extend it into something even more powerful and scalable.
Project Stack: - Scala / ScalaJS - Backend: Scala Play - Frontend: Laminar
Semester 1 accomplishments: - Developed a data model and OpenAPI spec. - Implemented a static data management backend. - Started developing a lightweight frontend.
Semester 2 goals: - Develop an asynchronous communication layer for the front/backend. - Implement a usable graphical frontend. - Start implementing a formula evaluation engine.
Unfold Studio - Christopher Proctor
Openings (4)
Description
Unfold Studio is a web application for reading and writing interactive stories, used in middle- and high-school CS and English/Langauge Arts classes in several US states and overseas. Unfold Studio allows users to write interactive stories in a programming language called Ink, and to interact with one another via common social media affordances.
Unfold Studio is set to be used for a national AI writing competition and the team will be focused on ensuring the infrastructure is ready for it. This includes performance and scalability testing, deployment, and content moderation. The project will also involve building relevant features, both on the front and back end, and studying user interactions and implementing analytics. Other tasks would include bug fixing, code refactors, maintaining compliance with child privacy laws, and technical documentation.
Unfold Studio (https://unfold.studio) is a web application for reading and writing interactive stories, used in middle- and high-school CS and English/Langauge Arts classes in several US states and overseas. Unfold Studio allows users to write interactive stories in a programming language called Ink, and to interact with one another via common social media affordances. Unfold Studio is set to be used for a national AI writing competition and the team will be focused on ensuring the infrastructure is ready for it. This includes performance and scalability testing, deployment, and content moderation. The project will also involve building relevant features, both on the front and back end, and studying user interactions and implementing analytics. Other tasks would include bug fixing, code refactors, maintaining compliance with child privacy laws, and technical documentation.
Skills:
Experience in Python. Knowledge of Django and Postgres is a bonus. Any experience with performance profiling, scaling, and DevOps is also appreciated
Existing/Continuing Projects
Encrypted Storage Resistant to Compromise - Marina Blanton
Openings (3)
Description
The core of the project will be developing a system for encrypted storage where the decryption key is split among multiple devices and compromise of a device with a partial key does not lead to disclosure of the encrypted content. The cryptographic component will be written in Rust and thus the project involves learning Rust programming.
The long-term goal includes developing user interfaces for major operating systems and major types of mobile devices to permit a user to store partial keys on different devices. Additional features will include provisions for re-keying in the event of a device compromise as well as key backup and recovery.
As this involves development of security software, the project will follow best security development practices with code review and security-related testing.
Skills:
Exposure to security concepts and/or cryptographic libraries is a plus.
AI Energy Optimization - Asif Imran
Openings (4)
Description
We aim to design and develop a tool that will analyze popular ML frameworks like pytorch, tensorflow, dusk, pandas, etc and will be able to calculate gather data at the method level to estimate energy consumption and carbon emission for big data workloads leveraging those frameworks. Next, we would like to us ML itself in the tool to suggest how making changes to the structure of the code can improve the energy usage for the same workload. Overall, we are planning to design an automated refactoring tool that will refactor from the perspective of energy optimization and not only code quality. The team needs to have knowledge on software engineering processes like requirement engineering, software quality assurance and testing, python language, abstract syntax trees (AST) and software documentation. We can divide the project in the following phases:
- Phase 1: Identify the attributes in ML frameworks which contribute to energy consumption. These can be specific methods, classes, etc which consumes significant energy during execution.
- Phase 2: Build a software that will automatically execute workloads on the ML frameworks and collect energy data at the GPU level. Gather this data ta the method level.
- Phase 3: Use ML to train the software to suggest refactoring of ML frameworks to optimize energy usage.
- Phase 4: Execute automatic refactoring of the codes based on the feedback of phase 3.
Adding FM-Index to the Coriolis Metagenomic Classifier - Jaric Zola
Openings (4)
Description
Metagenomic classification is a process in which we try to identify DNA. Consider a biological sample. Perhaps it has been taken from a patient with some unknown disease, or maybe it comes from a lake whose ecosystem is collapsing for some reason. We can extract all DNA from such a sample, and then sequence it (DNA sequencing converts every biological DNA molecule into a corresponding string of ACGTs that we can store in a text file). Now the question becomes: given a set of DNA strings that we got from the sequencer, what are these DNA strings? From what organisms do they come? If we can answer that, we may be able to identify a culprit that makes our patient sick, or causes the collapse of our lake. This is the job of metagenomic classifiers, software tools that do metagenomic classification.
The SCoRe Group has developed and maintains Coriolis – a metagenomic classifier written in modern C++ and tailored for mobile devices. The key element of the classifier is a clever way to maintain the so-called reference database. The reference database is a large database of known DNA sequences (for example, we know ACGTs that make DNA of human, E. coli, and thousands of other organisms). By comparing unknown DNA to the sequences in the reference database, we can identify an organism from which the unknown DNA most likely comes.
In this project, we want to extend Coriolis such that it can use FM-index. FM-index is a clever data structure designed for indexing large texts. To realize this project, your team will first learn basic string processing algorithms. Next, you will implement a simple program using libsdsl (https://github.com/simongog/sdsl-lite) so that you can confidently implement FM-index creation and querying. Finally, you will take this experience to the next level, and you will implement FM-index support directly in Coriolis.
Find a Mechanic - Josh Khreis
Openings (4)
Description
Find a mechanic of FAM for short is a service based webpage and app with the goal of becoming a doordash and/or instacart of trades and services. As of right now we’re focusing on the mechanics trade due to it being the largest and having year round work.
This software has 3 core portions. A marketplace webpage for a shop to administer and delegate time, work, and resources internal to customer issues and communicate and do the entire workflow process with customers. The other two portions are an app that has two uses. 1st use is for a worker of the shop to have work delegated to them from the shop webpage that allows them to update on progress of a vehicle and a user facing app that allows them to find a shop of their desired niche by reviews. The user can interact with the shop from start to finish from the app.
As of right now FAM is nearly finished as its most basic core tenets. It still needs more features and some things built into it listed below.
- Changes/builds depending on customer feedback
- UI improvements (consider using UI library)
- Build/expand database (better reporting and analytics)
- Add to the calendar
- bug/glitch fixing
- Securing and consolidation of the code
- potentially adding payment system
This is what we’re planning on for the foreseeable future as we attempt to start demoing with various shops and students to test out. As more issues trickle in we believe those will help build a better process.
Our tech stack as of right now is AWS, React Native, PHP, MySQL,CSS3, and Expo.
We have a small team willing to help and guide in all aspects. We’re willing to help on all aspects including making sure our team is taken care of. We are also willing to consider all ideas that can potentially fix or better the software.
Material Microstructure - Olga Wodo
Openings (6)
Description
Over the ages, new materials have driven innovation and shaped our civilization. The names of the main prehistoric phases of human history, e.g., the Stone Age, Bronze Age, Iron Age, etc., are the testimony to this statement. The progress has been paralleled by a better understanding of the relationship between (micro)structure and material properties that led to the plethora of materials (e.g., reinforced concrete, LEDs, graphene, organic semiconductors). In recent years, progress in materials research has been fueled by machine learning (ML) and artificial intelligence (AI). To streamline the transition, the information about the materials' structure needs to be converted into an ML-readable format. GraSPI is a software developed at UB that featurizes the micrographs into an array of physically meaningful descriptors that can be directly used in ML pipeline.
In this project, students will enhance an existing GraSPI project. GraSPI uses a graph/network as a data structure to efficiently calculate descriptors from materials micrographs. The project's current version is coded in C/C++ using the boost library. This project aims to translate the current implementation to be python-native (e.g., using NetworkX) or use a boost.Python library. Part of the project will be: - to identify the best strategy for the needed translation (research solution, plan and execute the basic tests with classic graph-based algorithms, and make the suggestion); - plan the translation between two packages - implement the Python packages (core functionality, documentation, example notebooks)
Skills
Python programming experience and modern development tools (such as GitHub and Linux).
Indoor Wireless Localization - Roshan Ayyalasomayajula
Openings (6)
Description
Indoor Wireless Localization (specifically Wi-Fi) has become quite widespread, there is an active Task Group 802.11bf as well to bring this into standards and there are many learning-based solutions to bring localization accuracy to sub-meter level. While this is great news for indoor automation, there are deployability concerns in terms of generalizability and privacy concerns surrounding it. While the most popular approach is to use data-based ML-models to provide sub-meter accurate localization algorithms, there are still requirements for generalization to different environments and better accuracy.
During this semester, the students will use the web-app to get data from Wi-Fi routers from a couple of smartphones. The data is then processed online to pass through an ML-model. While there is a baseline ML-model, they should develop and improve the generalizability and accuracy of the localization algorithm (which would be almost similar to object detection problems). The next stage of the project would be to develop quantifiable differential privacy for these learning models, by adding quantifiable noise to the input images.
Skills:
Online Data streaming, Cloud Data Storage, Online Processing, Machine Learning, Signal Processing
Choreographic Programming - Luke Ziarek and Andrew Hirsch
Openings (4)
Description
Choreographic programming aims to simplify distributed systems / concurrent systems programming by allowing a programmer to specify the system in its entirety - participants, their computations, and communication patterns. From this high level choreographic program, we can synthesize concrete implementations for each node in the distributed system or each thread in the concurrent system.
The team will be responsible for expanding the capabilities of our compiler for a choreographic language. Students will start by learning choreographic programming and write test cases and sample programs in the language. Students will then build in syntax highlighting for both emacs and visual studio. Students will also have the ability to work on the back end, creating compilation support targeting LLVM, C, and/or native code.
Teamwork Tool Development - Matthew Hertz
Openings (4)
Description
Enhance the current UI/UX of the teamwork tool (https://cse.buffalo.edu/teamwork) which allows instructors to create and administer peer and team feedback for a variety of course needs. This will also include several feature enhancements to allow the tool to be used across more courses. Skills Web Development