¿Cuál es la habilidad más importante para aprender en la universidad para una carrera de CS?

La universidad es un lugar con cursos, currículo e instructores. También es su mejor oportunidad en la vida para aprender todo lo que quiera con excelentes instalaciones y compañeros que hacen lo mismo.

Hay dos habilidades con las que un estudiante de CS debe abandonar la escuela.

  1. La capacidad de enseñarse a sí mismos cualquier cosa.
  2. La capacidad de abordar problemas imposibles sin desanimarse.

Estas son realmente habilidades. No te los enseñan en la escuela, pero son críticos para el éxito como ingeniero de software.

En los lugares donde trabajo, me enfrento a problemas que nunca había visto y que no tengo idea de cómo abordar. Una experiencia de por vida me ha demostrado que casi todos los problemas se pueden resolver de manera significativa con un poco de tiempo y esfuerzo. Es una cuestión de no sentirse intimidado, avanzar y aprender las cosas que necesita aprender a hacerlo. Incluso después de casi 30 años en la industria, todavía estoy aprendiendo todos los días.

La universidad es el lugar para comenzar con esto, si aún no lo ha hecho. Busca y aborda problemas nuevos e interesantes. Trate de hacer cosas que usted (u otras personas) piensan que son imposibles. Incluso si fallas, este es un entorno donde haber aprendido de él será suficiente.

Como efecto secundario, obtendrá una excelente codificación y resolución de problemas, y aprenderá mucho más de lo que solo sus clases pueden enseñarle.

Aprende a ser intrépido, y a enseñarte a ti mismo. Este es el camino común hacia el éxito para los informáticos.

Las habilidades más importantes que debes dominar en la universidad como CS son la estructura de datos y los algoritmos.

Lo más probable es que este sea un curso o serie de cursos que debes tomar entre tu segundo año y el último año de universidad. Operando bajo el supuesto de que desea trabajar para una empresa de tecnología conocida después de la graduación, el material cubierto en estos cursos será crucial para su éxito en la obtención de un trabajo después de la graduación.

Digo que obtener porque el contenido cubierto en estos cursos es generalmente el tipo de material que deberá comprender para tener un buen desempeño en las entrevistas técnicas. En una posición de ingeniería de software, se puede hacer cualquier cosa, desde escribir código repetitivo, escribir documentación, investigar cómo implementar una nueva estructura o marco, nada de esto requiere una comprensión profunda y fundamental de las estructuras de datos o algoritmos, pero esto es lo que las compañías buscarán. para cuando te traen para una entrevista.

Dicho esto, es importante que tenga una comprensión sólida de la mayoría del material incluido en estos cursos.

Estructuras de datos

  1. Tablas de hash y mapas de hash
  2. Listas enlazadas simples y dobles
  3. Cuerdas y matrices (y cómo manipularlas)
  4. Árboles (diferentes tipos, para qué sirven, cómo se implementan y se atraviesan)
  5. Gráficos (dirigidos y no dirigidos)

Nota: también debe saber cuándo y dónde usar estas estructuras, dada una declaración de problema (es decir, diseñar un caché LRU a mano).

Algoritmos : esto no es una lista de algoritmos, sino una lista de los tipos de algoritmos que deberá comprender.

  1. Codicioso
  2. Divide y conquistaras
  3. Programación dinámica
  4. NP-Completo
  5. Aproximación

Nota: Además de comprender conceptualmente cada uno de estos tipos de algoritmos, también se espera que comprenda su complejidad de tiempo y espacio, también conocida como Big-O. Esto aparecerá en las entrevistas a menudo, así que hazlo bien.

Las estructuras de datos y los algoritmos están relacionados entre sí: para implementar un algoritmo, lo más probable es que tenga que utilizar una estructura de datos. Las entrevistas generalmente consistirán en que usted diseñe un algoritmo y seleccione la estructura de datos correcta para acompañarlo. En el núcleo de este contenido está la resolución de problemas.

Resolver problemas es la habilidad más importante que debes aprender para obtener tu título.

Un área que una especialización en CS (y las de otras especialidades) podría aprender es la relación interpersonal. Hay clases en la universidad para esto.

Demasiadas personas quedan atrapadas en objetos inanimados (computadoras, teléfonos celulares, televisores, etc.), códigos y similares, que no tienen habilidades sociales y no pueden hablar de otros temas además de los algoritmos más nuevos, etc. ni saben cómo interactuar. con compañeros de trabajo, gerencia et. Alabama.

Los graduados de CS (y los que trabajan en la industria) a veces se ven tan atrapados en su (s) proyecto (s) de codificación que se convierte en una parte tan importante de su vida que puede interferir con las entrevistas de trabajo y una vida social en la que se desarrollan diversos temas de discusión donde ellos no tienen ni idea Cuando uno se ve como un ciervo en los faros, no es una buena señal. Demasiados solo saben cómo codificar y comer bocadillos (comida rápida durante largas horas, p. Ej., Pizza, hamburguesas, papas fritas, etc.) para no ser demasiado buenos con un cuchillo y un tenedor. Sé que algunos dirán que soy estereotipo. Tal vez hasta cierto punto, pero lo he visto así, si el zapato encaja …

El otro (s) es la gestión del tiempo, gestión de proyectos o ambos. Estas materias también están disponibles en la universidad. Tal vez incluso tome un curso general de negocios para obtener una apreciación de la toma de decisiones empresariales.

Las empresas están en el negocio de ganar dinero, por lo que a veces es bueno pedir ayuda a otras personas según sea necesario para maximizar la productividad y, en última instancia, la rentabilidad de su empleador (o de su propio negocio en el futuro). Pedir esto en vano o incluso querer aprender más no es negativo, excepto para aquellos que están buscando maneras de menospreciar a alguien para que se sientan mejor.

Las cosas más importantes que aprender y las habilidades que se deben mejorar para una cs major son:

1) Estructura de datos y algoritmo

2) Tener un concepto claro sobre OOP.

3) Base de datos: saber cómo unir tablas y algunos otros comandos básicos de sql.

4) Adquirir habilidades para resolver problemas al participar en concursos de programación en línea o en el sitio en Acm / Uva / Hackerrank, etc.

5) Obtenga información sobre los diferentes patrones de diseño utilizados en el análisis de sistemas de software, como singletone, fachada, etc.

Honestamente, solo aprenda a resolver problemas (lo sé, es más fácil decirlo que hacerlo, pero podría escribir un libro completo sobre ese tema). Una parte sorprendentemente pequeña del trabajo práctico de Ciencias de la Computación gira en torno a la codificación en realidad. Diría que más del 75% del trabajo consiste en utilizar habilidades efectivas de resolución de problemas. No me malinterprete, es importante tener experiencia técnica, pero usted será mucho más valioso para cualquier empresa si puede hablar efectivamente con un cliente, trabajar con ellos para identificar sus problemas de manera efectiva y luego diseñar y aplicar una solución adecuada. con el usuario final en mente.