Textbook

Computer Science I

Libro de texto abierto de CS1 que enseña conceptos antes que sintaxis, recapitulados en C, Java y PHP.

Resumen General

CampoValor
AutorDr. Chris Bourke (cbourke@cse.unl.edu)
InstituciónDepto. de Ciencias de la Computación e Ingeniería, Universidad de Nebraska–Lincoln
Versión1.3.6 (2018-08-09)
LicenciaCreative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Extensión647 páginas
EstadoBorrador — algunos capítulos finales son marcadores de posición

Pedagogía

Tesis central: los conceptos perduran más que el código. El libro separa los conceptos de la sintaxis del lenguaje de programación para combatir la obsolescencia inherente de los textos introductorios específicos de un lenguaje.

  • El núcleo (Cap. 1–14) usa pseudocódigo con elementos mínimos específicos de un lenguaje.
  • Cada parte de lenguaje recapitula los mismos conceptos en sintaxis concreta.
  • Diseño “plug-in”: agregar un lenguaje = agregar una parte. El mismo libro sirve para múltiples variantes de curso (estudiantes de CS → Java, estudiantes de CE → C, etc.).

Origen: iniciativa “Renaissance in Computing” de UNL + un CS1 con Honores dictado en Java y C en paralelo.

Estructura

ParteCapítulosPáginas
Conceptos centrales (pseudocódigo)1–141–249
I. El Lenguaje de Programación C15–25251–380
II. El Lenguaje de Programación Java26–36381–494
III. El Lenguaje de Programación PHP37–47495–586
Glosario / Acrónimos / Índice / Referencias587–647

Ver conceptos centrales y las partes de lenguajes: C, Java, PHP.

Columna de Ejemplos Recurrentes

Los mismos problemas reaparecen en el núcleo y en cada parte de lenguaje, de modo que los estudiantes ven un problema expresado en múltiples sintaxis:

  • Conversión de temperatura / unidades
  • Raíces cuadráticas
  • Life & Taxes (condicionales)
  • Paying the Piper (bucles)
  • Generalized Rounding (funciones)

Vacíos Conocidos (borrador)

  • Cap. 13 Interfaces Gráficas de Usuario y Programación Dirigida por Eventos — marcador de posición (solo el título).
  • Cap. 14 Introducción a Bases de Datos y Conectividad de Bases de Datos — marcador de posición (solo el título).
  • Desactualizado (2018, era de Java 8). Sin características modernas del lenguaje.
  • La cobertura de recursión es superficial (solo recursión de cola + memoización).

Citas

[1] Computer Science I, Chris Bourke, v1.3.6, páginas preliminares y tabla de contenidos (pp. i–xxii).