¿Cómo puedo entender los conceptos después de leerlos una o dos veces como máximo?

Es normal que no entiendas todo después de leer un texto escrito sobre un concepto que no conoces. Casi todo está escrito para lectores con un cierto conocimiento previo, y sin este conocimiento previo algunas partes del texto parecerán poco claras.

Primero debe preguntarse qué tan profundo quiere profundizar en el tema: ¿solo necesita comprender la diferencia entre la clasificación rápida y la clasificación por inserción y saber cuál elegir en alguna situación, tiene que implementar un algoritmo de clasificación rápida en algunos lenguaje de programación, ¿o desea utilizar el algoritmo de ordenación rápida como ejemplo para comprender la recursividad? La respuesta a esta pregunta determinará la cantidad de tiempo y esfuerzo que tendrá que invertir para comprender el tema. Primero, lea el texto e ignore todo lo que no entiende. No te detengas ni busques algo, solo léelo. Luego, repítelo nuevamente y, dependiendo de la respuesta a la pregunta anterior, determina para cada una de las cosas que no entiendes si vale la pena intentar comprenderlo o no. Si desea implementar la ordenación rápida, primero deberá comprender la recursividad. Aprenda sobre este tema con la misma medida que lo hizo para el primer tema, determinando qué tan profundo quiere profundizar en función de cuál es su objetivo.

Para conceptos de programación abstractos, como su ejemplo de ordenación rápida, siempre ayuda implementarlos. Elija un lenguaje de programación que le permita crear prototipos rápidamente y visualizar algo (Python es mi favorito, con un visualizador como http://netserv.ict.ru.ac.za/pyth…), implemente cualquier parte que no entienda, y ejecútelo con diferentes entradas (no olvide los casos especiales) para ver para qué sirve cada parte del algoritmo.

1. Comience con un proyecto pequeño y aprenda los materiales necesarios. Piense en cómo habría abordado un problema particular antes de mirar las soluciones existentes.

2. Tome un producto concreto y comprenda la arquitectura de alto nivel. Por ejemplo, si está interesado en el sistema operativo, lea sobre el kernel de Linux a alto nivel y varios algoritmos. O si te gusta la base de datos, mira Sqlite o mysql. Piense en usar un simulador para comprender el flujo. Por ejemplo, si está aprendiendo Arquitectura, use SimpleScalar para saber cómo se procesan las instrucciones. Para redes hay NS.

3. Participe en foros como stackoverflow, quora, blogs de programación (Joel on Software, Coding horror, AllThingsDistributed, Steve Yegge, por ejemplo, pero esto varía mucho según su interés) Puede seguir https://www.facebook.com/gatecs para tan buenos enlaces (por los tuyos verdaderamente)

4. Algunos conceptos son difíciles de entender, pero la mayoría de los conceptos son más difíciles de descubrir en primer lugar (incluso si son fáciles de entender e incluso obvios; de lo contrario, todo en CS se habría descubierto en 5 años después de la invención de la computadora). El algoritmo de pila para evaluar expresiones parece obvio ahora, pero ha habido cientos de trucos no tan ingeniosos que los hackers implementaron anteriormente

El avance de los informáticos se logra después de años de lucha con las ideas. Además, publicar las ideas y ser revisado para su publicación lleva mucho tiempo, por lo que lo que puede parecer obvio en retrospectiva puede no serlo de hecho.

Quicksort parece obvio ahora: su inventor CARHoare narra un incidente que cuando descubrió quicksort, fue difícil convencer a la gente sobre su eficiencia (e incluso la corrección).

Dijkstra narra que estuvo trabajando durante mucho tiempo en el problema del camino más corto, y de repente un día de vacaciones descubre la prueba. (el horario de oficina parece malo incluso para los informáticos)

5. Algunos conceptos son realmente difíciles de entender … pero simplemente son aceptados (como la electricidad) sin profundizar en los detalles profundos. Hay diferentes niveles de comprensión de las cosas y, dependiendo del proyecto, podemos profundizar en lo interno. (Al encender un interruptor eléctrico no tenemos que pensar en las ecuaciones de Maxwell). También comprender un algoritmo en pocos minutos puede indicar inteligencia, lo que no garantiza que pueda inventar uno nuevo.

6. El aprendizaje en sí mismo es un viaje. Algunos contextos y situaciones pueden acelerar el aprendizaje. Por ejemplo, si se encuentra en una situación en la que la clasificación rápida de las cosas puede tener un verdadero significado e impacto (y todos sus pares también están trabajando en ello, y puede discutir con ellos y lanzar ideas, y su jefe dice que su invención le ahorrará millones a la compañía) de dólares) habrías descubierto quicksort. Póngase en situaciones en las que se pueda mejorar el aprendizaje.

Algunas formas que sugeriría:

  • Calcule el algoritmo: si el algoritmo es de clasificación rápida, tome un bolígrafo y papel y aplique la clasificación rápida en su ejemplo tomado. Es entender la implementación una vez que sepas lo que está sucediendo dentro.
  • Resolución de problemas: muchos de los conceptos en los cursos teóricos de CS se entienden mejor resolviendo problemas relacionados con ellos.
  • Tome interés: una de las muchas cosas que personalmente creo que lo ayudaría a comprender mejor es interesarse por él. Suponga que puede entender y eso es la mitad del trabajo realizado.

More Interesting

¿Cuál es el futuro del hardware de la computadora? ¿Qué tan poderosas serán nuestras computadoras? ¿Cuánta RAM, potencia de CPU y memoria estarán disponibles en 10, 20 o 30 años para el consumidor promedio?

¿Hay algún papel de JavaScript en el aprendizaje automático o el desarrollo de IA?

¿Por qué las operaciones matemáticas como la suma, la resta, la multiplicación y la división no pueden tomar más de 2 operandos?

¿Es mejor trabajar en una aplicación para algoritmos de aprendizaje automático (por ejemplo, biología computacional), en lugar de trabajar en ML central, ya que el campo ya está maduro y hay menos espacio para mejorar?

¿Cuáles son algunos buenos ejemplos de problemas computacionales que naturalmente caen en NPSPACE?

¿Para qué se usaban las primeras computadoras?

¿Cuáles son algunas posibles aplicaciones sanitarias del aprendizaje automático?

¿Qué alternativas a la informática basada en silicio (excepto la informática cuántica) existen hoy en desarrollo, o al menos teóricamente?

Con un rango de 6475 KITEE, ¿entraría en el programa de informática?

¿Por qué se le da tanta importancia al aprendizaje automático?

Arquitectura de la computadora: ¿cuánto afecta la memoria caché del procesador al rendimiento del sistema en comparación con una mayor velocidad de reloj?

¿Cuáles son los mejores blogs para un desarrollador de PHP para obtener información / consejos?

Cómo aprender independientemente la teoría de la complejidad computacional

¿Cuáles son algunos de los mensajes de error más extraños y divertidos?

¿Qué institución tiene una mejor facultad para CSE, JU o IIEST?