Estoy en un curso de CS. ¿En qué tema de programación debería centrarme? [cerrado]

StackOverflow https://stackoverflow.com/questions/641553

  •  22-07-2019
  •  | 
  •  

Pregunta

¿Qué es lo más importante en este momento? Sé que puedo adquirir experiencia en programación más tarde. ¿Cuál de los siguientes debería estudiar para convertirme en un buen programador o analista después de graduarme?

  • estructuras de datos
  • algoritmos
  • ingeniería de software
  • aspectos de bajo nivel
  • patrones de diseño y análisis OO

[Editfont>

Gracias por las respuestas. Me gustaría incluir otros temas importantes para que sirvan de referencia para otros estudiantes:

  • programación contracorriente
  • sistemas operativos

[/Editfont>

Nota: Creo que el primer elemento de la lista debe ser aprender inglés

¿Fue útil?

Solución

Todos ellos. Todo en tu lista es importante.

Otros consejos

Yo personalmente estudiaría lo siguiente:

  • Un lenguaje similar a C (C / C / C ++ / C # / Java)
  • Un lenguaje de script
  • Un lenguaje de programación funcional
    • Especialmente dado que nos estamos mudando a un mundo de múltiples núcleos, esto será útil ya que permite la paralelización más allá de lo que otro lenguaje puede hacer actualmente. Infraestructuras de telecomunicaciones completas se ejecutan en Erlang, por ejemplo.
  • estructuras de datos
    • Los usarás en todas partes. Son independientes del lenguaje de programación, los necesitará a lo largo de su carrera
  • Algoritmos
    • Estos probablemente irán con el elemento mencionado anteriormente. Ciertas estructuras de datos tienen ciertos algoritmos para acceder a ellas.
  • Patrones de diseño
    • Sí, por supuesto, aprenda los diversos patrones de diseño, pero sepa al mismo tiempo que no son el final, todo estará en la ingeniería de software.

Todo lo demás en su lista también es muy importante, por lo que si bien sugiero los elementos anteriores, no son más importantes que los demás que ha enumerado. Estos son los elementos que desearía haber sacado de mi escuela y me entristece decir que no los ofrecí como clases, sino que tuve que aprenderlos yo mismo junto con todos mis otros cursos.

Creo que ya estás en el camino correcto dado que no has mencionado ningún idioma específico en tu lista. Creo que ese es el error número uno cometido por los estudiantes de CS: centrarse en un lenguaje o un paradigma.

Su lista completa es muy importante; Lo único que agregaría es un estudio bastante profundo de multihilo. Será cada vez más importante en el futuro: ( Artículo de Ars-Technica )

Parece apropiado conectar a Joel aquí ;-)

http://www.joelonsoftware.com/articles/CollegeAdvice.html

¡Todos son obligatorios!

¿Qué estás pensando? Esperaba que eligieras entre concentración (por ejemplo, diseño de juegos versus seguridad y criptografía).

No puede elegir entre algoritmos, oop, estructuras de datos, ingeniería de software, etc. Estos son los fundamentos! Tienes que aprenderlos todos.

Comenzaría con estructuras de datos y algoritmos, no hay competencia allí. El diseño OO es útil. Un poco de bajo nivel, sí. La ingeniería S / W podría omitirse (está bien con un grano de sal).

Además, aquí hay algunas ideas:

  • conceptos básicos de base de datos relacional (no solo "cómo utilizar Oracle", sino álgebra relacional real)
  • sistemas operativos
  • compiladores + intérpretes
  • algo en IR (/ algoritmos genéticos / redes neuronales)

Sí, estoy predispuesto hacia el "núcleo duro" CS cosas. Trabajo ocupado, procesos extra pesados ??y otros tipos de basura PM que aprenderá en la industria lo suficientemente pronto, sin necesidad de desperdiciar sus recursos educativos en ellos. :-)

A ver ...

Deberá comprender la complejidad y las estructuras de datos y algoritmos, para poder tomar las decisiones importantes. Desafortunadamente, necesitará REALMENTE comprender estos temas y resolver acertijos complejos porque juegan un papel mucho más importante en las entrevistas de trabajo que en su trabajo real más adelante. Por lo tanto, estas son las cosas más importantes en las que centrarse por razones prácticas.

La ingeniería del software, los patrones de diseño y el análisis son muy importantes (aunque soy parcial). Desafortunadamente, con la excepción de los patrones de diseño, realmente no puede aprender estos temas sin practicar activamente en un proyecto importante. Concéntrese en comprender las nociones de programación orientada a objetos y la noción de funciones virtuales / enlace dinámico, ya que son muy importantes y muchas personas no las entienden correctamente. Haz tu mejor esfuerzo para obtener una buena pasantía.

Todas las cosas que enumeró son componentes básicos de una educación informática decente, aunque realmente debería agregar lo siguiente:

  • Sistemas operativos
  • Redes
  • Matemáticas (cursos de introducción a discreto, cálculo, álgebra, pruebas, estadísticas)
  • Bases de datos
  • Fundamentos (autómatas finitos, expresiones regulares, máquinas de Turing, etc.)

Esas dos listas juntas le darán una buena comprensión central de la informática, después de lo cual deberá elegir algunos temas más especializados (los que más le interesan).

  • Inteligencia Artificial
  • Cripto / Seguridad
  • Procesamiento / reconocimiento de imagen / señal
  • Compiladores
  • Gráficos
  • Diseño del juego
  • etc.

Encontrará que una vez que comience a profundizar en un tema, ¡todos esos cursos básicos, incluidas las matemáticas, comenzarán a entrar en juego! Por ejemplo, actualmente estoy estudiando el reconocimiento de imágenes y he tenido que usar y comprender cosas de estadísticas, IA, cálculo, pruebas, álgebra, algoritmos, estructuras de datos, OOP, etc.

Todo en tu lista es importante, pero también necesitas la actitud correcta. Necesita profundizar en suficientes detalles sobre cómo funciona cada cosa que estudia y por qué se hizo de esta manera, no solo hacer la tarea de clase. Esto es lo que realmente le dará una ventaja como futuro especialista.

  1. Sistemas multihilo y distribuidos.
  2. Cómo construir aplicaciones fáciles de usar con una buena GUI.

Todos estos son muy buenos, pero los algoritmos son un buen lugar para comenzar. Tal vez incluso debería buscar un curso de matemáticas discreto primero para la teoría.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top