¿Qué vas a aprender? Creo que la mejor pregunta es, ¿qué no aprenderás?
En Berkeley, comenzamos con el curso introductorio de CS que todos toman. Cubrimos los conceptos básicos de bucles, variables, etc. dentro de la primera semana, y comenzamos a tener problemas interesantes muy rápidamente. Tu primera tarea, estarás codificando la secuencia del granizo; para la tercera semana, estarás trabajando en problemas recursivos y tendrás tu primer proyecto pendiente, implementando un juego llamado Hog. A partir de aquí, solo mejora, al hacer árboles, estructuras de datos básicas y, finalmente, crear un intérprete (simplificado) para Scheme (un dialecto de Lisp).
Luego pasará a Data Structures, CS 61B, donde estudiará cosas como listas vinculadas, tablas hash, 8 tipos diferentes de árboles, gráficos, algoritmos de clasificación y se le presentará los tiempos de ejecución. También tendrá sus primeros proyectos independientes a gran escala. 61B fue mi favorito de nuestra serie de introducción, en primer lugar porque los temas son muy prácticos, y en segundo lugar porque es donde realmente comienzas a aprender a ser ingeniero de software. Usted está obligado a usar Java para escribir sus propias implementaciones de estructuras de datos, y luego usar estas implementaciones para un proyecto más grande. En mi año, nuestro proyecto más grande fue implementar una IA para un juego que se parecía a Connect-4, que involucraba la búsqueda del árbol de juegos Minimax y una implementación rápida de DFS para verificar las victorias.
- ¿Cómo debo aprender la codificación para conseguir un trabajo decente?
- ¿Cuáles son los trabajos relacionados que puedo obtener en el campo de la informática si estoy interesado en algoritmos y no en programación?
- ¿Cuál es la mejor opción de capacitación del Secretario de la empresa en alguna empresa de grupo privado o con PCS de renombre?
- He estado trabajando como desarrollador de software durante varios años y me despidieron el año pasado y no puedo encontrar ningún trabajo, ¿debería considerar comenzar mi propia empresa?
- ¿Debo hacer ciencia de datos o informática a nivel de pregrado? ¿Cuál tiene más alcance?
Luego, pasa a CS 61C, que formalmente se llama Arquitectura de máquina, pero también involucra una tonelada de otros temas. Comenzará aprendiendo C a través de un proyecto corto (el nuestro fue hacer grep) y uno más largo (procesamiento de imágenes), luego aprenderá ensamblaje (MIPS) con otro proyecto, y luego pasará a MapReduce (otro proyecto), y luego paralelismo, instrucciones SIMD y subprocesos (otro proyecto), y luego pasa a procesadores, donde comienza desde puertas lógicas y culmina en la construcción de una CPU de ciclo único completamente funcional que puede ejecutar un pequeño conjunto de instrucciones en un circuito de construcción entorno (Logisim).
También tendrá CS 70, nuestro curso discreto de matemática y probabilidad que fue uno de los cursos más interesantes que he tomado, pero también implica 20 horas de trabajo cada semana en conjuntos de problemas. Aprenderá sobre casi todo, desde pruebas matemáticas (contradicción, directa, inducción, etc.), hasta RSA y aritmética mod, hasta códigos de corrección de errores, y mucha probabilidad.
Esa es la serie div inferior, que como puedes ver, cubre una tonelada. Los divs superiores luego profundizan en estas cosas. Ahí es donde aparecen los algoritmos, el diseño digital avanzado, los gráficos, los sistemas operativos, los compiladores, la inteligencia artificial, el aprendizaje automático, etc. Tomarás la amplitud de conocimiento que has aprendido y te especializarás un poco.
De todos modos, esto se convirtió en una especie de divagación, pero ese es el punto: hay mucho que aprender y muy poco tiempo para meterlo en la cabeza. La universidad es fantástica, y si te gusta CS, te encantará estar aquí.