2010-01-13 27 views
13

Acabo de comenzar a programar con Java y noté que podría necesitar mejorar mis habilidades matemáticas si quería hacer algo que valiera la pena. Me di cuenta de que algunos de los ejercicios deberían ser fáciles para alguien con una sólida comprensión en matemáticas, ya que parece haber algunas fórmulas matemáticas que ejecutan el programa. Terminé la escuela secundaria hace dos años y no tuve la oportunidad de hacer matemáticas al más alto nivel allí. Estoy muy preocupado por esto y, por lo tanto, busco consejos de personas más experimentadas y conocedoras sobre lo que debería estudiar para obtener una comprensión básica de las matemáticas antes de caer en aguas profundas.Quiero mejorar las habilidades matemáticas para programar

En general, fui un buen alumno en matemáticas y tengo una mente muy rápida. Mi objetivo es convertirme en un programador de Java certificado y experimentado para el final del año. Sé que la gente dirá que la experiencia requiere tiempo y esfuerzo, pero estoy dispuesto a sacrificar todo lo que tengo para cumplir este objetivo. He programado con PHP y MySQL un poco antes y obtuve un entendimiento general, pero Java me dio una verdadera patada cuando lo leí. Si sabes cualquier otra cosa que pueda ayudarme en este empeño, házmelo saber.

Gracias.

+0

Duplicado: http://stackoverflow.com/questions/862804/how-to-improve-my-math-skills-to-become-a-better-programmer – gnovice

Respuesta

18

Le recomiendo encarecidamente que lea Math for Programmers de Steve Yegge.

Si está buscando algunos libros, recomiendo Concrete Mathematics y The Art of Computer Programming.

Si está buscando algunos problemas para practicar, consulte Project Euler.

No se desanime por problemas desafiantes. Es solo superando desafíos que crecerás. La comunidad aquí está dispuesta a brindarte asistencia y empujones cuando llegas a un obstáculo.

Deje Tampoco olvidemos la famosa cita:

Sean cuales sean sus dificultades en matemáticas, les puedo asegurar que lo mío es mucho mayor .--- Albert Einstein

Mi objetivo es llegar a ser certificados y programador de Java con mucha experiencia antes de fin de año.

Por último, la única manera de convertirse con mucha experiencia es escribir código, y mucha de ella.

+0

Einstein era inteligente pero estaba sobrevalorado. –

+2

No, él era solo un físico, no un matemático ... las matemáticas que necesitaba no se habían inventado cuando comenzó a trabajar en Relatividad General. No es de extrañar que fuera difícil. Estudié eso, realmente es difícil incluso con 80 años de mejora. –

+0

¿Los tensores generales no se habían inventado cuando Einstein hizo la relatividad general? Lo siento, será mejor que entiendas tu historia. Einstein aprendió mucho sobre tensores y geometría diferencial de su amigo Grossmann. Era un hombre brillante, pero no inventó las matemáticas en las que se basa GR. Lea "Sutil es el Señor" por Abraham Pais. Vea la página 212. – duffymo

8

Discrete Mathematics es lo que probablemente necesite. Comprender los sistemas de números de la base 2 (binario) base 16 (hex) es útil imprescindible. No tiene que empantanarse con las matemáticas discretas ya que algunas de ellas son demasiado profundas y hace que las carreras de matemáticas se estremezcan. Repase los conceptos básicos, como los conjuntos y la lógica.

En cuanto a trig/calculus ... He tomado todos estos en la universidad y nunca he confiado en estos ampliamente ... o bien, en absoluto.

+3

Algoritmos es también una rama de las matemáticas que es extremadamente importante. –

+0

Creo que trig es más útil si estás haciendo algo relacionado con gráficos como juegos o análisis de imágenes. –

2

Las ecuaciones lineales, álgebra matricial, base 2, 8, 18 y 10 conversiones, logaritmos y teoría de conjuntos (intersecciones, uniones, etc.) le darán una base básica. Si su álgebra es sólida, busque en matemáticas discretas, precalculus y trigonometría. Una vez que hayas llegado tan lejos, no deberías tener problemas para continuar si lo deseas.

Honestamente, puede valer la pena tomarse un examen de ubicación en un colegio comunitario local para obtener una evaluación honesta de sus habilidades. A partir de ahí, tiene la opción de inscribirse en una clase o aprender sus planes de estudio a través de la autoinstrucción.

+0

No estoy seguro si la base 18 es tan importante: P – svens

+0

No pude hacer nada sin mi fiel editor de oct – rotard

0

"Concrete Mathematics" sería una sugerencia de libro sobre este tema.

+0

no, sería la misma recomendación de libro –

3

La aptitud matemática no es necesariamente un prerrequisito para ser un buen programador. Sin embargo, existe una fuerte asociación en que los buenos programadores tienden a ser buenos en matemáticas. Eso no significa que aprender más matemáticas necesariamente te haga un mejor programador. Convertirse en un mejor programador generalmente requiere mucha codificación. Así que con esto en mente:

  • código mucho y con frecuencia y con las mejores prácticas, tratar de no "hacer trampa"
  • Ponte a prueba
  • Trate de trabajar a través de algunos problemas en Project Euler
  • Tratando el hacer Sudoku avanzado en su cabeza para practicar la deducción y calentar
+0

También juego con Einstein Puzzle 2.0 http: // linux. wareseeker.com/Games/einstein-puzzle-2.0.zip/338379 –

1

Pase a través de http://www.khanacademy.org/ sección de matemáticas. La mayoría de las personas se gradúan de la escuela secundaria con solo Cálculo I en su haber.

Si repasas todas las matemáticas aquí, tendrás requisitos matemáticos casi satisfechos para un soltero en CS. Lo que queda es matemática discreta, algoritmos, autómatas finitos.

Echa un vistazo al MIT Open Courseware para eso también.

0

SI le queda algo de tiempo libre después de todas estas excelentes sugerencias, también podría arrojar estadísticas de Head First en su lista de lecturas. http://www.amazon.ca/Head-First-Statistics-Dawn-Griffiths/dp/0596527586

Aunque no está directamente relacionado con la programación básica de Java, las estadísticas encuentran muchos usos en algunas áreas de la informática. Por ejemplo, he encontrado este libro muy útil en algunos de los proyectos de minería de datos en los que he participado.

Recomiendo este libro porque es muy fácil y divertido de leer, y sirve como una buena introducción a estadísticas sin atascarte. Esta es la lectura "antes del talón" que puedes hacer con un mínimo esfuerzo.

0

Esto no es tanto una recomendación como un aliento general; aprendo haciendo. Leyendo libros sobre matemáticas, fuera del contexto de algún problema que resolver, es aburrido, seco y generalmente no conducente al aprendizaje. Me parece que si me planteo un desafío de programación, uno que está por encima de mi nivel actual de competencia, aprenderé mucho y abriré nuevas áreas de conocimiento como una consecuencia de resolver el problema. Tal vez es más difícil/más lento de esta manera, pero me parece que me da una base sólida y práctica en un tema. Por ejemplo, en los días en que aprendí mucho sobre el módulo matemático, al tratar de encontrar la forma más simple de hacer el juego humano Vs rock-paper-tijera de computadora ... Mis dos centavos.

0

A menudo he intentado trabajar con libros, y tengo una buena selección de libros de lectura parcialmente leídos. Gané mucho haciendo un curso de matemática pura Open University de segundo año (M208) hace un par de años - está bien estructurado, tienes que hacer todos los ejercicios, y fue lo suficientemente amplio como para introducir algunas cosas que yo no haría he mirado mi propio bate, pero lo suficientemente profundo como para ser satisfactorio.

Cuestiones relacionadas