El Taller de Matemáticas está diseñado para capacitar a estudiantes de la Facultad de Ingeniería de la Universidad de San Carlos de Guatemala (USAC) en el uso de herramientas tecnológicas GeoGebra y Python. Este taller se enfoca en la aplicación práctica de conceptos matemáticos fundamentales, orientados a resolver problemas específicos de ingeniería. La metodología combina recursos audiovisuales, ejercicios prácticos y plataformas de aprendizaje en línea para maximizar la experiencia educativa y fomentar el aprendizaje autónomo.
Los estudiantes acceden a vídeos explicativos en un canal YouTube y resuelven ejercicios prácticos de pre-cálculo, cálculo, geometría plana y geometría analítica.
Al completar el taller, el estudiante será capaz de:
En el taller se desarrollan las siguientes evaluaciones:
| Evaluación | Descripción | Escala |
|---|---|---|
| Actividad 1 | Primer cuestionario de resolución de problemas matemáticos | 0–100 |
| Actividad 2 | Segundo cuestionario de aplicación en ingeniería | 0–100 |
| Proyecto | Proyecto integrador usando GeoGebra o Python | 0–100 |
| Nota Final | Nota global del taller (escala 0–100) | 0–100 |
---
title: "Taller MB 1S 2026"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
theme:
version: 5
bg: "#F4F6F8"
fg: "#2E3A59"
primary: "#1565C0"
secondary: "#90CAF9"
accent: "#388E3C"
base_font:
google: "Roboto"
heading_font:
google: "Lato"
code_font:
google: "Fira Code"
social: menu
source_code: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
library(ggplot2)
library(tidyverse)
library(plotly)
library(DT)
library(fontawesome)
library(dplyr)
library(readxl)
# ── Lectura ────────────────────────────────────────────────────────────────────
notas_raw <- read_excel("Taller_Matematica_Basica _1s_2026.xlsx") %>%
rename(
ID = `Número de ID`,
Usuario = `Usuario`,
Nombre = `Nombre`,
Apellidos = `Apellido(s)`,
Act1 = `Actividad1`,
Act2 = `Actividad2`,
Proyecto = `Proyecto`,
Nota_final = `Nota final`,
Curso = `Curso`,
Seccion = `Seccion`
)
# ── Limpieza y filtros ─────────────────────────────────────────────────────────
# Los "-" del Excel quedan como NA al convertir a numérico con as.numeric()
# Rango válido actividades/proyecto: 0–100
# Nota final en escala 0–10 → ×10 para llevar a 0–100
notas <- notas_raw %>%
mutate(
Act1 = as.numeric(Act1),
Act2 = as.numeric(Act2),
Proyecto = as.numeric(Proyecto),
Nota_final = as.numeric(Nota_final)
) %>%
mutate(
Act1 = ifelse(Act1 >= 0 & Act1 <= 100, Act1, NA_real_),
Act2 = ifelse(Act2 >= 0 & Act2 <= 100, Act2, NA_real_),
Proyecto = ifelse(Proyecto >= 0 & Proyecto <= 100, Proyecto, NA_real_),
Nota_final = ifelse(Nota_final >= 0 & Nota_final <= 10, Nota_final * 10, NA_real_)
)
```
# <i class="fa fa-chart-line"></i> Resumen General
##
### Estudiantes MB1
```{r}
valueBox(
value = notas %>% filter(Curso == "MB1") %>% nrow(),
caption = "Total de estudiantes MB1",
icon = "fa-user",
color = "yellow"
)
```
### Estudiantes MB2
```{r}
valueBox(
value = notas %>% filter(Curso == "MB2") %>% nrow(),
caption = "Total de estudiantes MB2",
icon = "fa-user",
color = "primary"
)
```
### Nota Final Promedio
```{r}
valueBox(
value = round(mean(notas$Nota_final, na.rm = TRUE), 1),
caption = "Nota promedio (escala 0–100)",
icon = "fa-traffic-light",
color = "warning"
)
```
### Estudiantes con nota cero
```{r}
valor_cero <- sum(notas$Nota_final == 0, na.rm = TRUE)
n <- nrow(notas)
valueBox(
value = paste0(round(valor_cero / n * 100), "%"),
caption = "Estudiantes con nota cero",
icon = "fa-traffic-light",
color = "danger"
)
```
##
###
```{r}
notas %>%
group_by(Curso, Seccion) %>%
summarise(
N = n(),
Promedio = round(mean(Nota_final, na.rm = TRUE), 1),
DE = round(sd(Nota_final, na.rm = TRUE), 1),
.groups = "drop"
) %>%
datatable(
colnames = c("Curso", "Sección", "N", "Promedio (0–100)", "Desv. Estándar"),
options = list(pageLength = 10, dom = "ft")
)
```
###
```{r}
g1 <- notas %>%
filter(!is.na(Nota_final), Nota_final > 0) %>%
ggplot(aes(x = Nota_final, y = after_stat(density), fill = Curso)) +
geom_histogram(position = "dodge", bins = 15, alpha = 0.8) +
labs(
title = "Distribución de la Nota Final",
subtitle = "Primer Semestre 2026",
x = "Nota Final (0–100)", y = "Densidad"
)
ggplotly(g1)
```
###
```{r}
g2 <- notas %>%
filter(!is.na(Nota_final)) %>%
ggplot(aes(x = Curso, y = Nota_final, fill = Curso)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Nota Final – Taller de Matemática",
subtitle = "Primer Semestre 2026",
x = "Curso", y = "Nota Final (0–100)"
)
ggplotly(g2)
```
# <i class="fa fa-pencil-alt"></i> Actividad 1
##
### Estudiantes MB1
```{r}
valueBox(
value = notas %>% filter(Curso == "MB1", !is.na(Act1), Act1 != 0) %>% nrow(),
caption = "Estudiantes MB1 con nota > 0",
icon = "fa-user",
color = "yellow"
)
```
### Estudiantes MB2
```{r}
valueBox(
value = notas %>% filter(Curso == "MB2", !is.na(Act1), Act1 != 0) %>% nrow(),
caption = "Estudiantes MB2 con nota > 0",
icon = "fa-user",
color = "primary"
)
```
### Nota Promedio
```{r}
valueBox(
value = round(mean(notas$Act1, na.rm = TRUE), 1),
caption = "Nota promedio Actividad 1",
icon = "fa-traffic-light",
color = "warning"
)
```
### Estudiantes con nota cero
```{r}
valor_cero <- sum(notas$Act1 == 0, na.rm = TRUE)
n <- nrow(notas)
valueBox(
value = paste0(round(valor_cero / n * 100), "%"),
caption = "Estudiantes con nota cero",
icon = "fa-traffic-light",
color = "danger"
)
```
##
###
```{r}
notas %>%
group_by(Curso, Seccion) %>%
summarise(
N = n(),
Promedio = round(mean(Act1, na.rm = TRUE), 1),
DE = round(sd(Act1, na.rm = TRUE), 1),
.groups = "drop"
) %>%
datatable(
colnames = c("Curso", "Sección", "N", "Promedio", "Desv. Estándar"),
options = list(pageLength = 10, dom = "ft")
)
```
###
```{r}
g1 <- notas %>%
filter(!is.na(Act1)) %>%
ggplot(aes(x = Act1, y = after_stat(density), fill = Curso)) +
geom_histogram(position = "dodge", bins = 15, alpha = 0.8) +
labs(
title = "Distribución – Actividad 1",
subtitle = "Primer Semestre 2026",
x = "Nota (0–100)", y = "Densidad"
)
ggplotly(g1)
```
###
```{r}
g2 <- notas %>%
filter(!is.na(Act1)) %>%
ggplot(aes(x = Curso, y = Act1, fill = Curso)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Actividad 1 – Taller de Matemática",
subtitle = "Primer Semestre 2026",
x = "Curso", y = "Nota (0–100)"
)
ggplotly(g2)
```
# <i class="fa fa-edit"></i> Actividad 2
##
### Estudiantes MB1
```{r}
valueBox(
value = notas %>% filter(Curso == "MB1", !is.na(Act2), Act2 != 0) %>% nrow(),
caption = "Estudiantes MB1 con nota > 0",
icon = "fa-user",
color = "yellow"
)
```
### Estudiantes MB2
```{r}
valueBox(
value = notas %>% filter(Curso == "MB2", !is.na(Act2), Act2 != 0) %>% nrow(),
caption = "Estudiantes MB2 con nota > 0",
icon = "fa-user",
color = "primary"
)
```
### Nota Promedio
```{r}
valueBox(
value = round(mean(notas$Act2, na.rm = TRUE), 1),
caption = "Nota promedio Actividad 2",
icon = "fa-traffic-light",
color = "warning"
)
```
### Estudiantes con nota cero
```{r}
valor_cero <- sum(notas$Act2 == 0, na.rm = TRUE)
n <- nrow(notas)
valueBox(
value = paste0(round(valor_cero / n * 100), "%"),
caption = "Estudiantes con nota cero",
icon = "fa-traffic-light",
color = "danger"
)
```
##
###
```{r}
notas %>%
group_by(Curso, Seccion) %>%
summarise(
N = n(),
Promedio = round(mean(Act2, na.rm = TRUE), 1),
DE = round(sd(Act2, na.rm = TRUE), 1),
.groups = "drop"
) %>%
datatable(
colnames = c("Curso", "Sección", "N", "Promedio", "Desv. Estándar"),
options = list(pageLength = 10, dom = "ft")
)
```
###
```{r}
g1 <- notas %>%
filter(!is.na(Act2)) %>%
ggplot(aes(x = Act2, y = after_stat(density), fill = Curso)) +
geom_histogram(position = "dodge", bins = 15, alpha = 0.8) +
labs(
title = "Distribución – Actividad 2",
subtitle = "Primer Semestre 2026",
x = "Nota (0–100)", y = "Densidad"
)
ggplotly(g1)
```
###
```{r}
g2 <- notas %>%
filter(!is.na(Act2)) %>%
ggplot(aes(x = Curso, y = Act2, fill = Curso)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Actividad 2 – Taller de Matemática",
subtitle = "Primer Semestre 2026",
x = "Curso", y = "Nota (0–100)"
)
ggplotly(g2)
```
# <i class="fa fa-tasks"></i> Proyecto
##
### Estudiantes MB1
```{r}
valueBox(
value = notas %>% filter(Curso == "MB1", !is.na(Proyecto), Proyecto != 0) %>% nrow(),
caption = "Estudiantes MB1 con nota > 0",
icon = "fa-user",
color = "yellow"
)
```
### Estudiantes MB2
```{r}
valueBox(
value = notas %>% filter(Curso == "MB2", !is.na(Proyecto), Proyecto != 0) %>% nrow(),
caption = "Estudiantes MB2 con nota > 0",
icon = "fa-user",
color = "primary"
)
```
### Nota Promedio
```{r}
valueBox(
value = round(mean(notas$Proyecto, na.rm = TRUE), 1),
caption = "Nota promedio Proyecto",
icon = "fa-traffic-light",
color = "warning"
)
```
### Estudiantes con nota cero
```{r}
valor_cero <- sum(notas$Proyecto == 0, na.rm = TRUE)
n <- nrow(notas)
valueBox(
value = paste0(round(valor_cero / n * 100), "%"),
caption = "Estudiantes con nota cero",
icon = "fa-traffic-light",
color = "danger"
)
```
##
###
```{r}
notas %>%
group_by(Curso, Seccion) %>%
summarise(
N = n(),
Promedio = round(mean(Proyecto, na.rm = TRUE), 1),
DE = round(sd(Proyecto, na.rm = TRUE), 1),
.groups = "drop"
) %>%
datatable(
colnames = c("Curso", "Sección", "N", "Promedio", "Desv. Estándar"),
options = list(pageLength = 10, dom = "ft")
)
```
###
```{r}
g1 <- notas %>%
filter(!is.na(Proyecto)) %>%
ggplot(aes(x = Proyecto, y = after_stat(density), fill = Curso)) +
geom_histogram(position = "dodge", bins = 15, alpha = 0.8) +
labs(
title = "Distribución – Proyecto",
subtitle = "Primer Semestre 2026",
x = "Nota (0–100)", y = "Densidad"
)
ggplotly(g1)
```
###
```{r}
g2 <- notas %>%
filter(!is.na(Proyecto)) %>%
ggplot(aes(x = Curso, y = Proyecto, fill = Curso)) +
geom_boxplot(alpha = 0.8) +
labs(
title = "Proyecto – Taller de Matemática",
subtitle = "Primer Semestre 2026",
x = "Curso", y = "Nota (0–100)"
)
ggplotly(g2)
```
# <i class="fa fa-table"></i> Cuadro de Notas
##
```{r}
notas %>%
select(Nombre, Apellidos, Curso, Seccion, Act1, Act2, Proyecto, Nota_final) %>%
rename(
`Actividad 1` = Act1,
`Actividad 2` = Act2,
`Nota Final` = Nota_final,
`Sección` = Seccion
) %>%
datatable(
extensions = "Buttons",
options = list(
dom = "Bfrtip",
buttons = c("copy", "csv", "excel", "pdf", "print"),
pageLength = 20
)
)
```
# <i class="fa fa-info-circle"></i> Descripción
##
### DESCRIPCIÓN {.well}
El Taller de Matemáticas está diseñado para capacitar a estudiantes de la Facultad de Ingeniería de la Universidad de San Carlos de Guatemala (USAC) en el uso de herramientas tecnológicas **GeoGebra** y **Python**. Este taller se enfoca en la aplicación práctica de conceptos matemáticos fundamentales, orientados a resolver problemas específicos de ingeniería. La metodología combina recursos audiovisuales, ejercicios prácticos y plataformas de aprendizaje en línea para maximizar la experiencia educativa y fomentar el aprendizaje autónomo.
Los estudiantes acceden a vídeos explicativos en un [canal YouTube](https://www.youtube.com/@TallerdeMatematicaBasica-ij8ok) y resuelven ejercicios prácticos de pre-cálculo, cálculo, geometría plana y geometría analítica.
### OBJETIVOS {.well}
- Desarrollar competencias tecnológicas.
- Introducir el uso de software como GeoGebra y Python para modelar y resolver problemas matemáticos.
- Aplicar conceptos de precálculo, cálculo y geometría en situaciones prácticas relacionadas con la ingeniería.
- Demostrar cómo los conceptos matemáticos se utilizan para resolver problemas reales en diversos campos de la ingeniería.
- Desarrollar estrategias para abordar y resolver problemas matemáticos complejos utilizando herramientas tecnológicas.
##
### COMPETENCIAS {.well}
Al completar el taller, el estudiante será capaz de:
- **Utilizar herramientas tecnológicas:** manejar GeoGebra para modelar y visualizar problemas matemáticos, y escribir scripts en Python para resolverlos.
- Resolver problemas prácticos en precálculo, cálculo diferencial e integral, geometría plana y analítica utilizando métodos computacionales.
- Analizar e interpretar gráficas, ecuaciones y resultados obtenidos con software matemático.
- Presentar soluciones de manera clara y estructurada.
- Aplicar conceptos teóricos en situaciones reales de ingeniería.
### ACTIVIDADES {.well}
En el taller se desarrollan las siguientes evaluaciones:
| Evaluación | Descripción | Escala |
|--------------|------------------------------------------------------------------|--------|
| Actividad 1 | Primer cuestionario de resolución de problemas matemáticos | 0–100 |
| Actividad 2 | Segundo cuestionario de aplicación en ingeniería | 0–100 |
| Proyecto | Proyecto integrador usando GeoGebra o Python | 0–100 |
| Nota Final | Nota global del taller (escala 0–100) | 0–100 |