Summer 2024 All Workshops Survey Responses

Number of responses

Code
library(tidyverse)
library(bslib)
library(shiny)
library(bsicons)
source("scripts/helper_functions.R")

# list of workshop IDs to filter results
workshops <- c("2024-07-09-ucsb-python", "2024-07-02-ucsb-spreadsheets")

results <- read_csv("data-joined/all_workshops.csv") %>% 
  filter(workshop %in% workshops)
  
# Fix comma separator
results <- results %>% 
  mutate(findout_select.pre = str_replace_all(
  findout_select.pre, 
  "Twitter, Facebook, etc.", 
  "Twitter; Facebook; etc."))

pre_survey <- results %>%
  select(ends_with(".pre"))

post_survey <- results %>%
  select(ends_with(".post"))

n_pre <- sum(apply(post_survey, 1, function(row) all(is.na(row))))
n_post <- sum(apply(pre_survey, 1, function(row) all(is.na(row))))
n_total <- nrow(results)
n_both <- nrow(results) - n_pre - n_post

layout_columns(
  value_box(
    title = "Total responses", value = n_total, ,
    theme = NULL, showcase = bs_icon("people-fill"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  ),
  value_box(
    title = "Both pre- and post-", value = n_both, , theme = NULL,
    showcase = bs_icon("arrows-expand-vertical"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  ),
  value_box(
    title = "Only pre-workshop", value = n_pre, ,
    theme = NULL, showcase = bs_icon("arrow-left-short"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  ),
  value_box(
    title = "Only post-workshop", value = n_post, , theme = NULL,
    showcase = bs_icon("arrow-right-short"), showcase_layout = "left center",
    full_screen = FALSE, fill = TRUE, height = NULL
  )
)

Total responses

64

Both pre- and post-

23

Only pre-workshop

35

Only post-workshop

6

Departments

Code
depts <- results %>% select(dept_select.pre) %>% 
  separate_rows(dept_select.pre, sep=",") %>%
  mutate(dept_select.pre = str_trim(dept_select.pre)) %>%
  count(dept_select.pre, name = "count") %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(depts, aes(y=reorder(dept_select.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) +  
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(depts$count)*1.1))

“Other” Departments

Code
other_depts <- results %>% 
  count(dept_other.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(other_depts, aes(y=reorder(dept_other.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(other_depts$count)*1.1))

Current occupation / Career stage

Code
ocup <- results %>% select(occupation.pre) %>% 
  separate_rows(occupation.pre, sep=",") %>%
  mutate(occupation.pre = str_trim(occupation.pre)) %>%
  count(occupation.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(ocup, aes(y=reorder(occupation.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(ocup$count)*1.2))

Motivation - Why are you participating in this workshop?

Code
motiv <- results %>% select(motivation_select.pre) %>% 
  separate_rows(motivation_select.pre, sep=",")  %>% 
  mutate(motivation_select.pre = str_trim(motivation_select.pre)) %>%
  count(motivation_select.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(motiv, aes(y=reorder(motivation_select.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(motiv$count)*1.2))

How did you find out about this workshop?

Code
findw <- results %>% select(findout_select.pre) %>% 
  separate_rows(findout_select.pre, sep=",")  %>% 
  mutate(findout_select.pre = str_trim(findout_select.pre)) %>%
  count(findout_select.pre, name = "count") %>% 
  drop_na() %>% 
  mutate(percent = (count / (n_total - n_post)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(findw, aes(y=reorder(findout_select.pre, count), x=count)) +
    geom_col() +
    geom_label(aes(label = text, hjust = -0.1),
               size = 3) +
    labs(x = "# respondents", y = element_blank()) + 
    theme_minimal() +
    theme(
      panel.grid.minor = element_blank(),
      panel.grid.major.y = element_blank()
      ) +
    expand_limits(x = c(0,max(findw$count)*1.2))

What you most hope to learn?

Code
results %>% group_by(workshop) %>% 
  select(workshop, hopes.pre) %>% 
  drop_na()
workshop hopes.pre
2024-07-02-ucsb-spreadsheets I work with Bren’s MEDS program and don’t have a data science background. This sounds like a good intro workshop.
2024-07-02-ucsb-spreadsheets Not sure but open-minded on the exposure. Want to learn more.
2024-07-02-ucsb-spreadsheets Ways to collect, analyze and represent data beyond what I currently do via Google Forms, Excel/Google Sheets, and manually creating graphs and charts.
2024-07-02-ucsb-spreadsheets SQL
2024-07-02-ucsb-spreadsheets good practices for dealing with lots of data in spreadsheets
2024-07-02-ucsb-spreadsheets data management and analysis skills
2024-07-02-ucsb-spreadsheets How to organize data in ways that allow us to better understand our population’s needs to then communicate actions to administration.
2024-07-02-ucsb-spreadsheets gauge my skill level and learn new skills
2024-07-02-ucsb-spreadsheets Effective use of spreadsheet software
2024-07-02-ucsb-spreadsheets I want to be able to learn new skill to apply in my current job
2024-07-02-ucsb-spreadsheets How to better use excell
2024-07-02-ucsb-spreadsheets managing, searching and analysising data
2024-07-02-ucsb-spreadsheets Being able to gather, manage, represent, analyze data to make decisions,
2024-07-02-ucsb-spreadsheets how to best organize data and learn new skills;
2024-07-09-ucsb-python I’d like to get familiar with Python so that I can understand how to use it to do Retrieval-Augmented Generation with AI for some research that I’m doing.
2024-07-09-ucsb-python I hope to learn enough coding so that I can confidently apply it to my work and research. Key word: confidently apply. I don’t want to fear screwing up my work / not trusting my results because I don’t understand what the code is doing behind the scenes.
2024-07-09-ucsb-python I’d like to make the switch from primarily analyzing data in R to primarily analyzing data in python and other “industry standard” languages
2024-07-09-ucsb-python I would like to become familiar with computational skills and how to use Jupyter notebook.
2024-07-09-ucsb-python I hope to feel comfortable coding in the future
2024-07-09-ucsb-python A general understanding of the python language so I may manipulate some existing codes or scripts in our database’s API.
2024-07-09-ucsb-python The basics of how to code in python
2024-07-09-ucsb-python Python and a better understanding on the best preactices and methods to work with AI
2024-07-09-ucsb-python Getting started in python. I am worried about frying my computer for some reason.
2024-07-09-ucsb-python open
2024-07-09-ucsb-python Holistic framework for writing and interpreting Python code! I can write Python when I know exactly what I need to accomplish, but I could use a refresher for my overall comprehension and problem-solving
2024-07-09-ucsb-python How to generate diverse plots from the workshop
2024-07-09-ucsb-python Basics of data representation
2024-07-09-ucsb-python Some python basic
2024-07-09-ucsb-python More comfort using the python environment
2024-07-09-ucsb-python Financial Modeling
2024-07-09-ucsb-python basic skills in python
2024-07-09-ucsb-python Reinforce the basics and start using the tools more in my daily work
2024-07-09-ucsb-python basic understanding of the programming language
2024-07-09-ucsb-python I don’t work with data at all for my research, but many industry jobs are looking for candidates who can work with data.
2024-07-09-ucsb-python how to apply these tools to future research
2024-07-09-ucsb-python learn more about how python can be used in data analysis or to process data for analysis
2024-07-09-ucsb-python Skills used in bioinformatics

Learning environment in the workshop

Code
orderedq <- c("Strongly Disagree", "Somewhat Disagree", "Neither Agree or Disagree","Somewhat Agree", "Strongly Agree")
addNA(orderedq)
Code
agree_questions <- results %>% 
  select(join_key, agree_apply.post,    agree_comfortable.post, agree_clearanswers.post,
         agree_instr_enthusiasm.post, agree_instr_interaction.post, agree_instr_knowledge.post
) %>% 
  filter(!if_all(-join_key, is.na))

n_agree_questions <- nrow(agree_questions)
  
agree_questions <- agree_questions %>%
  pivot_longer(cols = -join_key, names_to = "Question", values_to = "Response") %>% 
  mutate(Response = factor(Response, levels = orderedq),
         Question = recode(Question,
                     "agree_apply.post" = "Can immediatly apply 
 what they learned",
                     "agree_comfortable.post" = "Comfortable learning in 
 the workshop environment",
                     "agree_clearanswers.post" = "Got clear answers 
 from instructors",
                     "agree_instr_enthusiasm.post" = "Instructors were enthusiastic",
                     "agree_instr_interaction.post" = "Comfortable interacting 
 with instructors",
                     "agree_instr_knowledge.post" = "Instructors were knowledgeable 
 about the material"
      ))

summary_data <- agree_questions %>%
  count(Question, Response, name = "count") %>% 
  mutate(percent = (count / n_agree_questions) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

ggplot(summary_data, aes(x = Question, y = count, fill = Response)) +
  geom_col(position = "fill", color = "black", show.legend = TRUE) +
  scale_y_continuous(labels = scales::percent_format()) + 
  scale_fill_manual(values = c("Strongly Disagree" = "#d01c8b", 
                               "Somewhat Disagree" = "#f1b6da", 
                               "Neither Agree or Disagree" = "#f7f7f7", 
                               "Somewhat Agree" = "#b8e186", 
                               "Strongly Agree" = "#4dac26"), 
                    na.translate = TRUE, na.value = "#cccccc", 
                    breaks = orderedq, drop = FALSE) +
  geom_text(aes(label = text), size = 3,
             position = position_fill(vjust = 0.5)) +
  labs(y = "# respondents (Percentage)", x = element_blank(), fill = "Responses",
       subtitle = paste0("Number of responses: ", n_agree_questions)) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1),
        plot.subtitle = element_text(hjust = 0.5, size = 12))

How an instructor or helper affected your learning experience

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, instructor_example.post) %>%
  drop_na()
workshop instructor_example.post
2024-07-02-ucsb-spreadsheets Thank you Renata and Jose, I learned a lot! My only trouble was that I was using LibreOffice and some of the instructions did not apply so I was a bit lost. I don’t usually use LibreOffice so it shouldn’t be an issue when I’m back at my desk.
2024-07-02-ucsb-spreadsheets example of what
2024-07-02-ucsb-spreadsheets It is asking “Please provide an example of”, but it doesn’t say of what. If you were asking for an example of what I learned, my answer would be “How to better use the quality control tools in Excel to ensure my data is entered consistently.”
2024-07-02-ucsb-spreadsheets VERY useful the system of Blue Cards and Red Cards, because it helped learn while getting stuck on parts of the workshop training. Thank you!
2024-07-09-ucsb-python They’re SUPER patient and friendly. I really appreciated that a lot.
2024-07-09-ucsb-python They were quick to help when needed and troubleshoot; nobody was left behind.
2024-07-09-ucsb-python They always answered my questions and answered them well! Additionally, they went above and beyond by showing me how to implement best practices and other coding tips for python outside of the lesson material.
2024-07-09-ucsb-python convenient method to request help without interrupting the workshop
2024-07-09-ucsb-python They answered all my questions in detail and helped me overcome the technical difficulties I encountered throughout the workshop with patience and nice attitude
2024-07-09-ucsb-python They answered all my questions in detail and helped me overcome the technical difficulties I encountered throughout the workshop with patience and nice attitude
2024-07-09-ucsb-python Maybe we are too many students a few helpers?

Skills and perception comparison

Code
# Calculate mean scores and make graph for all respondents (only_matched=FALSE)
tryCatch(
  {
mean_nresp <- get_mean_scores_nresp(results, only_matched=FALSE)
graph_pre_post(mean_nresp$mean_scores, mean_nresp$n_resp_pre, mean_nresp$n_resp_post, mean_nresp$n_resp_pre_post, only_matched=FALSE)
},
error = function(cond) {
message("Could not do the plots as there are no pre or post results to show")
}
)

Code
# Calculate mean scores and make graph for only matched respondents in pre and post (only_matched=TRUE)
tryCatch(
  {
mean_nresp <- get_mean_scores_nresp(results, only_matched=TRUE)
graph_pre_post(mean_nresp$mean_scores, mean_nresp$n_resp_pre, mean_nresp$n_resp_post, mean_nresp$n_resp_pre_post, only_matched=TRUE)
},
error = function(cond) {
message("Could not do the plots as there are no pre or post results to show")
}
)

Workshop Strengths

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, workshop_strengths.post) %>% 
  drop_na()
workshop workshop_strengths.post
2024-07-02-ucsb-spreadsheets relevant material
2024-07-02-ucsb-spreadsheets Straightforward, has clear documentation of everything covered in class, simple and effective examples
2024-07-02-ucsb-spreadsheets I think the instructors were very knowledgeable
2024-07-02-ucsb-spreadsheets examples of untidy and tidy sheets
2024-07-02-ucsb-spreadsheets Everything! Thank you!
2024-07-02-ucsb-spreadsheets I liked that you didn’t assume prior knowledge on the part of the participants. The sample data was easy to understand and work with. The pace was good, but I would have liked more tips. Perhaps an advanced spreadsheet workshop?
2024-07-02-ucsb-spreadsheets The instructors were very knowledgeable. Having additional instructors to help out if you got stuck while working on the exercises was really great! It was engaging the whole time.
2024-07-02-ucsb-spreadsheets Instructors very helpful, had a good flow, and were very clear.
2024-07-02-ucsb-spreadsheets Awesome job using the microphone and ensuring the font size of the content shown on the main screen was enlarged. They’re accessibility basics, but they’re often forgotten.
2024-07-02-ucsb-spreadsheets The instructors made a daunting area of knowledge very accessible and showing practical applications.
2024-07-02-ucsb-spreadsheets making sure everyone was understanding and on the same page as the instructor;
2024-07-02-ucsb-spreadsheets The instructors were ready to help at every moment
2024-07-02-ucsb-spreadsheets in-person, hands-on. VERY, very helpful in the learning of this material.
2024-07-02-ucsb-spreadsheets pre workshop information helped everyone starting the workshop
2024-07-02-ucsb-spreadsheets I liked the exercises and the ability to ask questions in class at any time.
2024-07-09-ucsb-python The people were patient and weren’t condescending. They respected the questions that were asked
2024-07-09-ucsb-python Good accessibility / free workshop
2024-07-09-ucsb-python I liked being challenged to learn on my own at some points
2024-07-09-ucsb-python Multiple instructors; this allowed “floaters” to help those struggling rather than the whole class getting caught up.
2024-07-09-ucsb-python Great workshop for beginners. Instructors were very helpful and attentive when students needed help. I took this course because I wanted to learn how to do a specific task in python that was outside of the scope of this class, but the instructors provided a good foundation for me to start the project on my own.
2024-07-09-ucsb-python I think the tutorials were a major strength of the workshop
2024-07-09-ucsb-python screens on every desk so everyone can follow along
2024-07-09-ucsb-python It is general, so people of any discipline can participate and learn.; It starts with the basics and builds up.
2024-07-09-ucsb-python It is general, so people of any discipline can participate and learn.; It starts with the basics and builds up.
2024-07-09-ucsb-python Frequency and access

Ways to improve the workshop

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, workshop_improved.post) %>% 
  drop_na()
workshop workshop_improved.post
2024-07-02-ucsb-spreadsheets shorter, maybe?
2024-07-02-ucsb-spreadsheets more of the 2nd half (walking through commands & showing working in excel)
2024-07-02-ucsb-spreadsheets Maybe provide samples with students/staff to feel more related to us.
2024-07-02-ucsb-spreadsheets I would like a follow-up workshop that gives advanced tips for spreadsheets.
2024-07-02-ucsb-spreadsheets Very much looking forward to attending the following workshops on data and python. I feel like I didn’t exit the workshop with many hard skills, but rather a general improvement in background knowledge about data in spreadsheets (which is helpful, don’t get me wrong!) and that the coding workshops will help me to transition that new knowledge into practice.
2024-07-02-ucsb-spreadsheets clearly stating keyboard shortcuts they are using for people who dont know them
2024-07-02-ucsb-spreadsheets Preparing registrants to bring a laptop
2024-07-02-ucsb-spreadsheets Continue with the length of time. Please don’t shorten it.
2024-07-02-ucsb-spreadsheets not sure
2024-07-02-ucsb-spreadsheets I have an idea to bring this to the AMP group. brenda McGowen and I will be in touch about how to make this better suited for staff administrators.
2024-07-09-ucsb-python This class should’ve been called “Python for Amateurs” …not beginners. There were a few times where the instructors broke down the code, explaining what each piece did and that was AWESOME! I wish the whole class would’ve been like that. But most of the time, it was like just watching somebody code. I had no idea why they were typing the things they were typing. I felt like a monkey, just typing whatever the instructors typed with 0% understanding of why I was typing it.
2024-07-09-ucsb-python I wish there had been a little more challenges in class. Or, it might be a good idea to assign a challenge as homework.
2024-07-09-ucsb-python It was unclear where to find the reading materials and learning module and that we are expected to keep up with those materials. There was no following along between the in-class learning and what was in the reading materials on the site because it was never referenced (we’re now on page ‘blah’).
2024-07-09-ucsb-python At times it was difficult to follow and I wasn’t always sure how I could apply what I learned to my work after the workshop. Or why we were learning the particular things we were working on in the course. ; ; ; Since this course is a “data analysis and visualization” class I think it would be best to have the workshop follow a small project. Get some datasets where the population is people instead of animals. And, work together to answer a very simple but specific research question throughout the course and generate some graphs at the end.
2024-07-09-ucsb-python I think less time reviewing the previous weeks material would improve the workshop
2024-07-09-ucsb-python slower at some points
2024-07-09-ucsb-python We lost time in all sessions because people were lost on where they had organized their files, so maybe thinking of a more general and accessible way to managing folders and files can be useful
2024-07-09-ucsb-python We lost time in all sessions because people were lost on where they had organized their files, so maybe thinking of a more general and accessible way to managing folders and files can be useful
2024-07-09-ucsb-python Maybe applied into a single project so there’s one thread of logic (instead of broken up into chunks). But thats how I feel, may not be possible.

How likely are you to recommend this workshop? Scale 0 - 10

Code
orderedq <- c("Detractor", "Passive", "Promoter")

nps <- results %>% 
  count(recommend_group.post, recommende_score.post, name = "count") %>% 
  drop_na() %>% 
  mutate(recommend_group.post = factor(recommend_group.post, levels = orderedq),
         percent = (count/sum(count)) * 100,
         text = sprintf("%.0f (%.0f%%)", count, percent))

nps %>% 
ggplot(aes(x=recommende_score.post, y=count, fill=recommend_group.post)) +
  geom_col(color="black", show.legend = TRUE) +
  scale_fill_manual(values = c("Detractor" = "#af8dc3", "Passive" = "#f7f7f7", "Promoter" = "#7fbf7b"), breaks = c("Detractor", "Passive", "Promoter"), drop = FALSE) +
  geom_label(aes(label = text, vjust = -0.5), fill = "white", size= 3) +
  scale_x_continuous(breaks = 1:10) +
  labs(x = "NPS Score", y = "# respondents", subtitle = paste0("Number of responses: ", sum(nps$count), "
 Mean score: ", format(weighted.mean(nps$recommende_score.post, nps$count), digits = 3))) +
  theme_minimal() +
  theme(
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    plot.subtitle = element_text(hjust = 0.5, size = 12)
  ) +
  expand_limits(x = c(1,10),
                y = c(0, max(nps$count)*1.1))

Topic Suggestions

Code
results %>% 
  group_by(workshop) %>% 
  select(workshop, suggest_topics.post) %>% 
  drop_na()
workshop suggest_topics.post
2024-07-02-ucsb-spreadsheets Best ways to share data.
2024-07-02-ucsb-spreadsheets data transition across apps/languages (going from excel table to .csv then loading into R/MATLAB/Python)
2024-07-02-ucsb-spreadsheets Transfer data from Excel to word document.
2024-07-02-ucsb-spreadsheets Not sure
2024-07-02-ucsb-spreadsheets Learning more how to use pivot tables and create charts/graphs with data.
2024-07-02-ucsb-spreadsheets 1) Workshops aimed at support staff on campus, such as payroll staff or admin assistance. 2) Data organization and tools in Google Sheets.
2024-07-02-ucsb-spreadsheets Power using Excel
2024-07-02-ucsb-spreadsheets more advanced data storage
2024-07-02-ucsb-spreadsheets Using AI tools we currently have access to. I’d love a class on prompting. Or a class that helps AI work better for us.
2024-07-09-ucsb-python Computational works with genomics
2024-07-09-ucsb-python Data Analysis for social scientists in python. I think it would be cool to use the Current Population Survey from IPUMS.
2024-07-09-ucsb-python A workshop covering R would be nice
2024-07-09-ucsb-python R studio
2024-07-09-ucsb-python Big data wrangling and using python to process by chuncks or in multiple servers
2024-07-09-ucsb-python Big data wrangling and using python to process by chuncks or in multiple servers
2024-07-09-ucsb-python Build applications