User:Mxberner

From REU@MU
Jump to: navigation, search

Max Berner

Marquette REU Summer 2022, 2023

Advisor: Dr. Brylow

Summer 2023 Project:

Week 1 (05/30/23 - 06/02/23)

Reviewed potential subjects of research:

  • Developing a CS4WI dashboard. This project would create a centralized page to organize people passionate about and information surrounding CS education within K-12 grades. ECEP Alliance is a good resource that highlights the motivations behind joining ECEP and how other states went about joining this alliance. A significant portion of this website would be embedding data gathered from the ongoing WI landscape report and into a website to make it readable and accessible for all who would need it.
  • Embedded Xinu network stack. This project would focus on developing a functional TCP/IP networking stack for the most modern implementations of the OS Embedded-XINU (particularly, RISC-V, multicore ARM, and ARM architectures). The following papers here and here provided background on tangential projects that have been conducted before with outdated versions of XINU, which highlight the applications of creating a network stack. Notably, this would provide an affordable way to conduct in-depth and highly detailed labs in networking classrooms by utilizing XINU.
  • Splunk is an analytics framework that monitors activity on a system. The Marquette Systems Lab uses machines that are open to the global internet, and thus they are prone to constant and frequent cyber attacks. Most attacks are irrelevant and futile attempts by online bots trying to brute-force access, but the sheer number of them cloud the readability of logs and reduce awareness of genuine threats. Creating some sort of filtering process that emphasizes the more serious security threats would be a valuable and practical tool for campus security monitoring efforts.


I decided it would be best to focus more on the CS4WI dashboard and the Embedded Xinu network stack. After surveying some of the dashboards for other ECEP alliance states, I liked the sites that included a geographical visualization of the data such as the dashboard for Connecticut. I found geoJSON files for county lines and school districts lines, and built the framework for building an interactive choropleth of Wisconsin using leaflet. I plan on loading in data from the Wisconsin landscape report and find other helpful ways of displaying this data.

Week 2 (06/05/23 - 06/09/23)

Worked on visualization of Wisconsin landscape report data.

  • I found a openstreetmap overlay that is labelled but mainly monochromatic to make data more readable.
  • Bounded the map to reasonable latitude/longitude.
  • Found and implemented a custom zoom control to easily reset view
  • Created a customizable legend to describe choropleth data.
  • Created a dynamic information panel.
  • Created control to hover over regions and "highlight" them.
  • Created control to click on multiple different regions and "select" them.

The geoJSON file on school districts had "secondary" districts that were often multiple elementary school districts that unionized to form a single high school district. The result was overlapping geometries in these areas, which created confusion on the coloring (as the shapes were partially transparent, resulting on darker shaded regions in overlaps). Since most of the landscape report data was for the highschool level, I had to manually make all subdistricts transparent and unselectable in favor for their unionized joint district. For example, North Lakeland, Woodruff J1, Minocqua J1, and Lac du Flambeau #1 should all be under Lakeland UHS.

At the end of the week, the map had clean and acessible selection and display of the districts data. Going forward, I am planning on implementing a search functionality I found here. I will also be having all selected regions loaded into a separate table. I'm also researching ways to select entire regions (composed of many districts) easier.

Week 3 (06/19/23 - 06/23/23)

I implemented the search function, which automatically selects a feature and zooms in on it when it is searched for. I revamped the color scheme on the legend to include two separate color pallets, a blue one and a red one. I did some background reading on the importance of selecting well crafted color pallets to ensure the readability is great, which requires adjusting both hue and saturation as well as making higher differences in the center to make center values more distinct.

Week 4 (06/12/23 - 06/16/23)

The project up until this point was stored completely locally and the organization/documentation was rough. I restructured the entire project by uploading it to github, drastically improving the documentation of all the code, and creating a configuration file that allowed for an outsider to manipulate it the program without changing any code. Upending the program and putting in this documentation should make it much easier to transfer the project to someone else.

Towards the end of the week, I did much more work surrounding the the Project {Future} grant, and microbits in particular. I familiarized myself with the specifications and features microbits have in order to present the technology to a group of teachers. I also wanted to demonstrate the capabilities of the robot, so I programmed a dice rolling program onto one.

Week 5 (06/19/23 - 06/23/23)

Project Future (Milwaukee)

Before the workshop, I had read teachers "PLC folders" which included their current curriculum and how they hope to add CS. This provided me with their current background and what robots/programs may be most beneficial to introduce to them.

We broke out into groups to meet with teachers to build them novel tools for computer science education. One of the first teachers wanted help learning cardinal directions. We designed and prototyped a tileable grid/map with compatibility for both beebot and ozobots. The students can navigate the ozobot to its destination by rotating and swapping tiles, some of which contain "code" snippets that could perform a basic command on the robot, e.g. 'turn left at next intersection', 'spin', 'reverse'.

For another group, I built an example story-like presentation in scratch for 5th graders that showcases a female inventor. The teacher already implemented this lesson in her classrooms, but she needed more background to truly empower her students on Scratch, as she herself got confused by many elements. The demonstration I made for her highlighted basic animations, using custom sprites and backgrounds, changing a sprites coordinates, and more.

Week 6 (06/26/23 - 06/30/23)

Project Future (Conneticut) Met with teachers and designed tools for computer science curriculum that met their goals.

Day 1: Introducing teachers to novel CS educational robots. Required a background on Scratch, Ozobots, Beebots, Microbits, and Edison Robots.

Day 2: Began meeting with teachers in small PLC groups and workshopped how to incorporate CS education in their classrooms.

Day 3: Continued meeting with teachers, clarified our design notes and their specific needs for their classrooms. Pushed teachers to include as much computer science as they were comfortable with. Also began to prototype some of the projects.

Day 4: Developed prototypes and designs based on the teacher input. Created detailed design notes for the Storytellers groups, the mood meter, and most other PLC groups to a lesser extent. Started to build the prototype for the Storytellers K-2 project in code.org SpriteLab.

Day 5: Presented rough prototypes to the teachers and gathered feedback for future work.

Week 7 (07/3/23 - 07/7/23)

Worked more on project future tools design. Did a subsequent prototype for the Milwaukee Ozobot/Beebot group to finalize it. Ported my storytellers demonstration from SpriteLab to Scratch to better suit the needs of the teachers. Did more work on the CS4WI Dashboard. Cleaned up the leaflet application and tried to shorten the code.

Created a mini presentation of work completed and planned on at the halfway point of the REU.

Week 8 (10/26/23 - 07/14/23)

Further built scratch program for K-2 Storytellers under project future. Github for the project can be found here. The main goal was to provide multiple scenarios and compatibility of any sequencing of blocks. I started this week by adding a single scenario, uploading some custom sprites and some copyright-free sprites, and adding roughly 8 custom blocks that can be sequenced in any order.

Week 9

Further built scratch program for K-2 Storytellers under project future. This week I doubled the number of custom blocks for the students from 8 to around. The introduction of each block became more difficult every time, since some blocks were contextually relevant and required an intentional effort to allow them to be sequenced in any order. The introduction of most blocks also required me to revamp many pre-existing blocks to ensure their continued compatibility. I also implemented character customization and a more diverse set of characters to help students identify with their avatar on the program, as one of the key features of the lesson was to help them work on their personal emotional decision-making. I had a little time to refine the CS4WI website, but most of my time outside of the scratch program was put into creating the Final Poster for the REU, highlighting my Project {Future} work, and my Final Presentation for the REU, highlighting all of my projects.

Week 10

Began writing paper for the REU going over Project {FUTURE}, including my experience collaborating with teachers, building design documents, and building my prototypes. I put in some final touches into the StoryTellers prototype and met with the teachers for a last time going over the program. They gave me the last feedback they needed to transition the program from prototype to polished product.

Beyond Week 10

Helped write a experience report for SIGCSE on Project {FUTURE}. Kept in contact with teachers from StoryTellers to prepare the program for their classrooms.

Summer 2022 Project:

https://reu.cs.mu.edu/index.php/Porting_Embedded_XINU_to_Virgil

Week 1 (05/31/22 - 06/05/22)

  • Met the cohort, mentor, and research group.
  • Reviewed potential subjects of research
 - Updating Exploring CS curriculum
 - Porting Embedded XINU to Virgil Programming Language
 - Porting Embedded XINU to RISC-V Architecture
  • Researched RISC-V as a potential processor to port OS Xinu over to.
 - RISC-V is most applicable for small devices with it's energy conservation and great performance for strictly simple tasks.
 - RISC refers to Reduced Instruction Set Computer
 - Advantage: Open-Source license that does not require fees to use
 - Advantage: Creating a custom chip is easier
 - Advantage: Base module is extremely limited, allowing customization/optimization.
 - Advantage: Power efficient, magnitudes less energy than CISC models. 
 - Disadvantage: Not many purchasable, brand-name RISC-V processors available. 
 - Disadvantage: With only simple instructions available, complex tasks are slower.
  • Conducted personal research into single-board computers, hardware architecture, and assembly language to contextualize my research of RISC-V.
  • Completed online RCR training modules through CITI program
  • Began research into Virgil

Week 2 (06/06/22 - 06/12/22)

  • Completed in-person RCR training
  • Created wiki page for Porting Embedded XINU to Virgil Programming Language.
  • Began contextual research into porting and operating systems.
  • Attended technical writing presentation
  • Installed and set-up Debian, a Linux environment on my Windows computer through WSL. (Required since Virgil does not compile to Windows)
  • Executed a "Hello World!" written in Virgil on Debian
  • Established remote connection to @morbius.mscs.mu.edu.
  • Cloned Embedded Xinu and Virgil repositories to morbius.

Week 3 (06/13/22 - 06/19/22)

  • Disassembled Virgil code to study assembly code behind it.
  • Determined all system calls Virgil uses.
  • Researched all system calls that Embedded Xinu provides.
  • Attended Dr. Praveen's research presentation.
  • Read Tanenbaum Modern Operating Systems
  • Read about Dr. Brylows Operating Systems course at Marquette.

Week 4 (06/20/22 - 06/26/22)

  • Started plan to get Virgil to compile/execute to Embedded Xinu.
  • Researched function behind Virgil's primary system calls.
  • Background reading on compilers.
  • Background reading on Embedded Xinu.
  • Background reading on operating systems.
  • Attended faculty research meeting.

Week 5 (06/27/22 - 07/03/22)

  • Attended presentation on giving a quality technical presentation
  • Conducted research on ELF-x86 executables.
  • Created presentation for achievement halfway through the REU
  • Presented the presentation.
  • Continued research on cross-compilers and native executables.

Week 6 (07/04/22 - 07/10/22)

  • Installed Qemu and ran Xv6 on it.
  • Researched ELF-loaders for multiple OS and architectures including Apple, Xv6, and smaller operating systems.
  • Researched the format for ELF object files and how to interpret the data.
  • Familiarized myself with Embedded Xinu. Tinkered with the developing RISC-V version, the MIPS version, and the ARM (hardware) version.

Week 7 (07/10/22 - 07/17/22)

  • Started development of an elf-loader
- Created an elfhdr struct for storing relevant information of ELF object file
- Began writing a C program that can read an ELF file for input and store into elfhdr struct
- Began writing a program to mimic Linux readelf.

Week 8 (07/17/22 - 07/24/22)

  • Formatted output for readelf program to match Linux output
  • Researched data types for storing raw byte information (uchar, uint, ushort, ulong, etc.)
  • Finalized elfhdr for ELF loader for 64-bit programs.
  • Updated readelf program to extract Magic number, Class, Data, and Version.
  • Updated readelf program to protect against bad data and non-ELF files
  • Updated readelf program to extract ABI, type, machine, and version.
  • Attended meeting on creating effective posters.
  • Began creating final paper for project.
  • Began creating poster for project.

Week 9 (07/24/22 - 07/31/22)

  • Attended talk on attending graduate school.
  • Began locating program header and section header information.
  • Finalized readelf program
- Protected against unsupported file types (32-bit, big endian). Support will be added later when necessary.
- Converted output to human readable information
- Extracted entry address for program header table and section header table
- Extracted program entry size and number of entries
- Extracted section entry size and number of entries
- Stress-tested program for any errors
  • Began reading about next steps to finalize ELF-loader now that all relevant information is properly extracted and stored.
  • Finished poster on research this summer.
  • Began work on final presentation.

Week 10 (07/31/22 - 08/05/22)

  • Further reading on finalizing ELF-loader
  • Finished final presentation on work.
  • Gave final presentation.
  • Presented poster at Marquette Engineering Hall.
  • Finished research paper on progress made this summer.

More Information

For more information, including the final poster, please visit: Porting Embedded XINU to Virgil Programming Language