math - practice - Matemáticas, programación y aprendizaje
math practice (21)
Ya se ha discutido en este sitio sobre la relación entre matemática y programación, y si uno es un subconjunto del otro, etc.
En mi estudio reciente de programación, me he encontrado cada vez más deseando ser mejor en matemáticas. Todos ustedes conocen el escenario cuando los libros de programación comienzan a generalizar algo de forma matemática ("Por lo tanto, podemos decir que para todo <some single letter>
, <lots of letters>
"). Mis ojos se nublan en tales situaciones. Sé que eso se debe principalmente a que soy estúpido, pero parece que si pudiera mejorar mis habilidades matemáticas superiores, tal vez podría obtener más de esas cosas.
Pregunta importante: ¿Las matemáticas son realmente algo en lo que uno puede "mejorarse", o su cerebro está conectado o no?
Pregunta de seguimiento importante: si la respuesta a lo anterior es sí, ¿cuáles son algunas formas de hacerlo?
¡práctica práctica práctica!
Los lineamientos de Schaum son buenos para esto. Si está interesado en la probabilidad (que toca la combinatoria), vea 50 Problemas desafiantes en probabilidad.
1) Sí.
2) Explora preguntas matemáticas que suenan interesantes. Compre / lea libros que le brinden la información necesaria. Repetir.
Antes que nada, recomendaría los programadores matemáticos de Steve Yegge. Más o menos resume tu lucha.
Y ahora me gustaría contar una historia personal. Era doble especial en Matemáticas y CS. Aprendí mucho en las clases de Matemáticas, pero honestamente no lo aprecié tanto como debería. Les diré que muchas de las cosas que hice me han ayudado en mi carrera de programación. Y no se trata de una fórmula o conocer el cálculo, o cualquiera de esas cosas. Es que un sólido conocimiento de Matemáticas te enseña a pensar para resolver un problema. Para mí, esa es la matemática que necesitas.
Creo que cualquiera puede mejorar en matemáticas. Solo tienes que estar decidido y practicar.
Parte del problema es que los libros de matemáticas suelen ser escritos por matemáticos que dejaron de ser aprendices de matemáticas hace décadas. Lo que desea es libros adaptados a su nivel y que contengan material con el que pueda trabajar.
Algunas recomendaciones:
Si puede encontrar una copia, obtenga Mathematica y un buen libro (el bosquejo de Schaum es bastante bueno y barato). Lo uso todo el tiempo para visualizar cosas.
Como programador, probablemente desee apuntar más a las matemáticas discretas que al cálculo.
El libro de Concrete Mathematics mencionado en otro lugar es excelente.
La mayoría de los textos introductorios de matemáticas discretas tienen una buena cobertura de cosas como lógica, conjuntos, combinatoria, probabilidad, teoría de grafos, etc. Mi escuela usó el texto de Rosen que me gustaba.
El álgebra lineal es útil si vas a hacer programación de gráficos en 3D. La mayoría de los textos introductorios para ingenieros le enseñarán lo que necesita saber. Linear Algebra Done Right es probablemente lo mejor en álgebra lineal "real" si quieres algo más teórico.
Busque libros de Martin Gardner y juegue con sus rompecabezas. Es un excelente escritor y maestro.
Recuerde que las matemáticas no cambian tanto. Puede obtener libros usados a bajo precio en Amazon y en librerías usadas. Siempre busco la versión n-1 cuando compro libros de texto.
Cuando comenzaste a aprender inglés, todos esos "símbolos" (letras) te parecían un galimatías. Estoy seguro de que en algún momento te sentiste frustrado por tu falta de comprensión. Pero lentamente, y gradualmente comenzaste a entenderlos.
Finalmente, fue capaz de construir sus propias palabras y oraciones con estos símbolos. Después de haber sido corregido en su estructura y gramática durante años, ahora tiene un dominio del idioma.
Las matemáticas son así. Tus ojos se nublan porque no has aprendido el idioma. Quizás en la escuela no disfrutó particularmente las matemáticas porque no vio ninguna aplicación práctica para ello. Ciertamente, la forma en que enseñamos matemáticas a nuestros estudiantes es atroz, por lo que no es de extrañar que muchos terminen la escuela sin estar bien versados en ella (para leer más, echa un vistazo al Lamento de un matemático que habla de lo horrible que es nuestro método actual de enseñar matemáticas) .
Sin embargo, nunca es demasiado tarde para llegar a un grado de competencia que le permita leer muchos escritos académicos de Ciencias de la Computación. Comience con Pre-Cálculo en su colegio comunitario local por la noche (para repasar todo lo que ha olvidado). Luego avance a Cálculo y luego tome Matemáticas discretas. Honestamente, esta es toda la matemática que necesitarás el 99.99% del tiempo. En menos de 2 o 3 semestres puedes quedarte completamente atrapado y ya no tendrás los ojos vidriosos cuando leas algo con algunas raíces matemáticas.
Estudiar matemáticas es como obtener una educación clásica, una especialmente adecuada para programadores y otras profesiones informáticas. Y las matemáticas son el tipo de cosas que puedes apreciar más a medida que te haces mayor. Te das cuenta de que no se trata de obtener respuestas tanto como de pensar profundamente y conceptualmente. Las "respuestas" que podrías desarrollar tienen mucho más sentido de esa manera.
Hubo un tiempo en que me hubiera recomendado tomar un curso de geometría y tomarme un tiempo para aprender a probar teoremas, ver cómo fluyen los conceptos juntos. Estos días, sin embargo, diría que es mejor tomar un curso de matemáticas discretas. Es mucho más práctico, y hay mucha más variedad, pero todavía hay suficiente teoría para hacerlo desafiante si quieres.
Las matemáticas discretas también te ofrecen desafíos de programación en los que quizás nunca antes habías pensado. Tal vez puedas hackear una buena heurística para resolver un problema NP-completo, como un problema de N-city Traveling Salesman. Quizás incluso proponga algunas soluciones y pruebe cuáles funcionan mejor en qué circunstancias.
(Nunca tomé clases de CompSci en la universidad. Probablemente puedas decirlo).
Puedo compartir mi experiencia ...
Me han aterrorizado las matemáticas desde la escuela primaria. Lo odié, no entiendo el punto, no lo persiguió.
Por el contrario, siempre me han fascinado las computadoras. Estudio la programación desde una "necesidad de saber": no soporto entender las computadoras y la programación desde el nivel más bajo al más alto. Estoy casi completamente autodidacta, y tengo una carrera como programador / arquitecto.
El año pasado, a instancias de mi esposa, comencé a regresar a la universidad. Me inscribí en una clase de Algebra de recuperación, sabiendo que iba a ser un dolor. No fue así.
De alguna manera, a través de todos los años de aprendizaje para desarrollar software OO, parecía que me había engañado a mí mismo para aprender a pensar matemáticamente. Los conceptos ya no eran tan difíciles. Puede ser que haya aprendido a pensar en términos de sistemas complejos formados por ideas más pequeñas y menos complejas.
Ahora estoy investigando el desarrollo de juegos, y esa es una programación seriamente orientada a las matemáticas. Mucho más que el desarrollo comercial que he estado haciendo hasta este punto. Sin embargo, no me parece tan desalentador porque se aplica mattematica. Trabajar para resolver problemas prácticos parece hacer que el estudio sea menos tedioso y mucho más interesante. He encontrado que Wikipedia y Wolfram''s Mathworld son útiles. Si ya sabes cómo programar, estás por delante del juego aprendiendo matemáticas.
Respuesta corta:
Puede haber personas que son estúpidas para obtener buenas matemáticas. Pero esas personas generalmente también son estúpidas para programar.
Entonces, si tienes algunas habilidades en programación, podrías considerarte lo suficientemente inteligente como para aprender matemáticas también.
Nota: Sé que hay personas inteligentes con una discapacidad grave en el aprendizaje de matemáticas, pero creo que eso es más como una excepción.
Sé exactamente cómo te sientes. Siempre he querido aprender más matemáticas, pero como no pude hacerlo en la universidad después de la escuela (no hay espacio suficiente) y no puedo tomarla en la universidad (no puedo hacerlo con un título de CS) todavía no lo he logrado estudiar matemáticas formalmente desde la edad de 16 años.
Las matemáticas son algo que cualquiera puede aprender. Algunos argumentarán que se hace más difícil con la edad, pero he conocido a personas que se suman a las 60 que toman clases de Matemáticas con facilidad. Hay una mujer en mi universidad que tiene 70 años y faltan unos meses para graduarse en un campo relacionado con Matemáticas. Si quieres aprender matemáticas, ahora es el momento adecuado, aunque seré la primera persona en decir que no es fácil. Si bien encontrarás muchos de los problemas extremadamente fáciles con la experiencia de programación, todavía encontrarás que pasar por una serie de problemas te quita mucho tiempo. Casi termino el curso MIT OpenCourseWare en Algebra Lineal, luego terminé obteniendo un nuevo trabajo a tiempo parcial, trabajando 10 horas al día, 7 días a la semana, y olvidando la mayoría de lo que había aprendido.
Dicho eso, si tiene el tiempo y la verdadera dedicación puedo recomendar algunos enlaces a video conferencias que pueden ayudarlo a seguir su camino.
- Preálculo de álgebra
- Precálculo
- Cálculo
- Probabilidad Aplicada
- Introducción a las estadísticas
- Ecuaciones diferenciales
- Álgebra lineal
No estoy diciendo que esto es lo que necesitas saber. Esto es lo que me propuse aprender antes de graduarme de mi CS, así que siéntete libre de escoger y elegir lo que sientas que es mejor para ti.
Se puede aprender absolutamente. Personalmente, obtuve el mayor beneficio de los cursos de matemáticas (especialmente pruebas) que tomé en la universidad.
Cursos recomendados:
- Matemáticas discretas
- Pensamiento matemático
- Álgebra abstracta
- cualquier otro curso de prueba
Libro recomendado:
- Las tuercas y los pernos de las pruebas, por Antonella Cupillari
Recomiendo tratar de tomar uno o más de estos cursos en una escuela de algún tipo. Encuentre una universidad local y audite un curso.
Sus habilidades se oxidan si no se usan y el conocimiento se desvanece con el tiempo si no se usan. Si no usas tus habilidades matemáticas, pronto no tendrás habilidades matemáticas. El aprendizaje continuo nuevo y la práctica de las habilidades que ya tiene le llevarán algún día a ser maestro de matemáticas / programación.
El Proyecto Euler tiene muchos problemas matemáticos que solo se pueden resolver a través de la programación. Los problemas se vuelven más difíciles, pero se basan en las habilidades y los conocimientos adquiridos en sus soluciones anteriores.
También compro algunos libros de texto interesantes en librerías de segunda mano. Sus habilidades baratas y lentamente mejoran. Los uso junto con MIT Open Course ware .
También recomendaría el proyecto euler. Aunque no enseña exactamente matemáticas, te da problemas que luego puedes buscar cómo resolverlos. Siempre he preferido resolver problemas reales en lugar de solo aprender teoría.
Una forma divertida de practicar matemáticas es http://projecteuler.net/ . Aunque es menos sistemático / efectivo que hacer un curso o leer un libro de texto.
Vaya a la universidad de la comunidad local e inscríbase en el Cálculo 1. Esto cubre las funciones en el sentido matemático, y tiene un curso de actualización rigurosa sobre álgebra, y utilizará solo la cantidad suficiente de símbolos para que pueda progresar.
Yo diría que es algo en lo que cualquiera puede mejorar. Se necesita tiempo y paciencia, y algunos textos son obscenamente densos en cuanto a la notación involucrada, pero si estás dispuesto a poner el tiempo en ello, creo que no debería ser demasiado horrible.
Verificaría la lista de símbolos matemáticos de Wikipedia y la mantendría cerca siempre que veas una gran cantidad de símbolos emergentes. Trate de uno en uno y agréguelos de la manera que le resulte más sensata (o pregúntenos algunas veces hasta que lo domine).
estudio estudio estudio!
wikipedia es en realidad una referencia matemática bastante buena. comience con algo que le interese aprender y siga los enlaces hasta que comprenda todos los componentes básicos para esa cosa inicial.
Creo que hay dos cosas para aprender matemáticas: 1. Aprender las técnicas generales. Es decir, cómo agregar dos fracciones, cómo diferenciar, integrar. 2. Aprender a resolver problemas y aplicar las matemáticas al mundo real.
Creo que al recoger libros de texto de matemáticas aprenderás 1. Muchos libros de texto de matemáticas están organizados por sección, donde habrá algunas páginas que te mostrarán una técnica y luego un montón de problemas. Los problemas tienden a estar relacionados con la técnica que acabas de aprender y muy similar. Es decir, una sección sobre logaritmos tendrá todos los problemas en los logaritmos y probablemente no incluirá ningún polinomio. Al hacer los problemas en la sección, aprenderá las técnicas. Cuantos más problemas haga, más rápido obtendrá y más comprenderá los conceptos. Muchas veces encontrará que si resuelve los problemas sin memorizar explícitamente las fórmulas, encontrará que después de hacer lo suficiente, las fórmulas necesarias se memorizarán implícitamente. En última instancia, si tiene problemas para buscar fórmulas de probabilidad, querrá leer un libro de probabilidades. Si tiene problemas con la notación suma, querrá consultar esa sección de un libro de álgebra, etc.
Para aprender 2, creo que los libros de texto de matemáticas no ayudan mucho porque cada sección tiende a tener problemas relacionados con esa sección. Ocasionalmente hay algunos problemas de "revisión mixta" o una "revisión de un capítulo" que mezcla problemas, pero generalmente están muy alejados. Los libros de texto de ciencias como Física, Biología, Química, etc. tienden a ser mejores para esto. Ahí, a menudo lee el problema, lo diseña y termina usando una variedad de herramientas matemáticas para resolverlo. A veces cálculo, álgebra lineal y geometría, todo dentro del mismo problema. El valor aquí es que te enseña a resolver problemas. En general, el examen SAT / GRE no prueba si sabes cómo hacer Algebra, sino que prueba si sabes cómo aplicarlo al mundo real, y los problemas científicos realmente te ayudan aquí. Además, la programación en general se trata de la resolución de problemas y cuanto mejor se encuentre en la resolución de problemas, mejor estará en la programación. Básicamente, en la programación usted toma problemas, crea un modelo mental, diseña una solución y luego la modela en su lenguaje de programación preferido. Esto es similar a decir Física. Mire el problema, extraiga un modelo matemático, diseñe una solución, eche algunas ecuaciones con el modelo de la solución y luego conecte los números. Recomiendo la física porque después de mi física de la universidad los problemas de las palabras de clase se volvieron simples para mí y usaron ser bastante difícil (aunque no imposible).
En la programación diaria, probablemente no use más que álgebra y lógica (para las declaraciones if y las condiciones de bucle). Hay algunos lugares que usan matemática alta como juegos de computadora, criptología, minería de datos, etc. pero para una aplicación comercial típica, probablemente no uses más que álgebra y lógica, y tal vez un poco de teoría de conjuntos (las cosas ya son tan básicas lo interiorizó). Incluso en lugares que usan matemáticas altas (como empresas financieras), a menudo los usuarios de negocios (o alguna literatura de la industria) habrán hecho matemática más alta y solo necesitarán implementar las ecuaciones (con algo de álgebra). Solo menciono esto porque la mayoría de los libros de programación no tienen más que álgebra y lógica, a menos que esté leyendo libros de texto sobre Algoritmo Análisis (Introducción a Algoritmos), Inteligencia Artificial o alguna otra área de investigación. Los libros de aplicaciones generales sobre cómo hacer cosas generalmente son cortos en matemáticas.
Pero dependiendo de lo que está leyendo, las matemáticas pueden ayudar. Para la mayoría de las ciencias de la computación, las matemáticas discretas y discretas deberían ser suficientes. Aúna eso con un poco de práctica de física y deberías ir bien. Todavía puede ser lento pero debes tener el fondo adecuado.
Parte del problema es que algunos símbolos matemáticos transmiten muchísima información. Si está leyendo un libro de programación normal, está lleno de palabras y códigos. Ninguno de estos es súper detallado (aunque a menudo tengo que reducir la velocidad mucho más en el código que las palabras normales). Sin embargo, una ecuación matemática complicada puede ser fácilmente una pantalla llena de código o palabras de programación. Tenemos todo tipo de notaciones simples que transmiten procesos complejos.
Otro problema es que la notación está estandarizada pero no exactamente. Diferentes libros usan notación ligeramente diferente, por lo que toma un tiempo acostumbrarse. También muchos libros de texto omiten pasos clave en pruebas matemáticas o incluso ejemplos. A veces incluso los profesores universitarios se confunden con los pasos que faltan en una prueba dada en un libro de texto y luego dan su propia prueba, o dan una levemente modificada sobre la del libro porque lo aprendieron de manera diferente o no pueden recrear el paso que falta exactamente que toma la prueba en una dirección diferente.
Así que, de todos modos, solo porque tus ojos se empañan no significa que tengas que rendirte. La primera vez que vea las ecuaciones, probablemente leerá el modo de texto en inglés y tendrá que pausar para considerarlas. Pasar por encima de ellos lentamente y prestar atención a lo que significan todos los símbolos un paso a la vez puede arrojar la respuesta por usted. Si hay alguna notación que no haya visto antes, probablemente haya un capítulo introductorio o apéndice que explique la notación, así que verifique allí. Finalmente, busca otras fuentes. Usa google / wikipedia para buscar ecuaciones para el concepto y puedes encontrar una derivación y / o prueba que puedes seguir. Además, el otro puede ayudarlo a comprender mejor las pruebas / derivaciones actuales. Incluso si su comprensión de la prueba / derivación no mejora, su investigación adicional probablemente le ayude a comprender la ecuación.
Un segundo voto para el "Lamento de un matemático" de Lockhart, que recomienda que las matemáticas se enseñen como la pintura, la poesía o la música, no por su utilidad práctica sino por simple placer:
No hay propósito práctico ulterior aquí. Sólo estoy jugando. Eso es lo que las matemáticas son: preguntarse, jugar, entreteniéndose con su imaginación.
Mira los diagramas en un documento reciente de Knuth, Dancing Links , y dime que no se estaba divirtiendo haciendo eso.
Son ambos. Puedes mejorar en matemáticas. Pero también estás limitado / dotado por el cableado particular en tu cerebro. Lo que eso significa es que lo más probable es que puedas mejorar tus habilidades matemáticas actuales. Sin embargo, debido a los límites de tu hardware mental, es posible que nunca descubras un nuevo teorema.
Y cuando se trata de mejorar, creo que el camino, como siempre, es practicar. Para leer literatura matemática, para tratar de resolver problemas matemáticos y, finalmente, desarrollar una perspectiva en la que se puede romper, como una cuestión de hábito, acertijos del mundo real que se ven antes que en términos matemáticos.
En cuanto a la relación de la programación con las matemáticas, creo que hay una bastante fuerte. De hecho, uno podría argumentar que un programa no es más que una prueba de un teorema, siendo el documento de requisitos todas las entradas a la prueba.
Me gustan la combinatoria y los algoritmos: divirtiéndote aprendes más rápido.