diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/Bess Hagan Resume.pdf b/Bess Hagan Resume.pdf new file mode 100644 index 000000000..f8a78f211 Binary files /dev/null and b/Bess Hagan Resume.pdf differ diff --git a/README.md b/README.md index f2706ff95..ca8b49173 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,28 @@ -This is a template DREU project site. You can start with this and modify it in any way you like, so long as it is still hosted in a git repository. +# Bess Hagan ๐ŸŽ“๐Ÿ’ป -## Quick Start +This is my personal portfolio site built with HTML and CSS to showcase my academic background, technical skills, and research experience in computer science, data science, and AI. -### Step 1) Get a GitHub account +--- -Go to github.com and sign up for a free account. Let's assume you sign up for an account with username "myname". +## ๐Ÿง  About -### Step 2) Copy this site to your GitHub account +The site highlights: +- Academic and research experience (e.g., SURF & DREU) +- Skills in data science, software development, and GIS +- Projects in machine learning, procedural content generation, and more +- A downloadable resume -Sign into your github account. +--- -From this repo, click the "Fork" button at the top right hand of the window. -A copy of this repository will be made in your own github account. +## ๐Ÿ›  Tech Stack -### Step 3) Rename the repository +- HTML5 +- CSS3 (no frameworks, just clean vanilla CSS) +- Hosted via [GitHub Pages](https://pages.github.com/) +--- -In "myname/dreuprojecttemplate", click on "Settings" near the top right hand of the window. Change the repository name from "dreuprojecttemplate" to to "myname.github.io". ("myname" must match your GitHub user name exactly.) +## ๐Ÿ“ฌ Contact -Scroll down til you see "GitHub pages" and choose "Master" instead of "None". - -If you already have a GitHub site, then you can make this a project site rather than your personal site. - -### Step 4) Customize and view your site - -Set up your site name, description, avatar and many other options by editing the _config.yml file. - -To edit, click on the file link and then click on the little pencil icon in the top right. When you are done, scroll down and click "Commit". - -To add your own image, do the following: -* upload your image into the "images" directory, by going to the "images" directory and clicking the "Upload File" button. Let's say you upload "yourimage.png". Don't forget to Commit! -* modify the avatar line in _config.yml to say "https://myname.github.io/images/yourimage.png". Don't forget to Commit! - -Your site will typically be viewable within 5 minutes at . - -Making a change to _config.yml (or any file in your repository) will force GitHub Pages to rebuild your site with jekyll. Your rebuilt site will be viewable within 5 minutes at . - -> There are 3 different ways that you can make changes to your site: - -> 1. Edit files within your repository in the browser at GitHub.com. -> 2. Use a third party GitHub content editor, like [Prose by Development Seed](http://prose.io). It's optimized for use with Jekyll making markdown editing, writing drafts, and uploading images really easy. -> 3. Clone down your repository and make updates locally, then push them to your GitHub repository. For more on how to "clone down", see [Github pointers](https://help.github.com/en/github/getting-started-with-github). - -### Step 5) Publish your first blog post - -Edit `/_posts/2020-06-01-week1.md` to publish your first blog post. This [Markdown Cheatsheet](http://www.jekyllnow.com/Markdown-Style-Guide/) might come in handy. - -> You can add additional posts in the browser on GitHub.com too! Just hit the + icon in `/_posts/` to create new content. Just make sure to include the [front-matter](http://jekyllrb.com/docs/frontmatter/) block at the top of each new blog post and make sure the post's filename is in this format: year-month-day-title.md. - -## Modify the Style - -You can modify the look and feel of your site by modifying style.scss. - -## Local Development - -If you want to edit your website on your own computer rather than at GitHub.com, follow these instructions. - -1. Install Jekyll and plug-ins in one fell swoop. `gem install github-pages` This mirrors the plug-ins used by GitHub Pages on your local machine including Jekyll, Sass, etc. -2. Clone down your fork: `git clone https://github.com/myname/myname.github.io.git`. -3. Serve the site locally on your computer: `jekyll serve`. -4. View your website at http://127.0.0.1:4000/. -5. Commit any changes and push everything to the master branch of your GitHub user repository: `git commit -m "message here"`; then `git push -u origin master`. GitHub Pages will then rebuild and serve your website publicly. - -## Additional Tips and Help - -- [GitHub pointers](https://help.github.com/en/github/getting-started-with-github) -- [GitHub pages](https://help.github.com/en/github/working-with-github-pages/creating-a-github-pages-site#creating-your-site) -- [Markdown](https://www.markdownguide.org/basic-syntax#links) -- [Jekyll](https://jekyllrb.com) -- [Jekyll tips](https://devhints.io/jekyll) - -This site is based on [Jekyll Now](https://github.com/barryclark/jekyll-now). +- Email: haganb@southwestern.edu +- GitHub: [github.com/besshagan](https://github.com/besshagan) +- LinkedIn: [linkedin.com/in/bess-hagan](https://linkedin.com/in/bess-hagan) diff --git a/_posts/2020-06-01-week1.md b/_posts/2020-06-01-week1.md deleted file mode 100644 index 750a3dd55..000000000 --- a/_posts/2020-06-01-week1.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: post -title: Week 1 ---- - -Text here! diff --git a/404.md b/dreu-2024/404.md similarity index 100% rename from 404.md rename to dreu-2024/404.md diff --git a/LICENSE b/dreu-2024/LICENSE similarity index 100% rename from LICENSE rename to dreu-2024/LICENSE diff --git a/dreu-2024/README.md b/dreu-2024/README.md new file mode 100644 index 000000000..f2706ff95 --- /dev/null +++ b/dreu-2024/README.md @@ -0,0 +1,72 @@ +This is a template DREU project site. You can start with this and modify it in any way you like, so long as it is still hosted in a git repository. + +## Quick Start + +### Step 1) Get a GitHub account + +Go to github.com and sign up for a free account. Let's assume you sign up for an account with username "myname". + +### Step 2) Copy this site to your GitHub account + +Sign into your github account. + +From this repo, click the "Fork" button at the top right hand of the window. +A copy of this repository will be made in your own github account. + +### Step 3) Rename the repository + +In "myname/dreuprojecttemplate", click on "Settings" near the top right hand of the window. Change the repository name from "dreuprojecttemplate" to to "myname.github.io". ("myname" must match your GitHub user name exactly.) + +Scroll down til you see "GitHub pages" and choose "Master" instead of "None". + +If you already have a GitHub site, then you can make this a project site rather than your personal site. + +### Step 4) Customize and view your site + +Set up your site name, description, avatar and many other options by editing the _config.yml file. + +To edit, click on the file link and then click on the little pencil icon in the top right. When you are done, scroll down and click "Commit". + +To add your own image, do the following: +* upload your image into the "images" directory, by going to the "images" directory and clicking the "Upload File" button. Let's say you upload "yourimage.png". Don't forget to Commit! +* modify the avatar line in _config.yml to say "https://myname.github.io/images/yourimage.png". Don't forget to Commit! + +Your site will typically be viewable within 5 minutes at . + +Making a change to _config.yml (or any file in your repository) will force GitHub Pages to rebuild your site with jekyll. Your rebuilt site will be viewable within 5 minutes at . + +> There are 3 different ways that you can make changes to your site: + +> 1. Edit files within your repository in the browser at GitHub.com. +> 2. Use a third party GitHub content editor, like [Prose by Development Seed](http://prose.io). It's optimized for use with Jekyll making markdown editing, writing drafts, and uploading images really easy. +> 3. Clone down your repository and make updates locally, then push them to your GitHub repository. For more on how to "clone down", see [Github pointers](https://help.github.com/en/github/getting-started-with-github). + +### Step 5) Publish your first blog post + +Edit `/_posts/2020-06-01-week1.md` to publish your first blog post. This [Markdown Cheatsheet](http://www.jekyllnow.com/Markdown-Style-Guide/) might come in handy. + +> You can add additional posts in the browser on GitHub.com too! Just hit the + icon in `/_posts/` to create new content. Just make sure to include the [front-matter](http://jekyllrb.com/docs/frontmatter/) block at the top of each new blog post and make sure the post's filename is in this format: year-month-day-title.md. + +## Modify the Style + +You can modify the look and feel of your site by modifying style.scss. + +## Local Development + +If you want to edit your website on your own computer rather than at GitHub.com, follow these instructions. + +1. Install Jekyll and plug-ins in one fell swoop. `gem install github-pages` This mirrors the plug-ins used by GitHub Pages on your local machine including Jekyll, Sass, etc. +2. Clone down your fork: `git clone https://github.com/myname/myname.github.io.git`. +3. Serve the site locally on your computer: `jekyll serve`. +4. View your website at http://127.0.0.1:4000/. +5. Commit any changes and push everything to the master branch of your GitHub user repository: `git commit -m "message here"`; then `git push -u origin master`. GitHub Pages will then rebuild and serve your website publicly. + +## Additional Tips and Help + +- [GitHub pointers](https://help.github.com/en/github/getting-started-with-github) +- [GitHub pages](https://help.github.com/en/github/working-with-github-pages/creating-a-github-pages-site#creating-your-site) +- [Markdown](https://www.markdownguide.org/basic-syntax#links) +- [Jekyll](https://jekyllrb.com) +- [Jekyll tips](https://devhints.io/jekyll) + +This site is based on [Jekyll Now](https://github.com/barryclark/jekyll-now). diff --git a/_config.yml b/dreu-2024/_config.yml similarity index 90% rename from _config.yml rename to dreu-2024/_config.yml index afeed28c6..57c2c7afb 100644 --- a/_config.yml +++ b/dreu-2024/_config.yml @@ -3,13 +3,13 @@ # # Name of your site (displayed in the header) -name: Your Name +name: Bess Hagan # Short bio or description (displayed in the header) -description: Summer 2020 DREU Project +description: Summer 2024 DREU Project # URL of your avatar or profile pic (you could use your GitHub profile pic) -avatar: https://raw.githubusercontent.com/barryclark/jekyll-now/master/images/jekyll-logo.png +avatar: https://avatars.githubusercontent.com/u/142757968?v=4 # # Flags below are optional @@ -18,14 +18,14 @@ avatar: https://raw.githubusercontent.com/barryclark/jekyll-now/master/images/je # Includes an icon in the footer for each username you enter footer-links: dribbble: - email: yourmail@mail.com + email: haganb@southwestern.com facebook: flickr: rss: # just type anything here for a working RSS icon # Your website URL (e.g. http://ajstent.github.io) # Used for Sitemap.xml and your RSS feed -url: +url: https://github.com/besshagan # If you're hosting your site at a Project repository on GitHub pages # (http://yourusername.github.io/repository-name) diff --git a/_includes/meta.html b/dreu-2024/_includes/meta.html similarity index 100% rename from _includes/meta.html rename to dreu-2024/_includes/meta.html diff --git a/_includes/svg-icons.html b/dreu-2024/_includes/svg-icons.html similarity index 100% rename from _includes/svg-icons.html rename to dreu-2024/_includes/svg-icons.html diff --git a/_layouts/default.html b/dreu-2024/_layouts/default.html similarity index 100% rename from _layouts/default.html rename to dreu-2024/_layouts/default.html diff --git a/_layouts/page.html b/dreu-2024/_layouts/page.html similarity index 100% rename from _layouts/page.html rename to dreu-2024/_layouts/page.html diff --git a/_layouts/post.html b/dreu-2024/_layouts/post.html similarity index 100% rename from _layouts/post.html rename to dreu-2024/_layouts/post.html diff --git a/dreu-2024/_posts/2024-05-12-earlyMay.md b/dreu-2024/_posts/2024-05-12-earlyMay.md new file mode 100644 index 000000000..3097e7f80 --- /dev/null +++ b/dreu-2024/_posts/2024-05-12-earlyMay.md @@ -0,0 +1,10 @@ +--- +layout: post +title: Early May +--- + +Before beginning the program, [Luc Paquette](https://education.illinois.edu/profile/luc-paquette) introduced me to [Colleen Lewis](https://cs.illinois.edu/about/people/faculty/colleenl) over email because she was coordinating with the university to provide housing for me over the summer at Presby Hall. + +![Presby Hall](https://raw.githubusercontent.com/besshagan/besshagan.github.io/1fa05571db7288e1bec0f1662aedd5f5b6a1dd41/images/entrance.jpg) + +I'll be here at Presby by myself for the first two weeks, but I'll be sharing this 4-bedroom suite with other students soon. Everyone I've met so far has been incredibly friendly and welcoming. In fact, Luc and his wife picked me up from the airport to take me to Presby, and the UIUC students who staff the front desk here have helped get me set up, and they've given me lots of information about the area I'm living in. Presby is within walking distance from Green Street, where there are restaurants and businesses, including a small Target that sells groceries and other (dorm living) necessities. My first day of the DREU program begins tomorrow. I'm meeting with Luc at his office at 9:30 am, and I'm excited to get started! diff --git a/dreu-2024/_posts/2024-05-12-week1.md b/dreu-2024/_posts/2024-05-12-week1.md new file mode 100644 index 000000000..e50fcaed4 --- /dev/null +++ b/dreu-2024/_posts/2024-05-12-week1.md @@ -0,0 +1,14 @@ +--- +layout: post +title: Week 1 +--- + +## May 13 - May 17 + +I met Juan Pinto, a PhD student at UIUC, during my initial meeting with Luc. We discussed the overall project, what the next steps in the process should be, and we made plans to meet again Wednesday afternoon after I had some time to review the mock data I helped to generate on May 9th. Luc also invited me to join the INVITE Institute's Slack Channel where I could ask questions and attend meetings with other people on this project. + +Over the next few days, I was also given read-only access to the database via HeidiSQL and Admin/Developer privileges on the Minecraft server where the learning environment was built. I attended INVITE's strand1 meeting on Slack, and I met with Jeff Ginger virtually to talk about the data and the learning environment. He walked me through installing MultiMC to navigate the WHIMC/Minecraft server that data is being collected from. On Wednesday, I met with Luc to go over my initial notes on the data, and we agreed on a regular day/time to meet once a week. Luc also wanted me to meet with Juan weekly to discuss the project and receive help. + +I spent most of Thursday and Friday acquainting myself with the learning environment. I have never played a videogame on a PC before, so learning how to navigate basic controls while I taught myself how to use the development tools I was given was challenging, but I think I'm starting to get the hang of it. The plan is to generate mock data for myself that I can look at to see if I can gain further incite into how to recognize points of challenge and persistence for student participants. + +Lastly, I reached out to DREU about the DREU Student Kick-Off Webinar because the dates on the Summer Activities Calendar did not align with this year's calendar, and the link for this event was broken. I haven't heard back yet, but I hope to receive more information from DREU about the events I am meant to attend soon. diff --git a/dreu-2024/_posts/2024-05-19-week2.md b/dreu-2024/_posts/2024-05-19-week2.md new file mode 100644 index 000000000..9a4c1ffab --- /dev/null +++ b/dreu-2024/_posts/2024-05-19-week2.md @@ -0,0 +1,12 @@ +--- +layout: post +title: Week 2 +--- + +## May 20 - May 24 + +Colleen Lewis reached out to me over the weekend to invite me to join a computer science research and reading group at UIUC. These groups meet on Tuesdays and Fridays, and I attended meetings for both groups this week in addition to my second strand1 meeting, the monthly meeting for the entire INVITE Institute, and a meeting with the WHIMC Barrelbot team. Midweek, I received an email invitation to attend the CS 2024 Summer Research Lunch & Learns. This speaker series will be held on Tuesdays at noon beginning next week. + +On Monday, I had my weekly check-in with Luc. He asked me to choose one or two of the questions he had about the database to see if I could extract that data. So, I started the week learning how to export and query from the database using HeidiSQL to find out how many times a player attempted a puzzle before reaching a solution. I tried a few different mySQL queries which may or may not be correct, but I won't be able to truly test these queries until some of the issues I encountered with data collection are corrected. + +So, I reached out to Luc and Juan to ask how I should proceed. Luc said I should try working outside of the database by either using Excel to prototype the data or by using Python to analyze the data. I decided to attempt the latter after my first weekly meeting with Juan. He shared some information with me about how to use Python and Pandas to extract and analyze the data. I spent Thursday and Friday teaching myself how to use these tools, and I began writing my own code to extract data from the mySQL database remotely. \ No newline at end of file diff --git a/dreu-2024/_posts/2024-05-26-week3.md b/dreu-2024/_posts/2024-05-26-week3.md new file mode 100644 index 000000000..121c8b859 --- /dev/null +++ b/dreu-2024/_posts/2024-05-26-week3.md @@ -0,0 +1,13 @@ +--- +layout: post +title: Week 3 +--- +## May 27 - May 31 + +I'm still learning how to utilize the Pandas library in Python to do data analysis, but I was able to write a script that connects to the WHIMC database remotely to import tables as data frame objects and export them to Excel files in a local directory on my computer. I also wrote a script that calculates the Levenshtein distance (edit distance) between changes made to the directions stored in the Barrel Bot by the user every time they interact with it in the environment. It doesn't work perfectly yet, because it is still unclear which puzzle they are working on and when they complete that puzzle, but I'm proud of myself for getting as far as I have. + +On Tuesday, I attended my second CS Research Group meeting where we discussed how to improve an existing grant proposal for a research study, and then I went to my first Lunch and Learn where I was introduced to the staff hosting these sessions and other CS students who are here for the summer doing research in the CS department. + +On Wednesday, I attended the WHIMC Barrel Bot check-in meeting, my first strand3 meeting, and I had my weekly check-in meeting with Juan. Juan and I discussed the state of the data being collected and the code I've been working on. We discussed exploratory data analysis (EDA), how to make improvements to my code, and where to store calculated results. + +I spent the remainder of my week working on my script and learning more about how I can use Pandas data structures to merge tables for EDA. Luc and I didn't have our normal check-in meeting until Friday because he was traveling, but I had lots to share with him by the time he got back. diff --git a/dreu-2024/_posts/2024-06-02-week4.md b/dreu-2024/_posts/2024-06-02-week4.md new file mode 100644 index 000000000..9c777cd4d --- /dev/null +++ b/dreu-2024/_posts/2024-06-02-week4.md @@ -0,0 +1,15 @@ +--- +layout: post +title: Week 4 +--- +## June 3 - June 7 + +My fourth week has been a little disappointing because I wasn't able to accomplish as much as I hoped to. I was able to make some improvements to my existing scripts after I met with Luc on Monday, and he introduced me to pivot tables in Excel because I was curious about this method for data analysis. I also shared my scripts to calculate edit distance for users using loops with Juan, and he walked me through how to replace my loops with the apply method and lambda functions to make my script more efficient. + +After learning more about the apply, concat, and merge methods in Pandas earlier in the week, I had some ideas about how to move forward, but I struggled with the application of these methods on the data as it exists in the database because the plans I had were based on the data we collected on May 9th, and there have been several changes made to the database since then. + +Despite this setback, I attempted to merge tables in a variety of ways to see if looking at the existing data in a new way might give me some new incites, but most of the new tables I created were full of duplicates and null values. The only useful tables I produced were the ones I created by adapting some code that Juan sent to me to concatenate tables, instead of joining them. Regardless, I was hopeful that once I had some new data, the path forward would be less murky, and all I needed to get that new data was the go-ahead from Sam. + +Once Sam pushed all the latest updates, I logged into the server and worked through the first three puzzles Jeff had set up for me, toggling back and forth between the database and the learning environment, but something was wrong. Data was not logging in the tables I expected it to see it, but I wasn't certain this was an error. So, I went through every table in the database to find out what was being logged, and I exported that data to attempt to extract what I could from it. Just as I thought I had found something new and relevant, Jeff messaged me on Slack to tell me that there had been a system failure earlier in the week so they had to roll back all the updates they made on Monday, so any new data collected this week should be thrown out. + +At this point, I reached out to Luc and Juan to update them on the situation and ask for guidance on how to move forward. Luc had a couple of ideas for what I could do with the data in its current state, and he also suggested that I start working on the DREU Progress Report (3rd milestone) which is due at the end of the 5th week. \ No newline at end of file diff --git a/dreu-2024/_posts/2024-06-09-week5.md b/dreu-2024/_posts/2024-06-09-week5.md new file mode 100644 index 000000000..d42b7307f --- /dev/null +++ b/dreu-2024/_posts/2024-06-09-week5.md @@ -0,0 +1,17 @@ +--- +layout: post +title: Week 5 +--- +## June 10 - June 14 + +I began my week drafting the progress report for the third DREU milestone and meeting with Luc to discuss my progress and findings from last week. I spent a good portion of the remainder of my week writing and debugging a script that merges tables to calculate the distance and time between interactions with the BarrelBot, and on Friday I used Matplotlib to create my first visualizations of this mock data. + +I also dropped in on a strand1 meeting, which went in a direction I wasn't anticipating but found very interesting. They were discussing how to approach the design of pedagogical agent interventions for students whose first language is not American English. More specifically, they discussed Spanish and African American Vernacular English (AAVE). I do not think that everyone was on the same page concerning these considerations. + +During my weekly meeting with Juan, we examined my most recent Python script to determine why it worked as intended for some sets of data, but not others. Ultimately, this led to the discovery of an edge case, where the user interacts with the BarrelBot more than once without movement between their interactions. Once I realized what was happening in the data, fixing the code was fairly simple. + +I also met with the WHIMC BarrelBot development team with Luc, and I attended the Lunch and Learn and CS research and reading groups, as usual, this week, where I met Colleen in person for the very first time. Colleen is the UIUC contact Luc introduced me to who coordinated my stay at Presby Hall and invited me to join these groups so I could meet other CS students. Accordingly, she was one of the presenters at this week's Lunch and Learn on networking. + +During a breakout session, I met Tomas, a computer science student from Brazil who recently arrived at UIUC, and Evan, a machine learning major. By the end of Colleen's lecture, attendees were primed to meet and mingle, and I met several other students in quick succession, which was really nice and really overwhelming for me. Fortunately, I used what I had learned over lunch to introduce myself and express the genuine interest and curiosity I had for these other students before excusing myself so I could get back to work. + +In reality, I don't think Luc would have minded if I had spent more time talking with other students. I just didn't want to come off as rude or disinterested when the truth is, I'm an autistic adult learning to honor where I'm at in my body when I don't have the energy and mental resources to socialize or when I'm experiencing sensory overwhelm because I'm in a large, loud, crowded room where I did not anticipate having to introduce myself to so many people at once. That said, I think I handled things to the best of my ability at that moment, and I'm hopeful that I'll be able to spend more time with some of the people who took the time to approach me at next week's lecture. \ No newline at end of file diff --git a/dreu-2024/_posts/2024-06-16-week6.md b/dreu-2024/_posts/2024-06-16-week6.md new file mode 100644 index 000000000..7d4dda665 --- /dev/null +++ b/dreu-2024/_posts/2024-06-16-week6.md @@ -0,0 +1,15 @@ +--- +layout: post +title: Week 6 +--- +## June 17 - June 21 + +After meeting with Luc on Monday, I began to investigate process mining because he thought this would be a productive way to spend my time when I needed a break from coding. He said I should begin by crafting potential narratives about how students may approach problem-solving based on what I've learned from the mock data we have available. So, I took some time to gain some foundational knowledge on the process of process mining, and I created a table of events that occur in the learning environment that are representative of the data being collected. Then I wrote a short narrative of a user solving a puzzle, and I created another table to show how these events might show up in this scenario in the event log data. I shared this with Luc and he made some suggestions about using the data we have currently to find a starting point to define things like: how long will the user need to be engaged in an activity before it can be described as a long time or a short time. + +Later in the week, I met with Juan. He agreed with Luc's approach to exploring the data visually with histograms to find natural breaking points in time, but he also suggested that I simplify these events to start, by removing things like 'long', 'short', 'many', and 'few', and create operational definitions for these simplified events. For instance, 'press-button' occurs when 'table' is 'action_physical and 'type' is 'STONE_BUTTON.' + +Luckily, Jeff was able to reset enough of the learning environment for me and Juan to create some new data on Tuesday afternoon. There are still some bugs to work out in the environment and the database, but the data we generated was very informative once I ran it through the scripts I combined this week, and I gained a lot of insight on how to adjust my code to move forward and learn even more! + +While I was analyzing the new tables my scripts generated, I took notes to pass on to Luc and the WHIMC development team on which data was missing and how they might improve formatting on some of the new data from the learning environment. Moreover, I was delighted to find that the notes I was taking to extract this information for them, would also be beneficial for the process mining project because these notes have given me better insight on how I might create the operational definitions Juan suggested. + +Apart from all that, I attended the CS research and reading group meetings, a seminar on biohybrid robotics, and the weekly UIUC Lunch and Learn on advisors, mentors, and sponsors this week, and I am planning to attend the UIUC Lunch and Lawn Games Student Social this weekend. diff --git a/dreu-2024/_posts/2024-06-23-week7.md b/dreu-2024/_posts/2024-06-23-week7.md new file mode 100644 index 000000000..7b3448374 --- /dev/null +++ b/dreu-2024/_posts/2024-06-23-week7.md @@ -0,0 +1,15 @@ +--- +layout: post +title: Week 7 +--- +## June 24 - June 28 + +During my check-in meeting with Luc, we discussed an alternative to process mining for visualization using a free online research tool called Epistemic Network Analysis (ENA). ENA creates visualizations that show relationships between co-occurrences, and a variation of this tool called ONA can be toggled on to pay respect to the order of events. The input for this tool is similar to the example input I found for process mining, and the application is user-friendly, so it's a more feasible option for analysis with the time I have remaining here. + +That said, I successfully combined all my working scripts into one script and devised some new features to clean and process the data in a way that allows user events to be seen more clearly alongside calculations, which may help to identify markers of struggle or persistence. For instance, the edit distance calculations indicate whether the user's choices are building toward or away from the solution for specific puzzles. + +I used this processed data to create operational definitions, which I can use to reformat and output event data on users for ENA, and I have begun a new script to do so. I also took some time to create visualizations using Python and the Matplotlib library. Using this tool, I generated histograms to visualize the distribution of changes made during each interaction with the Barrel Bot across all users. The information this provides can be used in the future to set thresholds after data collection to define whether users are making big or small changes as they build toward a solution that allows Barrel Bot to navigate various obstacle courses in the learning environment. + +Luc and I met again this week to update Jeff Ginger on my latest findings after the WHIMC update last week, and we met again on Thursday to begin discussing the final report I need to write for my last DREU milestone. We crafted a basic outline and discussed where I should start looking for related work to include in my report. + +Beyond this, I read some research papers that Luc provided for me at our Monday meeting, and I learned more about what graduate school might be like during my weekly meeting with Juan, who will be graduating with his PhD in education next year. \ No newline at end of file diff --git a/dreu-2024/_posts/2024-06-30-week8.md b/dreu-2024/_posts/2024-06-30-week8.md new file mode 100644 index 000000000..a32637001 --- /dev/null +++ b/dreu-2024/_posts/2024-06-30-week8.md @@ -0,0 +1,13 @@ +--- +layout: post +title: Week 8 +--- +## July 1 - July 5 + +I met with Luc virtually this week. We discussed one of the academic papers I read for him last week and the final technical report I'll be writing for DREU. He suggested that I begin by writing about the Minecraft learning environment and BarrelBot, and he suggested that I spend my time with Juan discussing ENA interpretation since this will likely be in the results section of the report. + +So, I spent the first half of my week focused on taking my script to process and format the BarrelBot data for ENA as far as I could before my Wednesday meeting with Juan. I managed to get a lot done. At present, the output from this script includes when users enter and exit puzzle regions, when users interact and/or make changes to the bot, information on the type of changes made (whether the user added, removed, rearranged, or removed all instructions in the bot), whether the user ran or reset the bot, and whether the bot failed or succeeded to navigate the obstacle course in the puzzle region. + +On Wednesday afternoon, Juan and I looked at the ENA and ONA results together. It seems that the most difficult part of using this data analysis tool is the interpretation itself. In other words, what do the x and y axis mean? Juan said that if I were to collect more data, I would need to do so as soon as possible because the interpretation and write-up are time-consuming. So, it seems likely that I will have to work with the data I have to wrap up this project and write my final report. + +Unfortunately, as I approach the end of my DREU summer research experience, Luc and Juan will not be as available as they have been. I will still be able to contact them via Slack, but Juan and Luc leave for a conference together at some point toward the end of my 9th week, and as soon as the conference ends, Luc is off to Korea with his wife to visit her family. \ No newline at end of file diff --git a/dreu-2024/_posts/2024-07-07-week9.md b/dreu-2024/_posts/2024-07-07-week9.md new file mode 100644 index 000000000..841485742 --- /dev/null +++ b/dreu-2024/_posts/2024-07-07-week9.md @@ -0,0 +1,13 @@ +--- +layout: post +title: Week 9 +--- +## July 8 - July 12 + +It's my second to last week here in Illinois. I'm excited to be going home, but there's still a lot I want to accomplish before my time here ends. I've been steadily fleshing out the outline that Luc helped me with for my final technical paper. I found a few academic papers I would like to cite, including two by a PhD student in Israel who has published several papers about persistence in learning using virtual educational environments for children. One striking point in their research is that certain computational concepts, like understanding data, may be more appropriate for younger age groups and harder to grasp for slightly older students. + +I've noticed across pre/post testing, block-based coding programs, and other virtual educational tools for children that the structure of computational concepts is often the same because these concepts are meant to build on each other. However, I'm beginning to wonder if this might not be the best approach. It's possible this structure may be more suitable for high school students and adults, but less effective for younger learners. + +Regardless, I spent most of my week reading academic papers, tweaking my Python script for ONA (Operational Network Analysis), and trying to gain a stronger understanding of the webENA tool that I will be using to make generalizations about user behavior in the learning environment. I thought I was making progress, but after my meeting with Juan on Wednesday, I realized that I needed to add one more category to my event log for my ONA results to be more meaningful. Now, I can separate a user's behavior while they are attempting to solve a puzzle and after they have solved it. + +On Thursday, Luc took Juan and me to lunch, and it was really nice to hang out with them socially. On Friday, UIUC booked a charter bus to take the Lunch and Learn students to Chicago for an architecture tour with lunch and dinner provided. This was my first time in Chicago, and the architecture tour was amazing. Normally, I'm not a fan of boats, but getting to see all the buildings and learn about the city's history was worth leaving land for. After we got off the boat, they took us out for deep dish pizza, another first for me. Then I wandered around the city by myself until dinner. I went to Millennium Park to see the giant bean before heading across the street to the modern art portion of The Art Institute of Chicago. diff --git a/dreu-2024/_posts/2024-07-14-week10.md b/dreu-2024/_posts/2024-07-14-week10.md new file mode 100644 index 000000000..0285387cb --- /dev/null +++ b/dreu-2024/_posts/2024-07-14-week10.md @@ -0,0 +1,29 @@ +--- +layout: post +title: Week 10 +--- +## July 15 - July 19 + +I am excited to report that I finally got to work with some real data generated by children in the learning environment this week! The week leading up to this data collection was a little stressful but definitely worth it! + +Last week, Jeff and the WHIMC development team pushed some new updates and reset the learning environment to prepare for the upcoming BarrelBot camp. While they were doing this, I was working on my Python script for ONA when suddenly my script began outputting CSV files that didn't make sense. I didn't understand what was happening, but I eventually resolved this issue over the weekend by deleting one line of code. That one line of code was a patch I had added several weeks ago to adjust the coordinates of puzzle regions from the database to correspond with the actual virtual environment, but the coordinates must have changed when they reset the environment. So, I removed this patch to let the information in the database determine the z-coordinates of puzzle regions and presto chango! My script worked again! + +After debugging my script, I finished writing the code to add a status column to my ONA event log. I was over the moon that I had finished everything on Saturday because Luc and Juan had left town for a conference where they would be hosting a workshop, and Luc had shared a Zoom link with me that would allow me to attend this workshop on Sunday. + +However, my plans shifted when I received a late-night Slack message from Jeff asking if I'd be willing to test the environment one last time for him. This was completely optional, but I wanted to help. So, first thing Sunday morning, I asked my roommate Katelyn if she'd be interested in generating some data for me, and she was more than happy to help. I set everything up for her on my laptop and gave her a quick tutorial on how to play. Then, I hung out nearby and took a few notes. She solved the first two puzzles, but she couldn't complete the third due to a bug in the learning environment, which I let Jeff know about immediately. + +After Katelyn decided to stop playing the game, I ran the data she generated through my Python script for ONA only to find that the output it generated was a confusing mess. At this point, my script was working exactly as intended, but the data from the database for button presses and successful outcomes was not logging correctly. I told Luc about the situation over Slack and began patching my script to work around these issues so I'd be ready for the data collection starting the next day. + +I was still able to attend portions of the workshop Luc and Juan were hosting, but I lost track of time while I was coding and I missed the panel I was hoping to attend in the afternoon. Fortunately, despite juggling these activities, I managed to patch the latest version of my script so I'd be ready first thing Monday morning! + +On Monday, data collection began. On the first day, roughly 100 campers were divided into 5 groups. These groups spent the day trying out the different camp experiences being offered, one of which was WHIMC's BarrelBot learning environment. Then, students signed up for the activity they wanted to spend the rest of the week doing. Unsurprisingly, BarrelBot was the most popular choice! Seventeen students returned on Tuesday to work through the BarrelBot learning environment, starting from Puzzle 1 for a second time. This was advantageous because I wouldn't be able to analyze user behavior beyond this point but with so many actual students running through the first 3 puzzles, I was hopeful about what I might discover. + +Accordingly, I spent the majority of my week working on my technical report and exploring Monday and Tuesday's data, but I didn't get as far as I would have liked because I was struggling to identify the 5 separate groups who all used the same user accounts on Monday. While attempting to resolve this issue on my own, I reached out to Jeff a couple of times for help. Eventually, I realized that there had been problems on-site getting the first group going, one account being used by adults had been set up last minute for students but they had to be teleported around the environment, and all the data from the fourth group was missing from the database. The remaining data, from groups 2, 3, and 5, appeared reliable, so I proceeded under the assumption that I was looking at the behavior of 45 junior high school-aged students. + +Unfortunately, I found out late Friday afternoon that there had not been enough computers for all the students in each of the 5 groups throughout the day. Some of the user data was generated by individual students and other user data was generated by two students sitting next to one another on the same computer working cooperatively, and I do not know how to distinguish between these users in the dataset. + +Unaware of this limitation, I was struggling to make generalizations about student behavior using ONA, but I was hopeful that looking at Tuesday's data might help me make sense of the mathematical visualizations I was seeing on webENA. From Wednesday onward, I focused my attention on Tuesday's data from a group of 17 students. While exploring this dataset, I saw some interesting behavior, but I was concerned that real-life interventions were occurring that might disrupt my ability to make generalizations about student behavior to identify markers of struggle and persistence. + +To my dismay, my concerns were not unfounded. I saw one group of students (who may have been persisting) suddenly give up while working on Puzzle 3, and I wasn't certain if they gave up because they were struggling or if they had been instructed to move on to Puzzle 4 because it is a cooperative area where pairs of students build BarrelBot puzzles for one another to solve. I also saw another group of students who appeared to be struggling with Puzzle 2 move on to Puzzle 3. Suddenly, several students who had been unable to complete the second puzzle were able to complete a more complex puzzle. I suspected that this group was struggling the most, so they were assisted in solving Puzzle 3 before moving on to the cooperative area with everyone else. My suspicions about both groups were confirmed on Friday afternoon by Jeff, who had been there in person. + +Despite these setbacks, there were 2 student users in this data set that I think may have shown signs of struggle and persistence on Puzzle 2 and Puzzle 3. It's not a lot of data to go on, but it's a start. I wish I had more time and more data, but I suppose that is what the limitations and future works sections of technical reports are for. diff --git a/_sass/_highlights.scss b/dreu-2024/_sass/_highlights.scss similarity index 100% rename from _sass/_highlights.scss rename to dreu-2024/_sass/_highlights.scss diff --git a/_sass/_reset.scss b/dreu-2024/_sass/_reset.scss similarity index 100% rename from _sass/_reset.scss rename to dreu-2024/_sass/_reset.scss diff --git a/_sass/_svg-icons.scss b/dreu-2024/_sass/_svg-icons.scss similarity index 100% rename from _sass/_svg-icons.scss rename to dreu-2024/_sass/_svg-icons.scss diff --git a/_sass/_variables.scss b/dreu-2024/_sass/_variables.scss similarity index 100% rename from _sass/_variables.scss rename to dreu-2024/_sass/_variables.scss diff --git a/blog.html b/dreu-2024/blog.html similarity index 100% rename from blog.html rename to dreu-2024/blog.html diff --git a/dreu-2024/dreu-style.css b/dreu-2024/dreu-style.css new file mode 100644 index 000000000..c3681a28c --- /dev/null +++ b/dreu-2024/dreu-style.css @@ -0,0 +1,193 @@ +/* ============================= */ +/* GLOBAL SETTINGS */ +/* ============================= */ + +:root { + /* Define your core color palette here for easy reuse */ + --bg-color: #f3e8fc; /* Soft purple background */ + --text-color: #212121; /* Default text */ + --primary: #6a1b9a; /* Bold purple */ + --secondary: #8e24aa; /* Lighter purple */ + --accent: #ab47bc; /* Button & link purple */ + --hover: #5e35b1; /* Darker hover purple */ + --border-light: #eee; /* Light gray border */ + --shadow-light: rgba(0, 0, 0, 0.04); + --highlight-bg: #f3e5f5; /* Light purple blockquote */ + --highlight-border: #ba68c8; /* Blockquote accent */ +} + +/* Apply base styles to everything */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +/* ============================= */ +/* BASE LAYOUT */ +/* ============================= */ + +body { + background-color: var(--bg-color); + color: var(--text-color); + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + line-height: 1.6; + max-width: 850px; + margin: 2rem auto; + padding: 0 1.5rem; +} + +/* Optional wrapper for mobile responsiveness if needed */ +@media (max-width: 600px) { + body { + padding: 0 1rem; + font-size: 0.95rem; + } +} + +/* ============================= */ +/* TYPOGRAPHY */ +/* ============================= */ + +/* Main site header section */ +.site-header { + margin-bottom: 2rem; + text-align: center; +} + +.site-header h1 { + font-size: 2.2rem; + font-weight: 700; + color: var(--primary); +} + +.site-header p { + font-size: 1rem; + font-weight: 400; + color: var(--hover); + margin-top: 0.5rem; +} + +/* Section headers */ +h1 { + font-size: 2rem; + font-weight: 700; + margin-bottom: 0.5rem; + color: var(--primary); +} + +h2 { + font-size: 1.6rem; + color: var(--secondary); + border-bottom: 2px solid #e1bee7; + padding-bottom: 0.25rem; + margin: 2rem 0 1rem; +} + +h3 { + font-size: 1.2rem; + color: var(--hover); + margin: 1.5rem 0 0.5rem; +} + +/* Paragraph spacing */ +.entry p { + margin-bottom: 1rem; + font-size: 1rem; +} + +/* ============================= */ +/* LINKS */ +/* ============================= */ + +a { + color: var(--accent); + font-weight: 500; + text-decoration: none; +} + +a:hover { + color: var(--primary); + text-decoration: underline; +} + +/* ============================= */ +/* LISTS */ +/* ============================= */ + +ul { + padding-left: 1.5rem; +} + +.contact ul { + list-style: none; + padding-left: 0; +} + +.contact li { + margin: 0.5rem 0; + font-size: 1rem; +} + +/* ============================= */ +/* CONTENT BOXES */ +/* ============================= */ + +/* Reusable white cards for about/contact/project blocks */ +.about, +.contact, +.entry, +.project-card { + background-color: #fff; + border: 1px solid var(--border-light); + border-radius: 12px; + padding: 1.5rem; + margin: 2rem auto; + box-shadow: 0 3px 12px var(--shadow-light); + max-width: 100%; +} + +/* Project card link/button */ +.project-card a { + display: inline-block; + background-color: var(--accent); + color: #fff; + padding: 0.4rem 0.8rem; + border-radius: 5px; + font-size: 0.9rem; + margin-top: 0.5rem; + transition: background-color 0.2s ease; +} + +.project-card a:hover { + background-color: var(--primary); +} + +/* ============================= */ +/* BLOCKQUOTES */ +/* ============================= */ + +blockquote { + border-left: 5px solid var(--highlight-border); + background-color: var(--highlight-bg); + padding: 0.75rem 1.25rem; + margin: 1.5rem 0; + font-style: italic; + color: #4a148c; +} + +/* Ensure entry headings sit flush */ +.entry h3 { + margin-top: 0; +} + +/* ============================= */ +/* FOOTER */ +/* ============================= */ + +footer { + text-align: center; + font-size: 0.9rem; + margin-top: 3rem; + color: #888; +} diff --git a/files/README.md b/dreu-2024/files/README.md similarity index 100% rename from files/README.md rename to dreu-2024/files/README.md diff --git a/dreu-2024/files/finalreport.pdf b/dreu-2024/files/finalreport.pdf new file mode 100644 index 000000000..ca486c26c Binary files /dev/null and b/dreu-2024/files/finalreport.pdf differ diff --git a/dreu-2024/files/mid-dreu-progress-report.pdf b/dreu-2024/files/mid-dreu-progress-report.pdf new file mode 100644 index 000000000..4dc516daf Binary files /dev/null and b/dreu-2024/files/mid-dreu-progress-report.pdf differ diff --git a/images/404.jpg b/dreu-2024/images/404.jpg similarity index 100% rename from images/404.jpg rename to dreu-2024/images/404.jpg diff --git a/images/config.png b/dreu-2024/images/config.png similarity index 100% rename from images/config.png rename to dreu-2024/images/config.png diff --git a/dreu-2024/images/dormitorio.jpg b/dreu-2024/images/dormitorio.jpg new file mode 100644 index 000000000..012996d2a Binary files /dev/null and b/dreu-2024/images/dormitorio.jpg differ diff --git a/dreu-2024/images/entrance.jpg b/dreu-2024/images/entrance.jpg new file mode 100644 index 000000000..0cc266b37 Binary files /dev/null and b/dreu-2024/images/entrance.jpg differ diff --git a/images/first-post.png b/dreu-2024/images/first-post.png similarity index 100% rename from images/first-post.png rename to dreu-2024/images/first-post.png diff --git a/images/jekyll-logo.png b/dreu-2024/images/jekyll-logo.png similarity index 100% rename from images/jekyll-logo.png rename to dreu-2024/images/jekyll-logo.png diff --git a/images/jekyll-now-theme-screenshot.jpg b/dreu-2024/images/jekyll-now-theme-screenshot.jpg similarity index 100% rename from images/jekyll-now-theme-screenshot.jpg rename to dreu-2024/images/jekyll-now-theme-screenshot.jpg diff --git a/images/step1.gif b/dreu-2024/images/step1.gif similarity index 100% rename from images/step1.gif rename to dreu-2024/images/step1.gif diff --git a/dreu-2024/index.html b/dreu-2024/index.html new file mode 100644 index 000000000..76d3d7f45 --- /dev/null +++ b/dreu-2024/index.html @@ -0,0 +1,58 @@ + + + + + 2024 DREU Project Site | Bess Hagan + + + + +
+
+

About My Project

+

+ I assisted Dr. Luc Paquette with his research on persistence in education. We collected data from a + Minecraft server where student participants were introduced to computing concepts. The collected data focused on + each student's level of engagement as they created programs to guide the + Barrel Bot through a series + of obstacle courses. The goal of this analysis was to identify points of challenge to better understand how students + persist or fail to persist when facing educational hurdles. +

+
+ +
+

5-Week Progress Report

+

+ At the midpoint of the program, I reflected on my work preparing a SQL-to-Python data pipeline, learning to query the WHIMC database, + and collaborating with the development team to support data collection and debugging. +

+

+ + Read the 5-Week Progress Report (PDF) + +

+
+ +
+

Final Technical Report

+

+ In my final report, I detail the full scope of my DREU project, including contributions to data preparation, analysis, and tool development + for the WHIMC BarrelBot learning environment. I reflect on what I learned about educational research and the challenges of analyzing + student behavior in virtual spaces. +

+

+ + Read the Final Technical Report (PDF) + +

+
+ +
+ ยฉ 2024 Bess Hagan ยท DREU Scholar +
+
+ + diff --git a/dreu-2024/index.md b/dreu-2024/index.md new file mode 100644 index 000000000..6842d20d2 --- /dev/null +++ b/dreu-2024/index.md @@ -0,0 +1,25 @@ +--- +layout: default +title: Summer 2024 DREU Project Site +--- + +* TOC +{:toc} + +## About Me + +I am computer science major beginning my senior year at Southwestern University this fall. I applied to DREU because I am interested in becomming a data scientist, data analyst or researcher, and I wanted the opportunity to participate in faculty led academic computing research with a mentor to get a better idea of what graduate school and a career in this area might be like. + +## About My Mentor + +[Luc Paquette](https://education.illinois.edu/profile/luc-paquette) is an associate professor in the department of curriculum & instruction. He completed his PhD in computer science at the University of Sherbrooke where he studied the design knowledge representations for intelligent tutoring systems and the use of those representations to automatically generate pedagogical content. After his PhD, professor Paquette worked as a post-doctoral research associate at Teachers College, Columbia University where he used educational data mining techniques and knowledge engineering techniques to study the behavior of students using digital learning environment. + +## About My Project + +I am assisting Dr. Paquette with his research on persistence in education. We will be collecting data from a Minecraft server where student participants will receive an introduction to computing. The data collected for analysis will focus on each student's level of engagement as they [create programs to guide the barrel bot through a series of obstacle courses](https://youtu.be/7PEeWMxOHKM?si=4hsWnwkE4zKcu_JX), and we will use this collected data to identify points of challenge for the students to better understand how students persist or do not persist when they face educational hurdles. + +[My Final Report](files/finalreport.pdf) + +## My Blog + +[My Blog](blog.html) diff --git a/style.scss b/dreu-2024/style.scss similarity index 100% rename from style.scss rename to dreu-2024/style.scss diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 000000000..172d1fdc0 Binary files /dev/null and b/favicon.ico differ diff --git a/gis/gis-style.css b/gis/gis-style.css new file mode 100644 index 000000000..a72fb56ad --- /dev/null +++ b/gis/gis-style.css @@ -0,0 +1,55 @@ +body { + font-family: Arial, sans-serif; + background: #f9f9f9; + color: #333; + margin: 0; + padding: 0; +} + +header { + text-align: center; + padding: 2rem 1rem; + background-color: #4a90e2; + color: white; +} + +header h1 { + margin: 0; + font-size: 2.5rem; +} + +header p { + margin-top: 0.5rem; + font-size: 1.2rem; +} + +.gallery { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 1.5rem; + padding: 2rem; + max-width: 1200px; + margin: auto; +} + +figure { + background: white; + border: 1px solid #ddd; + border-radius: 8px; + overflow: hidden; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); +} + +figure img { + width: 100%; + display: block; + height: auto; +} + +figcaption { + padding: 1rem; + text-align: center; + font-size: 1rem; + color: #555; +} + diff --git a/gis/images/ca-pop-by-county-thumb.jpg b/gis/images/ca-pop-by-county-thumb.jpg new file mode 100644 index 000000000..939852fa0 Binary files /dev/null and b/gis/images/ca-pop-by-county-thumb.jpg differ diff --git a/gis/images/ca-pop-by-county.pdf b/gis/images/ca-pop-by-county.pdf new file mode 100644 index 000000000..b7cf3361b Binary files /dev/null and b/gis/images/ca-pop-by-county.pdf differ diff --git a/gis/images/red-pandas-map-thumb.jpg b/gis/images/red-pandas-map-thumb.jpg new file mode 100644 index 000000000..ed839cd06 Binary files /dev/null and b/gis/images/red-pandas-map-thumb.jpg differ diff --git a/gis/images/red-pandas-map.pdf b/gis/images/red-pandas-map.pdf new file mode 100644 index 000000000..b1ec55f97 Binary files /dev/null and b/gis/images/red-pandas-map.pdf differ diff --git a/gis/index.html b/gis/index.html new file mode 100644 index 000000000..13d631e09 --- /dev/null +++ b/gis/index.html @@ -0,0 +1,30 @@ + + + + + GIS Portfolio | Bess Hagan + + + +
+

GIS Portfolio

+

Maps created using ArcGIS Pro

+
+ +
+
+ + Map of red panda distribution in China + +
Red Panda Distribution in China
+
+ +
+ + California population density by county + +
California Population by County
+
+
+ + diff --git a/images/arc-gis-pro-thumbnail.png b/images/arc-gis-pro-thumbnail.png new file mode 100644 index 000000000..f2dafca4d Binary files /dev/null and b/images/arc-gis-pro-thumbnail.png differ diff --git a/images/dreu-full.png b/images/dreu-full.png new file mode 100644 index 000000000..acfb4c492 Binary files /dev/null and b/images/dreu-full.png differ diff --git a/images/dreu-thumbnail.png b/images/dreu-thumbnail.png new file mode 100644 index 000000000..b19206e89 Binary files /dev/null and b/images/dreu-thumbnail.png differ diff --git a/images/evergrove-poster.png b/images/evergrove-poster.png new file mode 100644 index 000000000..4a875a785 Binary files /dev/null and b/images/evergrove-poster.png differ diff --git a/images/evergrove-thumbnail.png b/images/evergrove-thumbnail.png new file mode 100644 index 000000000..665b46499 Binary files /dev/null and b/images/evergrove-thumbnail.png differ diff --git a/images/knn-confusion-matrix.png b/images/knn-confusion-matrix.png new file mode 100644 index 000000000..81405ad6f Binary files /dev/null and b/images/knn-confusion-matrix.png differ diff --git a/images/knn-thumbnail.png b/images/knn-thumbnail.png new file mode 100644 index 000000000..b42a461aa Binary files /dev/null and b/images/knn-thumbnail.png differ diff --git a/images/mario-full.png b/images/mario-full.png new file mode 100644 index 000000000..18401111c Binary files /dev/null and b/images/mario-full.png differ diff --git a/images/mario-thumbnail.png b/images/mario-thumbnail.png new file mode 100644 index 000000000..2b222c06c Binary files /dev/null and b/images/mario-thumbnail.png differ diff --git a/images/profile.jpg b/images/profile.jpg new file mode 100644 index 000000000..ce4c4ce64 Binary files /dev/null and b/images/profile.jpg differ diff --git a/images/story-game.png b/images/story-game.png new file mode 100644 index 000000000..7d8d6d458 Binary files /dev/null and b/images/story-game.png differ diff --git a/index.html b/index.html new file mode 100644 index 000000000..404739b8f --- /dev/null +++ b/index.html @@ -0,0 +1,174 @@ + + + + + + + Portfolio | Bess Hagan + + + + + + + + +
+
+

Bess Hagan

+

ยท Graduating December 2025 ยท

+

Seeking full-time opportunities in AI, data, and software.

+
+
+ +

๐ŸŽ“ About Me

+
+
+ +
+
+ Profile Picture +
+
+

+ I'm a computer science undergrad at Southwestern University with a passion for data, AI, and practical problem-solving. + Before SU, I earned an Associate of Science in Computer Science from Temple College in 2023. +

+

+ Through undergraduate research in the 2024 DREU and 2025 SURF programs, Iโ€™ve worked with real-world datasets, + contributed to meaningful codebases, and tackled creative technical challenges. +

+
+
+ +
+ These experiences showed me how much I enjoy tackling complex problems that require both creativity and persistence. +

+ Iโ€™ll be graduating in December 2025 and am looking for a full-time role where I can dive into data analytics, + geospatial science, software development, or applied AI. + I want to bring curiosity and practical know-how to projects that demand both creativity and technical rigor. +

+
+ +
+
    +
  • ๐Ÿ” Interests: data science, machine learning, LLMs, GIS
  • +
  • ๐Ÿ›  Tools: Python, Java, C++, R, SQL, ArcGIS Pro, GitHub Desktop
  • +
  • ๐Ÿ“š Libraries: PyTorch, Pandas, NumPy, scikit-learn, Matplotlib
  • +
+
+
+
+ +

๐Ÿ”ฌ Projects

+
+

๐Ÿง  SURF 2025

+ +

+ Trained and evaluated diffusion models to generate playable Mario levels and built a real-time multiplayer LLM Story Game using WebSockets. +

+ SURF Research Page +

+
+ +
+

๐ŸŽฎ Capstone: Senior Seminar in Software Engineering

+ + Research & Creative Works (RCW) poster + +

+ Designed and co-developed Evergrove, an educational game in Godot to teach data science to children. +

+ +
+ +
+

๐Ÿ—บ๏ธ GIS Portfolio

+ ArcGIS Pro logo +

+ Created maps in ArcGIS Pro highlighting geographic and demographic data. +

+ View GIS Portfolio +
+ +
+

๐Ÿ„ Mushroom Classification with KNN

+ + KNN Result: Confusion Matrix (edible or poisonous) + +

+ Built a K-Nearest Neighbors classifier to predict whether mushrooms are edible or poisonous using a classic public dataset. +

+ + View the Colab Notebook + +
+ +
+

๐Ÿผ DREU 2024 Research

+ + Research & Creative Works (RCW) poster + +

+ Built a SQL-to-Python data pipeline and applied network analysis to study student behavior in a Minecraft-based learning environment. +

+ DREU Research Page +
+ +

๐Ÿ“ฌ Contact

+
+ +
+ +
+ Back to top โ†‘ +
+
+

Built from scratch with HTML, CSS, and caffeine. โ˜•

+
+ + + + + + diff --git a/index.md b/index.md deleted file mode 100644 index 6e1cf4967..000000000 --- a/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: default -title: Summer 2020 DREU Project Site ---- - -* TOC -{:toc} - -## About Me - -My info goes here. - -## About My Mentor - -Mentor info goes here. - -## About My Project - -Project description goes here. - -[My Final Report](files/finalreport.pdf) - -## My Blog - -[My Blog](blog.html) diff --git a/style.css b/style.css new file mode 100644 index 000000000..8e6bc53b7 --- /dev/null +++ b/style.css @@ -0,0 +1,507 @@ +/* ======================================================== + ๐ŸŒ GLOBAL STYLES & VARIABLES + ======================================================== */ +:root { + --bg-light: #ebf4ff; + --text-main: #212121; + + --blue-dark: #1a237e; + --blue-mid: #3949ab; + --blue-accent: #3f51b5; + + --teal: #00796b; + --teal-dark: #004d40; + + --card-bg: #ffffff; + --card-border: #ddd; + --shadow: rgba(0, 0, 0, 0.04); +} + +html { + scroll-behavior: smooth; +} + +/* === Reset and basic layout setup === */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + max-width: 900px; + margin: 3rem auto; + padding: 0 2rem; + line-height: 1.7; + background-color: var(--bg-light); + color: var(--text-main); +} + +/* ======================================================== + ๐Ÿงฑ NAVIGATION BAR + ======================================================== */ +.navbar { + background-color: white; + border-bottom: 1px solid #ddd; + position: sticky; + top: 0; + z-index: 1000; + padding: 0.75rem 1rem; + box-shadow: 0 2px 6px var(--shadow); +} + +.navbar ul { + list-style: none; + display: flex; + justify-content: center; + gap: 2rem; + margin: 0; + padding: 0; +} + +.navbar li a { + text-decoration: none; + color: var(--blue-dark); + font-weight: 600; + font-size: 1rem; + transition: color 0.2s ease; +} + +.navbar li a:hover { + color: var(--teal); +} + +/* ======================================================== + ๐ŸŒž/๐ŸŒ™ DARK MODE TOGGLE (in nav bar) + ======================================================== */ +.dark-toggle-btn { + position: absolute; + top: 1rem; + right: 1rem; + background: none; + border: none; + font-size: 1.5rem; + cursor: pointer; + transition: transform 0.2s ease; +} + +.dark-toggle-btn:hover { + transform: scale(1.2); +} + +/* ======================================================== + ๐Ÿงฑ LAYOUT COMPONENTS + ======================================================== */ + +/* === Hero Banner === */ +.hero-banner { + background: linear-gradient(135deg, #e3f2fd, #bbdefb); + padding: 2rem 2rem 2rem; + text-align: center; + border-radius: 0px; + margin-top: 0; + margin-bottom: 3rem; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); +} + +.hero-content h1 { + font-size: 5rem; + margin-bottom: 0; + color: var(--blue-dark); +} + +.hero-content p { + font-size: 1.15rem; + color: var(--blue-accent); + margin-bottom: 1.5rem; +} + +/* === Project Images === */ +.project-img { + width: 100%; + max-width: 400px; + display: block; + margin: 0 auto 1rem auto; + border-radius: 8px; + box-shadow: 0 2px 6px var(--shadow); +} + +/* ======================================================== + ๐Ÿ“– ABOUT SECTION LAYOUT + ======================================================== */ + +.about-grid { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.about-top { + display: flex; + gap: 2.5rem; + align-items: flex-start; +} + +.about-left { + flex: 0 0 200px; /* fixed width for image column */ +} + +.about-right { + flex: 1; /* remaining space for text */ +} + +/* .about-left, .about-right { + border: 1px solid red; +} */ + +.profile-pic { + width: 100%; + max-width: 200px; + height: auto; + border-radius: 16px; + object-fit: cover; + box-shadow: 0 2px 6px var(--shadow); +} + +/* To align the profile image with the first line of text */ +.about-right > p:first-child { + margin-top: 0; +} + +.about-full-width { + margin-top: 0; + /* This will span the full width below the two-column section */ +} + +.about-list { + list-style: none; + padding-left: 0; + margin: 0; +} + +.about-list ul { + margin-top: 1rem; +} + +.about-list li { + margin-bottom: 0.75rem; + font-size: 1rem; + line-height: 1.5; +} + +/* ======================================================== + ๐Ÿ”  TYPOGRAPHY + ======================================================== */ + +h1 { + font-size: 2.2rem; + font-weight: 700; + color: var(--blue-dark); + margin-bottom: 0.75rem; +} + +h2 { + font-size: 1.6rem; + color: var(--blue-mid); + margin-top: 3rem; + margin-bottom: 1.25rem; + padding-bottom: 0.25rem; + border-bottom: 2px solid #e0e0e0; +} + +h3 { + font-size: 1.25rem; + margin-top: 1.5rem; + margin-bottom: 0.75rem; + color: var(--blue-accent); +} + +/* ======================================================== + ๐Ÿ”— LINKS & BUTTONS + ======================================================== */ + +a { + color: var(--teal); + font-weight: 500; + text-decoration: none; + transition: color 0.2s ease; +} + +a:hover { + color: var(--teal-dark); + text-decoration: underline; +} + +/* Button style */ +.button, +.button-link { + display: inline-block; + background-color: var(--teal); + color: white; + padding: 0.6rem 1.2rem; + border-radius: 6px; + font-size: 0.95rem; + font-weight: 600; + text-decoration: none; + transition: background-color 0.2s ease; +} + +.button:hover, +.button-link:hover { + background-color: var(--teal-dark); +} + +.button-outline { + display: inline-block; + border: 2px solid var(--teal); + color: var(--teal); + background-color: white; + padding: 0.4rem 1rem; + font-size: 0.9rem; + font-weight: 600; + border-radius: 6px; + text-decoration: none; + transition: all 0.2s ease; +} + +.button-outline:hover { + background-color: var(--teal); + color: white; +} + +/* Button group layout (left-aligned) */ +.button-row { + display: flex; + justify-content: left; + flex-wrap: wrap; + margin-top: 0; + gap: 1.8rem; +} + +/* Button group layout (centered) */ +.button-row-center { + display: flex; + justify-content: center; + flex-wrap: wrap; + margin-top: 0; + gap: 3.5rem; +} + +/* ======================================================== + ๐Ÿงฉ CONTENT COMPONENTS + ======================================================== */ + +/* === Site Header === */ +.site-header { + text-align: center; + margin-bottom: 3rem; +} + +.site-header h1 { + font-size: 2.4rem; + font-weight: 700; + color: var(--blue-dark); + margin-bottom: 0.5rem; +} + +.site-header p { + font-size: 1.05rem; + font-weight: 400; + color: var(--blue-accent); + margin-top: 0.25rem; +} + +/* === Cards (for About, Contact, Projects) === */ +.about, +.contact, +.project-card { + background-color: var(--card-bg); + border: 1px solid var(--card-border); + border-radius: 12px; + padding: 2rem; + margin: 0 0 2.5rem 0; + box-shadow: 0 2px 8px var(--shadow); +} + +.project-card { + border-radius: 10px; + padding: 1.75rem; + margin: 2rem 0; +} + +.project-card h3 { + margin-top: 0; +} + +.project-images { + display: flex; + justify-content: center; + gap: 1rem; /* space between images */ + flex-wrap: wrap; /* allow stacking on small screens */ +} + +.project-images .project-img { + width: 100%; + max-width: 300px; /* controls how big each image gets */ + margin: 0; /* remove the auto-centering */ +} + +.about p, +.contact p, +.project-card p { + margin: 0.75rem 0; +} + +/* === Lists inside About & Contact Cards === */ +.about ul, +.contact ul { + list-style: none; + padding-left: 0; + margin-top: 0.5rem; +} + +.about li, +.contact li { + margin: 0.5rem 0; + font-size: 1rem; + line-height: 1.5; +} + +.contact li a { + display: inline; + line-height: 1.6; +} + +.about ul li, +.contact ul li { + margin-bottom: 0.75em; +} + +/* === Default list style === */ +ul { + padding-left: 1.2rem; +} + +/* === Default section spacing === */ +section { + margin: 0; + padding: 0; +} + +/* ======================================================== + ๐Ÿ“ฑ RESPONSIVE STYLES + ======================================================== */ +@media (max-width: 800px) { + body { + padding: 0 1rem; + font-size: 0.95rem; + } + + h1 { + font-size: 1.8rem; + } + + h2 { + font-size: 1.4rem; + } + + .project-card, + .about, + .contact { + padding: 1.25rem; + } + + .site-header { + margin-bottom: 2rem; + } + + /* Stack image above text on small screens */ + .about-top { + flex-direction: column; + align-items: center; + text-align: left; + } + + .about-left { + flex: none; + width: 100%; + max-width: 200px; + margin: 0 auto 0.5rem; + } + + .about-right { + flex: none; + width: 100%; + } +} + +/* ======================================================== + ๐ŸŒ‘ DARK MODE OVERRIDES + ======================================================== */ +body.dark { + background-color: #121212; + color: #e0e0e0; +} + +body.dark .navbar { + background-color: #1e1e1e; + border-bottom: 1px solid #333; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.6); +} + +body.dark .navbar li a { + color: #90caf9; +} + +body.dark .navbar li a:hover { + color: #4db6ac; +} + +body.dark .hero-banner { + background: linear-gradient(135deg, #2c2c2c, #1a1a1a); +} + +body.dark .project-card, +body.dark .about, +body.dark .contact { + background-color: #1e1e1e; + border-color: #333; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); +} + +body.dark h1, +body.dark h2, +body.dark h3 { + color: #90caf9; +} + +body.dark a { + color: #80cbc4; +} + +body.dark a:hover { + color: #4db6ac; +} + +body.dark .button, +body.dark .button-link { + background-color: #00796b; +} + +body.dark .button:hover, +body.dark .button-link:hover { + background-color: #004d40; +} + +body.dark .button-outline { + background-color: transparent; + color: #80cbc4; + border-color: #80cbc4; +} + +body.dark .button-outline:hover { + background-color: #80cbc4; + color: #121212; +} + diff --git a/surf/Bess Hagan Reflection Essay.pdf b/surf/Bess Hagan Reflection Essay.pdf new file mode 100644 index 000000000..8118ef0f0 Binary files /dev/null and b/surf/Bess Hagan Reflection Essay.pdf differ diff --git a/surf/images/mario-1.png b/surf/images/mario-1.png new file mode 100644 index 000000000..e097fefdc Binary files /dev/null and b/surf/images/mario-1.png differ diff --git a/surf/images/mario-2.png b/surf/images/mario-2.png new file mode 100644 index 000000000..044583c95 Binary files /dev/null and b/surf/images/mario-2.png differ diff --git a/surf/images/mario-3.png b/surf/images/mario-3.png new file mode 100644 index 000000000..0535d36c0 Binary files /dev/null and b/surf/images/mario-3.png differ diff --git a/surf/images/sg-multiplayer.png b/surf/images/sg-multiplayer.png new file mode 100644 index 000000000..c178db8a8 Binary files /dev/null and b/surf/images/sg-multiplayer.png differ diff --git a/surf/images/sg-player1.png b/surf/images/sg-player1.png new file mode 100644 index 000000000..c86d63b3c Binary files /dev/null and b/surf/images/sg-player1.png differ diff --git a/surf/index.html b/surf/index.html new file mode 100644 index 000000000..3cac787e2 --- /dev/null +++ b/surf/index.html @@ -0,0 +1,77 @@ + + + + + + SURF Projects โ€“ Bess Hagan + + + +
+

SURF Projects

+

Undergraduate research exploring procedural content generation using diffusion models and large language models (LLMs).

+
+ +
+
+

Mario Diffusion

+ +

+ Trained diffusion models with UNet architecture for procedural content generation (PCG) in game level design, with optional text-based guidance. + Contributed to model infrastructure (early stopping, checkpoint resumption), improved mixed-initiative tools for level building, and developed + scripts to evaluate and visualize runtime and A* solvability metrics. +

+ +
+ +
+

LLM and Stable Diffusion Story Game

+ +

+ Built a real-time multiplayer storytelling game using Flask, JavaScript, and Socket.IO. Implemented UI logic, LLM output handling, + and a goal-based win condition where players steer the narrative toward secret, personalized endings evaluated by the LLM. +

+ +
+ +
+

SURF Reflection Essay

+

+ Final reflection on my time during SURF, including project descriptions, acquired skills, and personal takeaways. +

+ +
+
+ + + + + diff --git a/surf/surf-style.css b/surf/surf-style.css new file mode 100644 index 000000000..f3de03357 --- /dev/null +++ b/surf/surf-style.css @@ -0,0 +1,134 @@ +:root { + /* === Base Page Colors === */ + --bg-main: #f3e8fc; /* Main background โ€“ soft lavender with a bit more saturation */ + --text-main: #2e1a47; /* Primary text color โ€“ deep violet for good contrast on lavender */ + + /* === Hero Section Gradient === */ + --hero-gradient-start: #bc9be2; /* Left side of hero gradient โ€“ soft, balanced purple tone */ + --hero-gradient-end: #e8def8; /* Right side of hero gradient โ€“ pale lilac to blend with bg */ + --hero-text: #2e1a47; /* Hero text color โ€“ matches main text for visual harmony */ + + /* === Primary Accent Colors (Headings, Buttons, Highlights) === */ + --primary: #7b1fa2; /* Main accent โ€“ bold purple for h2s and major UI elements */ + --primary-light: #ab47bc; /* Light accent โ€“ used for links and interactive elements */ + --primary-dark: #4a0072; /* Dark accent โ€“ used for link hover and strong emphasis */ + + /* === Secondary Accents (Borders, Backgrounds, Footer) === */ + --accent-light: #dcc0ef; /* Footer and card backgrounds โ€“ warm and less gray than before */ + --accent-border: #d8bfe9; /* Border color โ€“ subtly contrasts with background and cards */ + + /* === Interactive Focus and Link States === */ + --link: var(--primary-light); /* Default link color */ + --link-hover: var(--primary-dark); /* Link hover color */ + --focus-outline: #ba68c8; /* Focus ring for accessibility โ€“ semi-saturated violet */ +} + +body { + font-family: system-ui, sans-serif; + margin: 0; + padding: 0; + background: var(--bg-main); + color: var(--text-main); +} + +.hero { + background: linear-gradient(135deg, var(--hero-gradient-start), var(--hero-gradient-end)); + color: var(--hero-text); + text-align: center; + padding: 3rem 1rem; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05); +} + +.hero h1 { + margin: 0; + font-size: 4.5rem; + line-height: 1.2; +} + +.hero h2 { + margin: 1rem 0 0; + font-size: 1.15rem; + font-weight: 400; /* Optional: softens the subheader */ + max-width: 750px; /* Optional: prevent overly long lines */ + margin-left: auto; + margin-right: auto; +} + +.projects { + padding: 2rem 1rem; + max-width: 900px; + margin: 0 auto; +} + +.project-card { + background: white; + border-radius: 12px; + padding: 1.5rem; + margin-bottom: 2rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); +} + +.project-card h2 { + margin-top: 0; + color: var(--primary); + border-bottom: 2px solid var(--accent-border); + padding-bottom: 0.25rem; + margin-bottom: 1rem; +} + +.project-card:hover { + transform: translateY(-2px); + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); + transition: transform 0.2s ease, box-shadow 0.2s ease; +} + +.project-images { + display: flex; + justify-content: center; + gap: 1rem; /* space between images */ + flex-wrap: wrap; /* allow stacking on small screens */ +} + +.project-images .project-img { + width: 100%; + max-width: 300px; /* controls how big each image gets */ + margin: 0; /* remove the auto-centering */ +} + +.links { + list-style: none; + padding-left: 0; + margin-top: 1rem; +} + +.links li { + display: flex; + align-items: center; + gap: 0.5rem; + margin: 0.5rem 0; +} + +.links a { + text-decoration: none; + color: var(--link); + font-weight: 500; + transition: color 0.2s ease; +} + +.links a:hover { + color: var(--link-hover); +} + +.links a:focus { + outline: 2px solid var(--focus-outline); + outline-offset: 2px; +} + +footer { + text-align: center; + padding: 2rem 1rem; + margin-top: 2rem; + background: var(--accent-light); + font-size: 1rem; + color: #555; +}