Resumen General

Estudiantes MB1

1359

Estudiantes MB2

571

Nota Final Promedio

49.4

Estudiantes con nota cero

7%

Actividad 1

Estudiantes MB1

1088

Estudiantes MB2

441

Nota Promedio

73.8

Estudiantes con nota cero

2%

Actividad 2

Estudiantes MB1

1006

Estudiantes MB2

331

Nota Promedio

67.7

Estudiantes con nota cero

3%

Proyecto

Estudiantes MB1

591

Estudiantes MB2

174

Nota Promedio

62.1

Estudiantes con nota cero

14%

Cuadro de Notas

Descripción

DESCRIPCIÓN

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.

OBJETIVOS

  • 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

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

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  |