¿Cuál es el lenguaje de programación principal que se enseña en los cursos introductorios de CS en cada universidad con un departamento de CS sólido? ¿Cuánta diversidad hay entre las escuelas?

Universidad de Waterloo – Esquema / Lisp

Todos los cursos introductorios de informática se imparten en Scheme, un dialecto de Lisp. Tenga en cuenta que la Facultad de Ciencias de la Computación es parte de la Facultad de Matemáticas de UWaterloo, de ahí el énfasis en una introducción matemática a CS. Su razonamiento se explica aquí con más detalle:

Los lenguajes orientados a objetos como Java y C ++ están diseñados para uso industrial y son complejos. Usarlos para una introducción a la informática es como llevar a los estudiantes que estudian para ser pilotos comerciales y ponerlos en la cabina de un Boeing 747 en su primer día. Sería mejor usar un pequeño avión de entrenamiento de dos plazas, o incluso un simulador de vuelo, y eso es lo que realmente se hace para tales estudiantes. El equivalente en informática es un lenguaje de enseñanza, uno que generalmente no se usa comercialmente, pero que prepara el camino para el uso de un lenguaje más complejo.

Yo personalmente tomé CS135 en Scheme y descubrí que el curso fue enseñado de manera que pude relacionarlo fácilmente con los conceptos enseñados en mis cursos de Matemáticas. Creo que fue mucho más útil que Java a largo plazo y fue vital para enseñarme una forma diferente de pensar sobre la programación. Finalmente implementé un compilador y ensamblador en Scheme para un curso posterior.

Cursos
CS 135 – Introducción estándar al curso de CS para todos los CS Majors
CS 115 – Curso introductorio de CS para no mayores
CS 145 – Curso avanzado de matemáticas y especialidades de CS

Refs
Informática en Waterloo: el nuevo esquema de las cosas

Berkeley tiene una secuencia de introducción de tres cursos (llamados 61a, 61b y 61c por, umm, razones históricas). 61a usa Python (o Scheme para la versión de ritmo propio llamada 61as), 61b usa Java y 61c usa MIPS y C.

Solíamos hacer que todos hicieran Scheme para el curso de introducción, pero desafortunadamente fue reemplazado por Python hace unos años. El curso Scheme SICP sigue vivo como una versión a su propio ritmo que puede tomar como alternativa al clásico curso basado en conferencias, pero no sé cuánto durará: /.

Es una verdadera lástima porque el curso Scheme fue la única programación vagamente funcional que teníamos hasta llegar a los cursos de posgrado.

Stanford utiliza Java para CS106A, C ++ para CS106B, C con un guión de ensamblaje x86 para CS107 y C / C ++ (incluidas las características de C ++ 11, especialmente sus nuevas características de concurrencia nativas) para CS110.

El Curso de Introducción a la Programación de Yale (CPSC 112) se imparte en Java, y su Curso de Introducción a la Informática (CPSC 201) se imparte en Racket (anteriormente denominado Esquema PLT).

Más sobre Racket / Scheme: Racket (lenguaje de programación)

Resumen:

Yale: Java y Racket (anteriormente denominado PLT Scheme)
MIT: Python
UIUC: Java
CMU: Python
Stanford: Java
Harvard: C
UC Berkeley: Python, Scheme, Java

Parece que muchas universidades enseñan en Java, Python y Scheme.

Princeton usa Java en nuestro CS1 (COS 126), con bibliotecas para E / S, gráficos, sonido, estructuras de datos y otras cosas útiles de Computer Science: un enfoque interdisciplinario (escrito por Princeton’s Sedgewick y Wayne).

También usamos Java en nuestros algoritmos y estructuras de datos CS2. Utilizamos el ensamblaje C y x86 en nuestros sistemas CS2.

En las clases de nivel superior, los idiomas varían (por ejemplo, OCaml para programación funcional, JavaScript o C ++ para gráficos dependiendo de quién lo esté enseñando, C ++ o MatLab para visión por computadora, y una panoplia de diferentes idiomas en COS 333 – Curso práctico de ingeniería de software de Brian Kernighan) .

En UW, para las personas que cursan una especialización en CS, los cursos introductorios son CS135 (esquema) y CS136 (Esquema + C), y luego tomarán CS246 (C ++).
Para los estudiantes de la facultad de matemáticas pero que no desean obtener un título de CS, pueden elegir CS115 (Scheme) y CS116 (Scheme + Python).

CMU 15-112 usa Python. Aunque puedes colocarlo fuera de él.

Si lo hace, comienza con 15-122 que se enseña en un lenguaje interno llamado C0, un subconjunto seguro de C.

UT Austin:
-CS 312 (Introducción a la informática) utiliza Java

-CS 314 (estructuras de datos) usa java y / o lisp

-CS 429 (Comp arch) C y / o Asamblea

-CS 439 (OS) C

Mi universidad se concentró en C ++, probablemente debido a … bueno, es un lenguaje bastante bueno para entender el concepto más amplio de programación orientada a objetos (OOP) de una manera muy … tediosa y menos intuitiva que algunos de los otros lenguajes OOP, jaja … yo Supongo que descubrieron que si descubres C ++, puedes manejar el resto bien.

Pero en general, tendría que imaginar que uno de los lenguajes OOP sería clave, si no el primero, luego el segundo, considerando que esa es la forma en que se dirigió / se dirige la programación. Sin embargo, pueden comenzar con un lenguaje de secuencias de comandos más fácil … Me imagino, para enseñar los conceptos fundamentales básicos como la sintaxis del lenguaje y el uso de variables, etc. Sin embargo, al final, probablemente aprenderá Java o C ++ como primero, quizás segundo idioma, a pesar de lo que todas estas otras personas han dicho. LOL JK.

Universidad Dual de Baden-Würrtemberg – Stuttgart, Alemania:
Estructura de datos en C (y el pseudocódigo era python)
Lógica en Scheme / Lisp
Desarrollo web en PHP
Programación orientada a objetos con Java

UW tiene cursos de introducción en Python (140), MATLAB (AMATH 301) y Java (142/143 / 143X).

Los cursos de introducción de Stanford son Java (106a) y C ++ (106b / 106x)

Stanford- Java
Mit-python
Esquema de Berkeley
Caltech- pitón
UW- Java y C ++

MIT’s 6.00 / 6.01 usa Python.

Tal vez