Berkeley ofrece una tonelada completa de cursos de CS, demasiados para enumerarlos aquí. Además, muchos otros departamentos ofrecen ciertos cursos que se incluyen en CS, en particular, muchos de los cursos de la Escuela de Información, pero también de departamentos aleatorios como la música (a través del Centro de Nuevas Tecnologías de Música y Audio). También hay una superposición significativa entre EE y CS, en gran parte porque EECS es un departamento único.
Solo te daré una vista curada de las que creo que son las más importantes.
Los cursos vienen en algunos factores de forma diferentes.
Hay una secuencia de introducción que casi todos toman; si recién estás comenzando, puedes mirar allí. La buena noticia es que la mayoría de estas clases están disponibles como videos en línea, a veces con diferentes profesores. La secuencia de introducción tiene cuatro clases CS:
- ¿Qué tan bueno es el programa de informática para un doctorado en la Universidad de Washington en comparación con las mejores escuelas como MIT, CMU, Berkeley y Stanford?
- ¿Cuál puede ser mi carrera si estoy planeando estudiar economía en mi clase 12?
- Las autoridades de la universidad en la que estudio en la India me han acosado mental y psicológicamente durante los últimos 3 años. ¿Puedo demandarlos o emprender acciones legales contra ellos?
- ¿Cómo puede una persona pagar su matrícula universitaria solo participando en competencias de programación?
- ¿Los reclutadores en América del Norte toman en serio los títulos de informática a distancia, como los de la Open University en el Reino Unido?
- CS 61A , una introducción general basada en La estructura e interpretación de los programas de computadora [En Youtube]
- CS 61B , estructuras de datos y OOP (también en Youtube)
- CS 61C , arquitectura de computadora que cubre C, MIPS y diseño de procesador. Basado en Organización y diseño de computadoras por Patterson y Hennesy. Si miras a tu alrededor, incluso puedes encontrar un video de Patterson enseñándolo él mismo.
- CS 70 , matemática discreta y probabilidad. Básicamente un curso de matemáticas con sabor a CS.
Honestamente, pensé que CS 61B y CS70 no eran nada especial: útil y esencial para una educación sólida en CS, pero no diferente de lo que encontrarías en otras universidades. 61A fue realmente bueno, y Harvey es un profesor increíble, pero también puede encontrar el curso en línea impartido por los propios autores de SICP.
61C, sin embargo, realmente es algo especial porque se vincula con el fuerte de la programación y arquitectura de sistemas de Berkeley, y es enseñado constantemente por los mejores profesores en el campo. Estoy bastante seguro de que es la mejor introducción de programación de sistemas que puedes encontrar en cualquier lugar.
Para el comandante de EECS, estos cuatro son los únicos cursos de CS estrictamente requeridos ; el resto eres libre de elegir como quieras.
Después de la secuencia de introducción, hay un montón de cursos de pregrado de “división superior” que la gente puede tomar. Solo te daré los aspectos más destacados desde mi punto de vista (aunque no he tomado todos los que estoy enumerando):
- CS 188 es una introducción a la IA y al curso de CS de división superior más popular. Siempre se enseña bien y al menos una parte está disponible en edX: CS188.1x
- CS 189 es una introducción al aprendizaje automático, una buena opción para hacer un seguimiento de CS 188
- CS 170 es nuestro curso de algoritmos básicos. Muy útil pero, de nuevo, nada especial para Berkeley, aunque algunas personas encuentran que el libro ( Algoritmos ) es más legible que el CLRS más común
- CS 172, 174 y 176 conforman nuestro conjunto de algoritmos avanzados y cursos de teoría. Son, a su vez, la teoría CS (autómatas, computabilidad y complejidad), algoritmos aleatorios y algoritmos para bioinformática. Solo tomé CS 172, pero fue uno de mis cursos favoritos en general con el mejor libro de texto que he leído : Introducción a la teoría de la computación , por Michael Sipser
- CS 164 es el curso de lenguajes de programación y compiladores. Realmente varía según el profesor; Realmente disfruté tomándolo con Bodik, cuya versión se enfoca más en el diseño del lenguaje y DSL que en los compiladores per se . (Una buena descripción)
- CS 152 es nuestro curso avanzado de diseño de procesadores. Nuevamente, esta es una de las áreas más fuertes de Berkeley, por lo que es un gran curso … siempre y cuando esté realmente interesado en el material. Tiene la reputación de ser el curso de CS más difícil en Berkeley.
Hay muchos otros cursos de la división superior, pero estos son los que más me vienen a la mente.
Además de los cursos normales de CS, hay algunos cursos experimentales, avanzados o seminarios que tienen un número que comienza con CS194. Por ejemplo, CS194-24 es nuestro curso avanzado de sistemas operativos.
- CS 194-2 es nuestra clase avanzada de programación paralela, que incorporó investigaciones directamente del ParLab. Si está interesado en técnicas de programación paralelas de vanguardia, es uno de los mejores lugares para buscar.
Berkeley también tiene una gran selección de clases de posgrado. Solo tomé un par, pero aquí hay algunos que se recomiendan:
- CS 262a (no hay b) cubre temas de investigación en el desarrollo del sistema operativo; una buena visión general si quieres profundizar en eso
- CS 263 hace un buen trabajo cubriendo la teoría básica del lenguaje de programación como semántica y tipos
- CS 267 es una programación paralela más avanzada. Este es interesante porque la mitad de los estudiantes no están en CS: está diseñado para un trabajo multidisciplinario. Aquí hay una versión que se grabó: CS267 Spring 2012.
- CS 280 es un curso popular de visión por computadora. “The Fundamentals of Computer Vision” en Coursera fue una rama de esta clase, pero supongo que ya no está en línea.
Al igual que la serie 194, también tenemos seminarios de posgrado que comienzan con 294:
- CS 294-80 , una introducción a la síntesis de programas. Tomé este curso y lo disfruté muchísimo; desafortunadamente, no estoy seguro de que se vuelva a ofrecer. Fue grabado y, curiosamente, el profesor intentó que personas al azar siguieran el curso en línea e incluso hicieran el proyecto final. ¡Tuvimos personas que se registraron desde Australia! (Sin embargo, no creo que ninguna persona que no sea estudiante haya hecho un proyecto).
Si desea participar directamente en un curso, puede intentar buscar un seminario de manera similar.
Además de los cursos de CS, también hay clases relevantes ofrecidas por otros departamentos. Como se mencionó anteriormente, CNMAT ofrece varios cursos interesantes de música por computadora:
- Music 158 es una introducción a la música de computadora. Es interesante porque tiene una pista orientada tanto a la música como a la software, por lo que es ideal para las personas con CS interesadas en la música y viceversa.
- Music 207 es la versión avanzada de posgrado de Music 158
La Escuela de Información también tiene un montón de cursos relevantes, centrados en el análisis de datos y el aprendizaje automático.
- Info C290 , aprendizaje automático para la educación. Este es el único curso de información con el que estoy familiarizado porque lo tomó un amigo, pero me pareció bastante interesante. Se centró en temas como los MOOC y la detección de trampas.
Como puede ver, hay muchas opciones a pesar de que omití la mayoría de los cursos de posgrado y de la división superior y prácticamente todos los seminarios. Estos son solo los que me vienen a la mente; las personas con otros intereses probablemente armarían una lista completamente diferente.