Soy un estudiante de CSE. ¿Qué cosas extra debo aprender durante estos 4 años?

  • Aparte de las estructuras de datos y los algoritmos. Puede aprender más sobre ingeniería de software. Haga algunos proyectos, póngalos en Github y contribuya a la comunidad de código abierto. Aprenda a escribir la documentación también.
  • Aprende sobre el control de versiones (Git, SVN, Mercurial). Construye herramientas como Apache Ant, Maven, Make (solo conozco estos 3, pero hay muchos).
  • Probando técnicas, aprenda a escribir casos de prueba. Cómo hacer un software con la menor cantidad de errores probándolo a fondo.
  • Obtenga información sobre las API que proporcionan varios sitios web y la comunidad de código abierto. También puedes hacer tus propias APIs.
  • Aprenda sobre la nube, sistemas distribuidos. No es una obligación, pero es beneficiosa.
  • Si puede, entonces comience a escribir un blog (técnico o no técnico). Comparte tu conocimiento con el mundo.
  • Puede unirse a una compañía de software y obtener más información. La forma en que los softwares profesionales se crean, se prueban y se proporcionan a los clientes. No se una a los que le piden dinero.

Editar:

  • Si su universidad le pide que realice un proyecto mayor / menor bajo un profesor universitario como mentor, intente encontrar uno que sea un experto en el campo que le guste. Encuentre un tema de investigación y trabaje en ello. Si es posible, pídale ayuda a su mentor Usted está publicando un trabajo de investigación. Tenga cuidado, a algunas universidades y maestros que toman su viva no les gustan los proyectos de investigación. Pregúntele a su mentor por esto.

PD-

  • Con proyectos paralelos, puede implementar el conocimiento que adquirió al estudiar DS y algoritmos.
  • Todo esto puede parecer demasiado, pero más conocimientos, habilidades y experiencia lo ayudarán a largo plazo.
  • No pierdas la esperanza si los encuentras difíciles. Sigue intentando, No te rindas.
  • Todo lo mejor..:)

La respuesta a esta pregunta depende de cómo trate la computación (o, más ampliamente, de la informática) . Hay dos formas de ver la computación.

Vista 1: Computación (o CS) como una rama de las matemáticas:

Esta opinión es sostenida por el famoso Edsger W. Dijkstra y el legendario Donald Knuth y muchos más. Si mantiene esta vista, entonces hay mucho que aprender y muchos recursos están disponibles. La mayoría de las personas le dirán que aprenda sobre bases de datos, sistemas operativos, algunos lenguajes de programación, etc. También le diré lo mismo, sin embargo, de una manera mucho más refinada. Lo que sigue es puramente experiencial. Usted puede o no estar de acuerdo conmigo. Siempre doy la bienvenida a los comentarios constructivos. Así que, aquí va!

Lenguajes de programación:
Los lenguajes de programación son una consecuencia directa de las matemáticas aplicadas. Si no estás de acuerdo conmigo, siempre puedes comprobar cómo John McCarthy “diseñó” el mejor lenguaje del universo, Lisp. Compruebe la venganza de los nerds de Paul Graham. Le respondí qué lenguajes de programación puede aprender aquí: la respuesta de Younis Shah a Soy un principiante en ciencias de la computación, ¿qué lenguaje debería aprender primero?

Teoría de la computación y autómatas:
Si quieres saber respuestas a las preguntas:

  1. ¿Qué puedes calcular en una máquina?
  2. ¿Qué tan eficientemente puedes calcular en una máquina?
  3. ¿Existe una solución eficiente a un problema dado?
  4. ¿Por qué algunos problemas son fáciles de calcular y otros extremadamente difíciles?
  5. ¿Cómo puedes escribir programas que escriban programas?

y mucho más, entonces se supone que debes aprender Teoría de la computación (ToC). Aprender modelos de computación como las máquinas de Turing será fructífero. Si estás interesado en esto, también te recomendaría aprender Cálculo Lambda. Si está abrumado con las matemáticas que se usan en el ToC, debe comenzar con Comprendiendo la computación: de máquinas simples a programas imposibles de Tom Stuart. Una vez que haya terminado, puede pasar a la clásica Introducción a la teoría de la computación de Michael Sipser. También sugeriría tener cierta familiaridad con la ciencia de la complejidad y los autómatas celulares. Puede leer Think Complexity: Complexity Science y Computational Modeling de Allen Downey y A New Kind of Science de Stephen Wolfram.

Bases de datos y “cosas relacionadas con los datos”:
Debo confesar que realmente no me gustan las bases de datos. Sin embargo, dado que estos son los contenedores que contienen datos, y los datos son importantes, debo escribir algo sobre ellos. Puedes empezar con SQL. Pero no creo que eso te sirva de nada. Esto se debe a que SQL trabaja con “datos estructurados”. Los expertos estiman que alrededor del 80 al 90 por ciento de los datos en cualquier organización no está estructurado y crece significativamente más rápido que los datos estructurados. Ingrese NoSQL. Son la nueva generación de bases de datos para datos no estructurados. Existen muchas soluciones NoSQL. Para más información sobre ellos, consulte el NoSQL Distilled de Martin Fowler. Si no lograba convencerte, estoy seguro de que lo hará. Un campo mucho más atractivo es la ciencia de datos y el aprendizaje automático. Para el primero necesitarás estadísticas, un poco de álgebra lineal y algo de probabilidad. Deberías conocer las estadísticas de todos modos, de lo contrario Zed Shaw te matará. Leer Los programadores necesitan aprender estadísticas o los mataré a todos. Usted leyó la increíble Inteligencia Colectiva de Programación: Construyendo Aplicaciones Smart Web 2.0 por Toby Segaran y mi Aprendizaje Automático favorito de los Hackers por Drew Conway y la Ciencia de Datos de Doing: La conversación directa de Cathy O’Neil y Rachel Schutt. También deberías estar bien versado con Apache Hadoop o Apache Spark para las cosas de “Big Data”.

Sistemas operativos:
Además de aprender las “cosas de los sistemas operativos habituales”, también debe saber algo de programación del sistema. Al menos deberías saber:

  • Cómo compilar el kernel de linux.
  • Cómo escribir un módulo de kernel simple.
  • Cómo escribir un controlador de dispositivo.
  • Cómo usar / dev / poll, select, kqueue, epoll IO .
  • Cómo crear un servidor IO HTTP (S) no bloqueante.
  • Cómo implementar un servidor HTTP (S) multiproceso con compatibilidad con el protocolo SPDY.

Puede leer el clásico La Interfaz de programación de Linux: Un manual de programación de sistemas Linux y UNIX por Michael Kerrisk y Amazon.com: Desarrollo del núcleo de Linux (3ª edición) por Robert Love.

Lo normal:
A los algoritmos, estructuras de datos y matemáticas discretas los llamo “lo usual”. Son tan importantes que un chico de CS que no sabe The Usual está destinado a convertirse en el combustible del Inferno de Dante. No tengo las palabras para enfatizar su importancia. USTED DEBE SABER LO USUAL . Se han escrito algunos libros fantásticos sobre The Usual. Puedes leer lo siguiente:

Introducción a los algoritmos por CLRS
Algoritmos de Richard Johnsonbaugh y Marcus Schaefer
El arte de la programación informática, Vols. 1-3 por Don Knuth
Algoritmos desbloqueados por Thomas Cormen
Algoritmos de R. Sedgewick y K. Wayne
El manual de diseño de algoritmos por Steve Skiena
Algoritmos de Sanjoy Dasgupta, C. Papadimitriou, Umesh Vazirani
Introducción al diseño y análisis de algoritmos por Anany Levitin
Estructuras de datos y algoritmos en Java por Adam Drozdek
Matemáticas discretas y combinatorias: una introducción aplicada por R. Grimaldi
Matemáticas discretas con aplicaciones por Thomas Koshy

Red de computadoras:
No soy un tipo de red. Sin embargo, si hay algo que debe saber es el protocolo HTTP (y el SPDY de Google (pronunciado como “speedy”)). Además, debería tener algo sobre los Modelos de propagación de virus en las redes de computadoras . Puede leer el impresionante HTTP: The Definitive Guide por David Gourley et al.

Los otros tipos:
Deberías saber sobre (mi top 3):

  • Motores de búsqueda (PageRank de Google y más allá: la ciencia de las clasificaciones de los motores de búsqueda)
  • Concurrencia (Amazon.com: El arte de la concurrencia: Guía de Thread Monkey para escribir aplicaciones paralelas)
  • Máquinas Virtuales (Máquinas Virtuales)

Vista 2: La computación como un proceso físico:
Esta opinión fue sostenida por el gran Richard Feynman, Yuri Manin, David Deutsch, R. Jozsa, Peter Shor y los otros gigantes. Estoy hablando de Quantum Computing (QC) . No puedo decirles aquí qué es el control de calidad, pero sí puedo decirles que hay mucho terreno que cubrir en este campo, lo que significa una investigación más aguda, lo que significa fama instantánea. Échale un vistazo. Estoy seguro de que te enamorarás de él ( tal vez incluso te separes si estás en una relación ). Necesitas saber algo de Álgebra Lineal (Espacios de Hilbert, Descomposición de Gram-Schmidt, Teorema espectral y similares), principios de la Mecánica Cuántica para comenzar. Mi colección personal incluye:

Álgebra lineal hecho a la derecha por S. Axler.
Métodos matemáticos en las ciencias físicas por Mary Boas.
La mecánica cuántica: el mínimo teórico por L. Susskind
Cálculo cuántico e información cuántica por Nielsen y Chuang
La computación cuántica: una suave introducción por Rieffel & Polak
Computación cuántica para científicos de la computación por Yanofsky y Mannucci
Quantum Computing Without Magic: Devices por Zdzislaw Meglicki.

Yo personalmente sostengo la vista 2.

¡Espero que esto ayude!

Estadística. Con el aumento de HCI, el “big data” y el aprendizaje automático, las estadísticas tienen un papel central en muchos aspectos de la informática. Las personas que lo dominen lo harán mucho mejor que las personas que no lo tienen.

Elija un solo idioma, ya sea C / C ++ o java. Leer a través de la estructura de datos y algoritmos muy profundamente. Comienza a resolver los problemas que la gente pregunta en grandes entrevistas como Amazon o Google o Microsoft. Siempre manténgase en contacto con el sitio web Preguntas de entrevista de programación | CareerCup.
Lo anterior es tomar un buen trabajo.

Ahora, según tu interés, puedes seguir cualquiera de los temas que te gustan.

Definitivamente la programación.
Trate de leer sobre estructuras de datos y algoritmos.
Con experiencia en un idioma y tratar de explorar temas como el sistema operativo, la arquitectura de la computadora, DBMS y redes.

  • Aprende sobre la vida.
  • Aprende sobre ti mismo, tus intereses y tus debilidades / fortalezas.
  • Aprender que ser un estudiante de CSE no significa que hagas todo lo que hacen los demás estudiantes de CSE.

Aprender, Cómo hacer amigos e influir en las personas.

1 / Aprender a ser humilde.
2 / Aprende a ayudar a los que son más débiles que tú en la universidad
3 / Aprende a respetar a tus padres y amigos.
4 / Aprende a expresar gratitud a Dios, ya que has estado entre los pocos afortunados que han podido seguir tu educación.

Pruebe y busque proyectos en línea y hágalos … aprenderá mucho y para cuando esté en la industria, tendrá una muy buena experiencia.