¿Debo omitir el CS61A y CS61B e ir directamente al CS61C si he tenido mucha experiencia en programación antes de la universidad?

Aunque las clases están numeradas 61a, b, c, no son una progresión. Las clases no son “introducción a la programación”, “programación intermedia” y “programación avanzada”.

Cada curso tiene un propósito específico y un contenido muy diferente. Recomiendo encarecidamente tomar los 3 cursos si puedes.

El departamento no le permite omitir CS61a. (Esto puede haber cambiado. Solía ​​ser un requisito difícil). Puede omitir CS61b con experiencia previa (es decir, AP Computer Science o curso equivalente universitario). Si eres autodidacta, creo que todavía tendrás mucho que aprender de tomar CS61b. Personalmente lo omití, pero mirando hacia atrás, creo que tomarlo probablemente hubiera sido beneficioso.

Habla con tus compañeros de estudios. Son un recurso valioso. (Ver: la respuesta de Bowen Li a ¿Cuáles son las mejores maneras de tener éxito en un programa de ciencias informáticas de pregrado riguroso (nivel MIT)?)

Si puede omitirlos o no, depende de la aprobación del instructor. ¿Sabes qué cubre realmente 61A? (Algunas personas piensan que 61A es una clase trivial, equivalente a algo como AP CS A, antes de venir a Berkeley, así que espero que no tengan el mismo concepto erróneo). ¿Qué tan bien conoce los temas en 61A y 61B? ¿Podrías salir bien en los exámenes finales para ellos?

Si puede convencer a los instructores responsables de que conoce el material lo suficientemente bien (ya sea a través de las clases que ha tomado o el conocimiento que ha acumulado), continúe. De lo contrario, no podrá declarar la especialidad a menos que tome las clases requeridas, por lo que simplemente comenzaría con ellas para terminar de una vez.

En mi experiencia, aunque 61A es una clase introductoria, cubre una gran cantidad de material que a menudo no se enseña en las clases introductorias de CS. (Personalmente, aunque tuve una experiencia no trivial, aprendí una buena cantidad de cosas nuevas en 61A.) Incluso si termina siendo una clase relativamente fácil para ti, probablemente hay cosas que no has aprendido (a menos que leas SICP o tomó una clase equivalente). El material 61B es más estándar, por lo que es posible que tenga suficiente experiencia para omitirlo, pero de todos modos creo que es una clase valiosa.

No es raro que las personas sobreestimen la cantidad de CS que saben antes de venir a Berkeley, y aunque hay algunas que son legítimamente buenas para estar exentas de 61A y 61B, definitivamente hay personas con experiencia en programación que, sin embargo, luchan en 61A.

No, porque la programación informática no es lo mismo que la informática.

¿Has revisado el plan de estudios de esas clases? ¿Qué tan familiarizado estás con Unix?

Me sorprendería mucho si te has encontrado con el material CS61A. Enseñaron usando Scheme (una versión del lenguaje de programación Lisp). ¿Está familiarizado con el cálculo Lambda, la programación funcional y cosas como la recursión, las listas, los árboles?

Creo que CS 61A es una clase hermosa y no debes saltearte. En cuanto a 61B, de hecho cubre muchos conceptos básicos de ingeniería de software, pero también cubre algunas estructuras de datos interesantes y material de algoritmos importantes. No debes saltarte 61B a menos que ya te sientas cómodo con todo eso. Una buena manera de evaluar esto es mirar la tarea y los exámenes de encarnaciones anteriores de la clase, todos los cuales deberían estar disponibles en línea.