Te estoy dando algunos mínimos. Aquí hay algunas cosas que DEBE saber:
1. Estructuras de datos
No creo que pueda abarcarlos todos aquí, pero deberías saberlo todo, desde matrices simples y listas vinculadas hasta montones de Fibonacci y más. Algunos increíblemente importantes son matrices, listas vinculadas (colas y pilas), árboles binarios, que usan mapas de bits, árboles binarios, árboles B, montones, intentos, tablas hash y gráficos.
2. Algoritmos
De nuevo, no puedo nombrarlos a todos, pero aquí hay algunos. Además, las complejidades asociadas con los algoritmos generales que involucran las estructuras de datos anteriores son muy importantes. Algunos importantes son Dijkstra, Prim, Kruskal, Breadth first search, Depth first search, todos los algoritmos de Clasificación, divide y vencerás, algoritmos codiciosos y programación dinámica. Podría haber dejado de lado algunos, pero eso es un resumen general.
3. Idiomas / tecnologías
Estos son los conceptos básicos. En cuanto a los idiomas, debes conocer un idioma realmente bien al menos. Sin embargo, es bueno saber más y comprender las diferencias entre ellos. Algunos idiomas primarios comunes para saber son
1. Java
2. C / C ++
3. Python
Además de estos idiomas primarios, personalmente creo que, como estudiante de informática, debes estar familiarizado con las siguientes tecnologías:
1. Scripting de shell (regex, grep, awk, sort, uniq y otros)
2. Github / SVN (un sistema de control de versiones)
Además de esto, en lo que respecta a los paradigmas de programación, definitivamente debe tener un lenguaje orientado a objetos al menos (como se indicó anteriormente) además de un lenguaje funcional , que puede significar cualquiera de los siguientes
1. Scala
2. ML estándar
3. Haskell
4. OCaml
5. Lisp
6. Clojure
Esta lista definitivamente no es exhaustiva, pero como experto en CS, se espera que tenga conocimiento de un lenguaje funcional.
4. Especialidad
Ahora, como estudiante de CS, al graduarse, se espera que tenga un enfoque en el interés. Esto puede ser desde gráficos hasta inteligencia artificial, sistemas, lenguajes de programación, bases de datos, ingeniería de software, interacción humano-computadora, redes, ciencias computacionales, teoría, desarrollo web o diseño de juegos. Creo que los he cubierto todos, pero definitivamente debería tener un nicho en al menos una de las áreas anteriores. La investigación académica extracurricular es siempre una buena idea tener en tu haber.
Estos son los conceptos básicos. Sin embargo, cuando se trata de buscar trabajo, el proceso de selección no hace justicia a su educación. Hasta donde yo sé, las cosas que buscan son:
1. GPA
2. Experiencia laboral previa e investigación
3. Ciertos lenguajes de programación según su proyecto
4. Conocimiento de preguntas generales de codificación para entrevistas (estructuras de datos + algoritmos)
Gran parte del proceso es basura. Me gusta pensar que es una tabla de verdad. A veces su entrevista va bien, y usted consigue el trabajo, a veces va bien y no consigue el trabajo, a veces lo hace mal y no consigue el trabajo, y a veces, si tiene suerte, lo hace mal y todavía conseguir el trabajo
- ¿Con qué frecuencia una relación entre dos técnicos de software enfrenta un choque ideológico, especialmente cuando uno es de una empresa de servicios y el otro de una empresa de productos de primer nivel?
- ¿Dónde puedo encontrar probadores de control de calidad independientes en Canadá?
- ¿Puedo ser desarrollador web haciendo ingeniería de software?
- ¿Cuánto costará construir un aula virtual?
- ¿Existe una herramienta / marco para tareas distribuidas administradas por recursos?