Cómo ser un gran científico de la computación y qué cursos debo tomar para pasar de un nivel principiante a un nivel avanzado

Hay algunos temas que todo programador debe dominar. Otras opciones de temas dependerían de lo que específicamente quiere enfocar. La informática es, después de todo, un tema increíblemente amplio.

Conceptos básicos: algoritmos, estructuras de datos, teoría de la complejidad básica, bases de datos, diseño orientado a objetos, programación paralela, y si realmente desea ser un programador inteligente, la programación funcional (Haskell siempre es una buena opción).

Es absolutamente necesario sentirse cómodo con el control de versiones si aún no lo ha hecho. Es útil incluso si estás trabajando en un proyecto por ti mismo. Si es posible, practique realizando sus tareas y proyectos personales con algún tipo de configuración de control de versión. Git es fantástico. Perforce no es malo.

Si desea un enfoque teórico: algoritmos avanzados, teoría de complejidad avanzada, teoría de lenguajes / semánticos de programación, teoría de la información, teoría de autómatas. Por supuesto, hay subfocos dentro de la CS teórica que puedes descubrir por ti mismo, pero estos son los conceptos básicos.

Si desea un enfoque más centrado en los sistemas: arquitectura de computadoras, sistemas operativos, sistemas distribuidos, implementación de bases de datos, análisis de rendimiento. También adquirí la mayor experiencia posible al implementar y depurar programas paralelos; esos errores son difíciles de anticipar y encontrar.

Si está interesado en el desarrollo web: HTML, Javascript, Ruby, SQL, Node.JS y diseño de interfaz de usuario.

Hay muchas otras posibilidades para las áreas en las que centrarse: hay muchas investigaciones interesantes en aprendizaje automático, visión computacional, criptografía, computación cuántica y mucho más, pero espero que esto le brinde algunas ideas.

Para comenzar una carrera en la programación, primero debe tener la mejor mentalidad y los conceptos básicos de la programación, y saber cómo pensar de manera programática y lógica para poder entender la mayoría de los tipos de algoritmos …

Para empezar, recomiendo un curso llamado CS50 por la Universidad de Harvard y está disponible de forma gratuita en edX

Este es el mejor curso y el más ideal que le ofrece la mejor mentalidad de programación … Este curso debería tomar un máximo de 4 meses, pero solo si estaba entusiasmado y decidido a terminarlo … Porque no es un curso corto … Lo bueno del curso es que lo examina en lo que aprendió de las conferencias con un problema para resolver, escribiendo su código en C y en un entorno especialmente conveniente: el “Dispositivo CS50”, que es un sistema operativo diseñado especialmente para el curso. con todos los archivos y bibliotecas requeridos, se instala en una caja virtual, lo que significa que no tiene que desinstalar su sistema operativo actual. Además de toda la diversión que tendrá durante el curso, una buena comunidad, fabulosas conferencias, impartidas por el Prof. David J. Malan, y créame que tiene un buen sentido del humor 🙂 ¡Se reirá mucho mientras aprende!

Después de terminar el curso CS50, ahora tendrá todas las habilidades para aprender y comenzar una carrera en un nuevo lenguaje de programación y ser un profesional e ingeniero de software. Recomiendo cursos de Udemy y Treehouse. Son realmente geniales, simples y están siendo instruidos por profesionales, sin embargo, encontrar un curso para un lenguaje de programación específico no será un gran problema porque ya tienes la mentalidad de CS50. Lo que estoy tratando de decir es que incluso si el curso al que asististe no es bueno, no será un problema para ti. Solo necesitarás los aspectos principales del lenguaje, la sintaxis, las partes difíciles y las características especiales, etc. Entonces estarás listo.

Ya tienes un buen conocimiento de C ++, por lo que CS50 sería fácil, y otros cursos serán muy fáciles para ti …
Para mejorar su rendimiento y uso del idioma, intente asistir a concursos en línea como Google Code Jam, HackerRank Contests, TopCoder, etc.

¡Buena suerte!
PD: Hay otro buen curso en edX casi igual que CS50, se instruye en MIT … Pero, solo probé CS50 y ¡ROCO!

Big Data es oportuno : el 60% de cada día laboral, los trabajadores del conocimiento pasan intentando encontrar y administrar datos.

  • Big Data es accesible : la mitad de los ejecutivos senior informan que acceder a los datos correctos es difícil.
  • Big Data es holístico : la información se guarda actualmente en silos dentro de la organización. Los datos de marketing, por ejemplo, se pueden encontrar en analítica web, analítica móvil, analítica social, CRMs, herramientas de prueba A / B, sistemas de marketing por correo electrónico y más … cada uno con enfoque en su silo. Puede visitar este enlace más información: Cursos de Big Data sobre datos de Intellipaat de fuentes tradicionales:
  • Big Data es confiable : el 29% de las empresas mide el costo monetario de la mala calidad de los datos. Cosas tan simples como monitorear múltiples sistemas para actualizaciones de información de contacto con el cliente pueden ahorrar millones de dólares.
  • Big Data es relevante : el 43% de las empresas no están satisfechas con la capacidad de sus herramientas para filtrar datos irrelevantes. Algo tan simple como filtrar a los clientes de su análisis web puede proporcionarle un montón de información sobre sus esfuerzos de adquisición.
  • Big Data es seguro : la brecha de seguridad de datos promedio cuesta $ 214 por cliente. Las infraestructuras seguras que están siendo construidas por los socios de hosting y tecnología de big data pueden ahorrarle a la compañía promedio el 1.6% de los ingresos anuales.
  • Big Data es de autoría : el 80% de las organizaciones luchan con múltiples versiones de la verdad según la fuente de sus datos. Al combinar múltiples fuentes verificadas, más compañías pueden producir fuentes de inteligencia altamente precisas.
  • Big Data es accionable : los datos obsoletos o incorrectos hacen que el 46% de las empresas tomen malas decisiones que pueden costar miles de millones.

En los viejos tiempos … ya sabes … hace unos años, utilizaríamos sistemas para extraer, transformar y cargar datos (ETL) en almacenes de datos gigantes que tenían soluciones de inteligencia empresarial incorporadas para los informes. Periódicamente, todos los sistemas realizarían copias de seguridad y combinarían los datos en una base de datos donde los informes podrían ejecutarse y todos podrían tener una idea de lo que estaba sucediendo.

El problema era que la tecnología de la base de datos simplemente no podía manejar múltiples flujos continuos de datos. No podía manejar el volumen de datos. No pudo modificar los datos entrantes en tiempo real. Y faltaban herramientas de informes que no podían manejar nada más que una consulta relacional en el back-end. Las soluciones de Big Data ofrecen alojamiento en la nube, estructuras de datos altamente indexadas y optimizadas, capacidades automáticas de archivo y extracción, y las interfaces de informes han sido diseñadas para proporcionar análisis más precisos que permiten a las empresas tomar mejores decisiones.

Mejores decisiones de negocios significa que las empresas pueden reducir el riesgo de sus decisiones y tomar mejores decisiones que reduzcan los costos y aumenten la efectividad de las ventas y el marketing.

El Big Data es muy difícil de aprender. Y muchas compañías están usando ese método en su organización. Todo el concepto de big data, o datos totales, y cómo recopilarlo y enviarlo al lago de datos puede parecer aterrador, pero se vuelve menos, por lo que si divide el problema de la recopilación de datos en subconjuntos. La contabilidad de sus sistemas transaccionales, los sistemas de recursos humanos, etc. ya se están utilizando como fuentes de datos para el análisis. Los procesos de ETL ya están implementados para recopilar estos datos. Básicamente terminas con dos opciones. Duplique estos procesos ETL, cambie el objetivo de la EDW al lago de datos, o replique su EDW en el lago de datos, copiando físicamente los datos, o prácticamente abrazando la arquitectura del lago de datos virtual (una variación del almacén de datos virtual) .

Datos estructurados de Internet de las cosas: la principal complejidad con el sensor y otros datos de la máquina es el volumen y el rendimiento requerido para una ingesta adecuada y oportuna. Pero estos datos generalmente están muy estandarizados y los requisitos de transformación de datos en sentido ascendente no son inmensos.

Datos no estructurados: la recopilación de archivos de medios, datos de texto es una cosa que se facilita con las plataformas de big data como Hadoop. Debido a que su almacenamiento no tiene esquema, todo lo que se necesita es realmente “volcar” estos datos en el lago de datos y descifrarlos más adelante. Dadas las herramientas ETL y los API / conectores adecuados, así como el rendimiento correcto, la recopilación de grandes datos no está No es la parte más difícil de la ecuación de big data.

Almacenamiento de datos: las plataformas de datos grandes son polifamorfos: pueden almacenar todo tipo de datos, y estos datos se pueden representar y acceder a través de diferentes prismas. Hay una respuesta para cada almacenamiento y acceso a datos, desde el almacenamiento de archivos simple hasta las bases de datos no-SQL de consistencia relajada hasta las bases de datos relacionales Third-Normal-Form e incluso Fifth-Norm-Form. necesidad. Debido a sus conceptos de diseño fundamentales, la plataforma es infinitamente vendible. Aprovisionala en la nube, y se vuelve elástica. Conceptualmente, al menos, almacenar big data es la parte más fácil de la ecuación de big data. Donde se vuelve complicado es cómo hacer que funcione en la realidad. Desde la plataforma central de Hadoop hasta las distribuciones comerciales y las plataformas híbridas ofrecidas por los proveedores de bases de datos, hay muchas opciones, muchos precios, muchas variaciones diferentes del concepto y muchos niveles de habilidad requeridos.

Uso de los datos: una vez que tenga todos estos datos en el lago de datos, ¿cómo los reúne? Transformar y conciliar datos, garantizar la coherencia entre las fuentes, verificar la calidad de los datos: esta es la parte más difícil de la historia de big data y donde hay menos automatización y ayuda disponibles. Si necesita crear una aplicación sobre un dato específico fuente o para informar sobre un conjunto de datos coherente, existen muchas soluciones que automatizarán el proceso y lo harán transparente. Pero cruzando los límites de las fuentes, explore y aproveche datos heterogéneos, aquí es donde se encuentra por su cuenta. Y aquí es donde los proveedores que afirman facilitar los grandes datos deben intervenir y ayudar.

Esta lista es larga y muy completa.

Hay un montón de excelentes videos y recursos en línea para que aprendas a programar. Trataré de darle la respuesta más completa para ayudarlo a comenzar. Creo que deberías poder obtener un buen conocimiento al usar estos cursos. Dicho esto, esto depende en gran medida del tipo de programación que desee realizar. Voy a tratar de darte un poco de todos los mundos para que tengas algunos lugares a los que ir a medida que repasas las cosas.

Esto es lo que creo que necesitas para el éxito:

  • Buen curso, clase, libros, etc.
  • Mentor / Tutor
  • Preparación para la entrevista. Echa un vistazo a este libro: (Cracking the Coding Interview: 150 Preguntas y soluciones de programación: Gayle Laakmann McDowell: 9780984782802: Amazon.com: Libros) Esto debería ayudarte a estar listo para pasar las entrevistas. Todos son diferentes, pero este es un gran lugar para comenzar.

Creo que es clave para que aprendas CÓMO pensar para poder programar. Programar es simplemente resolver problemas. Así que aprenda cómo resolver estos problemas y luego conozca la sintaxis / cómo escribir el código. Aprender programación nunca termina.

1. Stanford en iTunes U – Curso gratuito de Stanford en iTunes U
Este curso aún no se ha actualizado para iOS 9, pero es un buen recurso para comenzar a ensuciarse las manos ¡Y es gratis! Han hecho un gran trabajo y han lanzado un curso famoso. Es de fácil acceso y te da la sensación de que estás en un curso universitario que está aprendiendo sobre el desarrollo de iOS.

2. Universidad de Harvard – Ciencias de la Computación
Tienen una serie de cursos para que usted elija la forma y esto debería darle un gran lugar para comenzar a elegir el lenguaje de programación que desea aprender.

3. Udemy – Udemy: cursos en línea en cualquier momento y en cualquier lugar
Udemy tiene una amplia gama de cursos para todo tipo de programación. Los videos se pueden descargar para verlos sin conexión, los foros para recibir ayuda son maravillosos y usted obtiene acceso de por vida. Tienen un montón de cursos con más que se lanzan día tras día. Este sitio web está haciendo una gran mella en la industria del aprendizaje en línea.

Descargo de responsabilidad: Tengo un curso sobre Udemy. Creo que es el mejor curso en internet para aprender a programar. Además del acceso de por vida, ofrecemos ayuda personal y tutoría, lo cual es clave para el aprendizaje. Muchas veces las personas se atascan y no pueden resolverlo. Hemos eliminado ese problema al ayudarlo a pasar de ser un principiante a construir sus propios proyectos. iOS 9 y Swift 2: de principiante a profesional pagado

4. Khan Academy – Khan Academy
La academia Khan ha hecho un trabajo maravilloso y simplemente busca el idioma que desea aprender, y tendrá miles de cursos emergentes.

5. Lynda – Video tutoriales online y entrenamiento
Tienen una amplia gama de cursos y toneladas de cursos de programación. Esta es una empresa de LinkedIn y está muy bien organizada. Recibe una prueba y luego necesita pagar una membresía mensual para acceder. Si tienes el dinero, este está en mis 3 sitios web principales para aprender casi cualquier cosa.

6. Team Treehouse – Aprende diseño web, desarrollo web y más | Casa del árbol
Esta es una plataforma muy asequible y está teniendo un gran impacto en el mundo de la programación. Los videos son exhaustivos, se puede decir que están programados. Esto cuesta dinero, pero tienen un programa de referencia increíble para obtener una membresía gratuita.

7. http://code.org
Estos chicos también tienen una amplia gama de clases / tutoriales. Muy divertido, interactivo y bien organizado. Todavía he tenido que pagar por nada en este sitio web. Si nunca antes has programado, tienen una aplicación increíble que te permite programar por una hora para que entres en la puerta.

8. Udacity – Catálogo de cursos – Udacity
Estos muchachos tienen un conjunto bastante sólido de cursos que te ayudarán a ponerte en marcha.

9. Coursera – Página en coursera.org
Coursera tiene una gran cantidad de cursos y brillan al hacer que sea más una experiencia universitaria con cursos impartidos por universidades y profesores. Este es un lugar maravilloso para ir

10. Libro – Programación de iOS: La guía de Big Nerd Ranch
Este no es un sitio web o un curso, pero es uno de los mejores libros del mercado. Recomiendo encarecidamente tener esto a tu lado mientras aprendes.

11. Documentación de las manzanas – Introducción
Si desea volverse un poco salvaje, puede profundizar en la documentación de Apple y comenzar a desglosar las cosas.

12. NShipster – NSHipster
Gran sitio web en línea para profundizar más en el desarrollo de iOS.

13. Javascript libros –
Nuevamente, esto no está en línea, pero puede ser bueno tenerlo para este tipo de programación si alguna vez decide tomar algunos libros.

  • Libro: Los secretos del ninja de JavaScript.
  • Libro: JavaScript elocuente
  • Libro: JavaScript: La Guía Definitiva

14. AppleTV Tutorial
Este es un tutorial que creamos para ayudar a aquellos interesados ​​en profundizar en AppleTV.

15. Resolución de problemas – Acerca de – Proyecto Euler
La programación es mucho acerca de la resolución de problemas. Este es uno de los sitios web más populares para resolver algunos problemas y hacer que su mente piense de cierta manera.

16. Code Wars – Página en codewars.com
Este es un sitio web tan divertido. Te da una pequeña prueba en la que tienes que pasar algunas preguntas de programación para poder registrarte. Divertido lugar para ir y practicar.

17. Code School – Aprende a codificar haciendo – Code School
Otro lugar maravilloso para ir. Esta es una compañía de Pluralsight y un buen recurso para una amplia gama de cursos.

18. Pluralsight – Desarrollador, TI y formación creativa por profesionales
La mayoría de estos cursos están orientados un poco más a lo largo del código de aprendizaje y los realizan profesionales de la industria. Puede ser un poco caro, pero es un gran lugar para ir a solidificar realmente su aprendizaje.

19. Skillcrush – Las habilidades digitales son habilidades de trabajo
Esto se asemeja mucho a un aula y sería muy beneficioso mientras aprendes.

20. Los vengadores del código – Los vengadores del código
CodeAvengers lo guía a través de cada paso en un proceso muy fácil de seguir. Las tareas no son tan difíciles como para que sientas la necesidad de “hacer trampa”, pero tampoco son tan fáciles, solo quieres copiar rápidamente la respuesta.

21. Tuts Plus – Tuts +
Tienen cursos para todo tipo de cosas, desde diseño web hasta gráficos, etc. Incluso los profesionales de su industria deberían poder tomar cursos aquí para promover su aprendizaje y conocimiento.

22. Skillshare: domina las habilidades del mundo real con proyectos prácticos.
Este es otro sitio web para todo tipo de habilidades basadas en la creatividad. Tienen algunos buenos lugares para comenzar en lo que respecta a la programación.

23. Mijingo – Aprende Desarrollo y Diseño Web – Mijingo
Recurso en línea que presenta tutoriales en video paso a paso.

24. SitePoint – SitePoint
Esto ofrece una base de datos cada vez mayor de cursos y libros para aquellos que desean aprender.

25. CodeMarina – Aprende a codificar | CoderMania
Se supone que este es uno de los mejores recursos disponibles. Todavía está en beta sin embargo.

26. Alison – Cursos en línea gratuitos y aprendizaje en línea de ALISON
Esto se parece mucho a Coursera y tiene muchos cursos en línea más enfocados en brindarte la experiencia de tipo universitario.

En general, esto debería darle toneladas de recursos y lugares para ir. Estoy más que feliz de poder ayudarte de cualquier manera posible. Por favor, echa un vistazo a mi curso, ofrecemos ayuda en vivo y tutoría que puede cambiar el juego mientras aprendes a programar.

*************************************************** *********************

Kevin Flint es un veterano vendedor, mentor, programador y entrenador con un curso de iOS más vendido para ayudar a las personas a convertirse en desarrolladores profesionales de iOS:

iOS 9 y Swift 2: de principiante a profesional pagado

Kevin Flint (@ kflint2) | Gorjeo

*************************************************** *********************

Si ya ha tomado sus cursos básicos de informática y ha cumplido con los requisitos de graduación, es posible que desee considerar un curso tan alejado de la informática como posiblemente pueda imaginar. Te queda un año en tu educación de pregrado. No sería inusual que su vida después de la graduación esté muy centrada en aspectos específicos. Si va a la escuela de posgrado, obtendrá experiencia en un subcampo específico. Si va a trabajar en la industria, puede obtener algún conocimiento sobre el dominio relacionado con lo que está construyendo, pero su enfoque principal será en perfeccionar su oficio: crear software.

Dos de los cursos que mejor recuerdo de mi licenciatura en CS fueron en los departamentos de Historia y Recreación, Deportes y Turismo de mi escuela. Ambos fueron durante mi último año y fueron los cursos que decidí tomar porque cumplían con los requisitos menores y tenían un horario semanal conveniente para mí. Yo era escéptico al decir lo menos. Confiaba en que iba a estar perdiendo el tiempo. Más aún porque estaba paranoico con respecto a mi GPA que por interés genuino, tomé el trabajo del curso en serio, completé las montañas de lecturas y puse tiempo y pensamiento en las tareas. Al final de ambos cursos los estaba disfrutando. Estaba aprendiendo cosas nuevas. No creo que hubiera aprendido estas cosas en mi propia posgrado.

Es importante recordar que si va a investigar, afiliarse a una empresa o crear una empresa, trabajará con otras personas. Estarás de acuerdo y en desacuerdo con ellos por razones que no puedes entender analíticamente. Vas a encontrar situaciones en las que el conocimiento de CS no puede ayudarte. El objetivo final de trabajar en un campo relacionado con la informática es casi siempre algo más . Incluso si terminas haciendo una investigación de minería de datos, alguien más aplicará tu trabajo para hacer más felices a los dueños de mascotas, ayudará a los consumidores a evitar las tarifas de las aerolíneas o creará una aplicación móvil que transmita tus errores tipográficos de forma anónima a un grupo aleatorio de personas que no conoces. . La amplitud más allá de su especialidad le presentará nuevas formas de mirar las cosas. Te ayudará a crecer en tu comprensión de las personas. Y aprenderá acerca de las áreas de problemas donde la informática puede pero no se ha aplicado. Será recompensado.

Después de que te gradúes, el tiempo que tienes para dedicarte a aprender algo más será limitado. Aprovecha la oportunidad que tienes ahora. Aprende algo nuevo. Déjate sorprender. Y disfrútalo.

Haces de la programación tu hobby.

1. Encuentre los blogs y listas de correo de big data / minería de datos y comience a seguirlos. Eso le dará una comprensión de lo que la comunidad considera problemas no resueltos.

2. Encuentre una herramienta de minería de datos / datos grandes de código abierto y comience a dominarla. Entonces encuentra otro.

3. Con su conocimiento de problemas y herramientas, encuentre un conjunto de datos de código abierto y comience a hacer ciencia.

Ahora, cuando va a la entrevista, ya no es otro candidato sin rostro de una escuela mediocre. En cambio, eres el tipo (no específico de género) que descargó Wikipedia y creó un nuevo algoritmo de detección de calcetines, o el tipo que repasó las prospecciones del cielo de la NASA y encontró media docena de asteroides previamente desconocidos. O clonó proyectos de 10k GitHub e hizo una encuesta de errores de codificación.

tl; dr: Si desea realizar un trabajo de minería de datos, debería hacerlo ahora. Por diversión. Porque es realmente genial. De esa manera, cuando se presente en la entrevista, puede decir “Hago esto por diversión y déjame mostrarte algunos de mis resultados recientes”. Eso lo hace una decisión de contratación mucho más fácil que la de alguien que pasó tres semanas en un proyecto de clase de minería de datos.

Verificación de la realidad: MIT es una de las escuelas más competitivas del planeta. Solo aceptan lo mejor de lo mejor y se necesitan más de 4 años para que un estudiante se gradúe (si no se lavan). ¿Esperas seriamente alcanzar el mismo nivel de competencia por tu cuenta en 1 año? Podría ser teóricamente posible, pero de todos modos, si eres tan inteligente, deberías poder obtener una beca completa para el MIT.

Incluso si vas al MIT, no puedes convertirte en un buen programador en 1 año. El currículum completo de Comp Sci de MIT está disponible en línea, de forma gratuita. Complete todo lo que pueda en un año y vea cuál es su posición al final de ese tiempo. Si es realista y se aplica, es posible que pueda obtener la competencia suficiente para obtener un trabajo de programación de nivel de entrada que es básicamente un aprendizaje. Luego, si se aplica a sí mismo y elige los cerebros de sus compañeros de trabajo, y pone mucho esfuerzo en perfeccionar su oficio, es posible que pueda llamarse un buen programador en 5 años.

Como alguien que entrevista y contrata a programadores de todos los niveles de habilidad, estoy buscando dos habilidades principales en una entrevista de trabajo:

  1. La capacidad de aplicar el conocimiento de algoritmos, estructuras de datos y, lo más importante, las bibliotecas estándar para resolver problemas reales. No me importa si sabes cómo escribir una tabla hash o una lista vinculada o un b-tree desde cero … esos son problemas resueltos. Lo que espero es que si le doy un problema, puede elegir un conjunto razonable de herramientas y adoptar un enfoque razonable para resolverlo. Si le doy un problema que se resuelve mejor con una tabla hash, y su solución implica implementar una tabla hash desde cero, falla. No te estoy probando tu habilidad para escribir una tabla hash. Le estoy probando su capacidad para reconocer que necesita usar una implementación de tabla hash existente.
  2. La capacidad de pensar analíticamente, desglosar un problema y explicar su enfoque para resolverlo.

Siempre me sorprende lo pocos que pueden completar una tarea de programación básica como la Prueba de Fizz Buzz en una entrevista.

Mi tarea de entrevista es un poco más desafiante que FizzBuzz, pero no mucho … puede resolverse en 6 líneas de código en un lenguaje dinámico como Python, Perl o Ruby; Puede hacerlo en Java o C ++ en aproximadamente 20-30 líneas. Recibí respuestas con soluciones medio correctas que tomaron más de 100 líneas de código.

Los títulos de ingeniería de software acompañan a un juicio equivocado típico, que con frecuencia desalienta a los estudiantes que buscan un título: lo transformarán en un cruncher de código desconectado. Eso no es tanto el caso.

GraduarseLos graduados en ciencias de la computación se ajustan a la ley para una amplia variedad de puestos y vocaciones. En cualquier caso, para garantizar que tiene la combinación correcta de habilidades y comprensión práctica para obtener una, haga su trabajo y elija una forma de vocación antes de elegir un título o programa especializado.

¿Qué consejos para el logro podría proporcionar a aquellos que buscan un título en ingeniería de software? Cuéntanos en los comentarios de abajo.

“La grieta entre el aula y el ambiente de trabajo ha sido un problema”, reconoce el Dr. HE Dunsmore, docente de Ciencias de la Computación y sede del Comité de Currículo y Política Educativa de la Facultad de Ciencias de la Universidad de Purdue.

La oficina de Ciencias de la Computación de Purdue ha encontrado una manera de hacer que los estudiantes más pequeños tomen en cuenta la adaptabilidad de los grados CS. Sus estudiantes tienen la oportunidad de investigar diferentes profesiones y seleccionar una pista instructiva que se adapte a sus inclinaciones.

“Las carreras de ingeniería de software toman un curso en medio de su primer año que aclara las diferentes opciones de profesión y lo que realmente harán a lo largo del día”, aclara Dunsmore. “Además, tienen la oportunidad de mezclarse con nuestros cómplices corporativos, descubrir diversas aperturas para el trabajo y luego seleccionar de una amplia muestra de pistas instructivas en todo, desde ilustraciones hasta seguridad, lo que puede requerir menos matemática o programación”.

En caso de que estés interesado en CS, considera estas cinco cosas:

Conócete a ti mismo: ¿Te gusta trabajar solo o en grupo? ¿Le gustaría trabajar con la innovación de vanguardia o reforzar una unidad especializada en una organización de área privada? En realidad, puede ser un DBA, un investigador de negocios, un diseñador de programación, un experto o un experto en marcos de PC. En cualquier caso, tienes que elegir una vocación y módulos educativos que utilicen tus cualidades académicas. A partir de ahora, menos del 40 por ciento de los estudiantes universitarios de Estados Unidos completan sus estudios de ciencia, innovación, diseño y matemática, y se gradúan con un título. “Si necesita buscar una vocación en la creación de programación, deberá completar los cursos en matemáticas y programación. “, dice el Dr. Larry Davis, educador en el Instituto de Estudios Avanzados en Computación y sede del Departamento de Ciencias de la Computación en la Universidad de Maryland.

Seleccione una carrera sostenible: se confía en que el empleo en todas las ocupaciones de computadoras personales se incremente en un 22 por ciento hasta 2020, sin embargo, algunos campos de TI tendrán un costo superior al de otros, según la actualización bienal de las proyecciones de negocios de la Oficina de Estadísticas Laborales. El soporte técnico y los programas informáticos de escritura aún se están enviando hacia el mar, así que seleccione cuidadosamente. “Trate de no aguantar hasta que tenga una clasificación menor o mayor que en las ferias de trabajo”, propone Davis. “Vaya cuando sea su primer año de reclutamiento para que pueda conocer negocios y enterarse de sus futuras vacantes.

Adquirir habilidades comerciales: puede ser ideal para especializarse en administración de empresas y especialización en ciencias de la computación en el caso de que necesite trabajar en la parte privada, dado que la nube está cambiando la TI y haciendo partes cruzadas en la empresa. según Gartner. La mayoría de los estudiantes de ingeniería de software invierten energía en el ensamblaje de sus propias aplicaciones y marcos particulares, sin embargo las organizaciones no requieren ese tipo de dominio. Las habilidades calientes incorporan frameworks mix, conocimiento empresarial, computación distribuida SQL, .Net, C, dialectos versátiles y Java.

Obtenga experiencia práctica: no puede aprender conceptos básicos de colaboración o negocios al leer un material de lectura. Interésese en las empresas de estudio, el esfuerzo humanitario, los paneles de terrenos y las posiciones temporales para que pueda obtener un entendimiento práctico práctico, intuición de negocios, iniciativa y habilidades relacionales.

Continuar: a la mayoría de los estudiantes de CS se les requiere seis años para obtener un título, ya que muchos abandonaron las clases de matemáticas y programación y, sin embargo, descubrieron cómo tener éxito la segunda vez.

Un científico informático es aquel que tiene conocimientos avanzados de computadoras. Puedes ser un científico de la computación adoptando la programación como un hobby. Para comenzar su carrera en el campo de la programación, tiene la capacidad de pensar de manera lógica y también de entender un tipo diferente de algoritmos.

Cursos que debes tomar

Así que al principio, te recomiendo que estudies en alguna escuela de programación, por ejemplo, la Escuela de Ingeniería de Software de Holberton en San Francisco, donde puedes obtener asistencia de expertos en programación. Ofrecen cursos completos de lenguajes de programación que van desde lenguajes de bajo nivel a lenguajes de alto nivel como C ++, Java, C #, etc. Después de realizar este curso, tiene la capacidad de aprender un nuevo idioma y comenzar su carrera como ingeniero de software. Ahora tienes una idea de qué curso tienes que estudiar para un nuevo idioma.

Después de esto recomiendo cursos de Udemy, Lynda y Team Treehouse. Udemy ha traído una gran revolución en el aprendizaje en línea. Ofrece cientos de cursos y lanza nuevos cursos día a día. También puedes descargar videos de Udemy para aprender. Team Treehouse es también una plataforma de aprendizaje que puede obtener muchos cursos para diferentes idiomas. Esto le costará, pero si tiene un sistema de referencia, obtendrá una membresía gratuita.

Debe mejorar su idioma asistiendo a un concurso en línea como el código de Google, el concurso de clasificación de hackers, etc. Si desea escribir un código de programación complejo, necesita más práctica para hacerlo. Una de mis recomendaciones es aprender de los libros y hacer ejercicio de estos libros. Es muy útil en tu carrera. Como ingeniero no debes tener miedo al trabajo. Construye y desarrolla nuevos sistemas y reconoce sus valores.

en el lado técnico si aún no has tomado:

  1. teoría de la DB relacional
  2. algoritmos y estructuras de datos
  3. programación funcional
  4. oo diseño y programación (programación extrema si se ofrece)
  5. administracion del sistema
  6. administración de la red

Lado no técnico :

  1. cualquier curso que te ayude a cultivar tu creatividad: dibujo, pintura, fotografía (estos cursos también te ayudan a manejar críticas y comentarios)
  2. cualquier curso que lo ayude a navegar y prosperar en entornos de trabajo colaborativos: cómo dar y recibir retroalimentación crítica, organizar reuniones efectivas (revisiones de código, programación de pares, retrospectivas, etc.), presentar sus ideas verbalmente / por escrito, habilidades de escucha activa, empatía
  3. cursos que se relacionan con equipos de liderazgo efectivo o de alto rendimiento: cómo motivar a otros, ser proactivo, ser compasivo, concentrarse, manejar emociones, tener conversaciones difíciles

Tener habilidades cognitivas superiores no es necesariamente el punto de inflexión. Algunos estudios sugieren que las habilidades sociales y emocionales son diferenciadores clave.

“Cuando comparé a los artistas estrella con los de las posiciones de liderazgo sénior, casi el 90% de la diferencia en sus perfiles se debió a factores de inteligencia emocional en lugar de habilidades cognitivas”. ~ Daniel Goleman de What Makes a Leader? publicado en la Harvard Business Review.

espero que esto ayude. gran pregunta No puedo esperar para leer lo que otros tienen que decir.

disfrutar

También podría reformular su pregunta como “Por favor, indíqueme la dirección de cómo alcanzar una década de aprendizaje y experiencia en solo 1 año”. .

Diferentes personas aprenderán a diferentes ritmos, y algunas personas serán más conscientes del “arte oculto” de la ingeniería de software que otras … sin embargo, esperar que incluso sea bueno en ingeniería de software en solo 1 año es totalmente irrealista. No es que no pueda ser alcanzado por un cierto número de personas … pero 1 año pasa muy rápido. Por supuesto, cualquier experiencia que tenga de los años antes de comenzar el proceso de aprendizaje formal puede marcar la diferencia.

Gran parte de lo que puede aprender acerca de la ingeniería de software sucede al otro lado del aprendizaje de los fundamentos extremadamente bien. Y dado que aprender los fundamentos extremadamente bien se hace típicamente en el transcurso de 4 años en lugar de solo 1 … te deja con un gran desafío.

Un factor importante para la ingeniería de software es trabajar bien en concierto con otros en el mismo proyecto, y esperar obtener el equivalente a muchos años de experiencia en esto en solo 1 año también es muy poco realista.

Debe hacerse esta pregunta: ¿quiero escribir un código o quiero hacer avanzar la ciencia? Estos no necesariamente se excluyen mutuamente, pero debe elegir uno como su interés principal.

Si desea escribir muchos códigos geniales, debe tener mucha práctica. Mi recomendación estándar aquí en términos de aprendizaje de libros es hacer todos (¡todos!) Los ejercicios en un libro de algoritmos de peso medio. Me gustan los algoritmos de Sedgewick porque no es demasiado largo y diría que el 90% de ellos ha resultado útil en mi carrera. El Gran Tomo Blanco de Cormen es la referencia preferida de muchas personas, pero en realidad es demasiado como lo es Knuth. Como ingeniero, ser capaz de construir sistemas con habilidad es un requisito básico, no un objetivo. El aprendizaje no relacionado con libros sobre la gestión de riesgos, costos y requisitos del cliente es, en mi opinión, difícil de enseñar en abstracto y mejor aprendido en pruebas de fuego.

La ciencia también es importante pero es muy diferente. Puede escribir código, ya que un físico puede tener que construir cosas para realizar un experimento, pero su enfoque es diferente. Personalmente no he elegido ese camino, así que no tengo mucho más que decir al respecto. Si su interés real radica principalmente en hacer avanzar el campo, debe seguir con el aspecto científico y no quedar atrapado en la ingeniería.

Para los puestos de ingeniería, me cuesta mucho recomendar o exigir cursos porque personalmente me parece que los libros y la vida real son más efectivos en la adquisición de conocimientos que en los cursos. Creo que si tomas el mismo tiempo y contribuyes significativamente a algunos proyectos de código abierto y / o herramientas de construcción o sitios web para personas, esto será un mejor uso de tu tiempo. Su parte difícil será atraer la atención de compañías más grandes como Google, ya que obtienen muchos currículums. Estoy bastante seguro de que los colaboradores de código abierto para proyectos de Google, Facebook y Microsoft son reconocidos y, después de un largo período de contribución significativa, este puede ser un mejor vector que enviar su currículum vitae o esperar encontrar un reclutador en una feria de carreras.

Finalmente, también como ingeniero, no tengas miedo del trabajo duro. Los sistemas de compilación, los sistemas de implementación, los compiladores, etc. son el núcleo de nuestra práctica, y los ingenieros experimentados reconocen su valor, incluso si algunas personas tienden a pensar que usted solo tiene el pasante junto al archivo Makefile.

Espero que esto ayude,
Micro

Planearía un año para aprender y una vida para dominar. 🙂

Si fueras mi hijo, y yo te estuviera enseñando, comenzaría con:

Lenguaje de programación c
Algoritmos y estructuras de datos.
Sistemas operativos

Iríamos a Microcenter, construiríamos una PC, instalaríamos Linux y comenzaríamos a aprender las cosas básicas.

Después de eso pasaríamos a las tecnologías e idiomas utilizados para construir la web. HTML, JavaScript, Node.JS, SQL, etc.

Luego abordaríamos cosas como OO, Ruby, RoR, Python, etc.

Sólo mis dos centavos.

¡¡Buena suerte!!

Debes ser un genio del orden de +5 sigma (1 en 2 millones). Entonces solo lee algunos libros.

No hay manera de convertirse en un buen CS / SE en 1 año, al igual que no hay manera de convertirse en un violinista de clase mundial en 1 año.

Con mucho trabajo duro, es probable que pueda alcanzar un nivel “aceptable para Google” en 2 o 3 años. Si los cursos que toma son realmente malos, ¿por qué esperó hasta el último año para hacer algo al respecto?

Si está dispuesto a pasar de 2 a 3 años, hay muchas sugerencias maravillosas sobre lo que debe aprender en otras respuestas.

  1. Cálculo
  2. Matemáticas discretas
  3. Álgebra lineal
  4. Algoritmos y estructuras de datos.
  5. Lenguajes formales
  6. Teoria de la complejidad
  7. Teoría de probabilidad
  8. Física de primer año
  9. Electromagnetismo
  10. Mecánica cuántica

Tenga en cuenta que específicamente preguntó qué debía tomar para ser un gran científico de la computación, no un gran desarrollador de software, por lo tanto, el énfasis en las cosas que serían útiles para la investigación en lugar de la codificación.

Ciertamente no tengo todos estos cursos y es posible que ni siquiera haya sido capaz de tener éxito en ellos, pero es el tipo de cosa que probablemente necesitaría para ser un gran científico informático en lugar de un gran desarrollador de software o empresario.

Puede que no los necesites a todos. Por ejemplo, si no tiene interés en la computación cuántica, es posible que no necesite la mecánica cuántica y, dado que la física está ahí para proporcionar un fondo para este u otros estudios con más conocimientos de ingeniería, es posible que tampoco lo necesite.

En su área de estudio en particular, podría terminar tomando un curso del mismo nombre varias veces con los cursos avanzados que cubren el material en niveles más detallados y abstractos, con la esperanza de responder preguntas sobre el concepto de lagunas en lo que aprendió en los cursos más básicos. . También seguramente necesitarás más cursos.

Ninguna. Su pregunta asume que puede convertirse en un buen científico informático o ingeniero de software (que no es lo mismo) en un año.

No puedes, eso es todo lo que hay que hacer.

De hecho, ni siquiera puedes convertirte en un buen programador en un año, o dos, tal vez en cinco.

No tienes que ser un programador para ser un científico informático, pero ciertamente ayuda. Tienes que ser un programador para ser un ingeniero de software.

La verdadera experiencia llega con el tiempo y, en gran medida, los títulos clásicos de aprendiz, oficial y artesano se aplican a la creación de bytes tal como lo hicieron con la herrería. El tiempo que se tarda en progresar de uno a otro varía mucho en cada persona, pero un año no es un valor realista para ninguno de los anteriores, porque hay mucho más en la carrera que solo aprender un lenguaje de programación, o cómo para resolver EDOs, o cómo equilibrar una ecuación química.

Programación de juegos integrados / dispositivos / científicos / serios :
C ++, C, Java, C #, Objective C, programación avanzada orientada a objetos
Desarrollo de software empresarial : Java, o .NET C #
Desarrollo web : JavaScript y (JAVA o ASP.NET o Ruby On Rails)
ERP : SAP o PeopleSoft o Mcirosoft Dynamics
Business Intelligence : Métodos Web / Biztalk / MSMQ etc.
Desarrollo de aplicaciones móviles : Objective C con XCode o JAVA con Android SDK o .NET o Unity 3d, JavaScript Apache Cordova, etc.

Son algunos los que vinieron a mi mente.

Todos ellos.


Este tipo se sentó en su escritorio y repasó el currículo completo de Ciencias de la Computación del MIT en exactamente un año, aprobando todos los exámenes. Es completamente gratis en línea, para aquellos que quieran sentarse y hacer el trabajo. Si él puede hacerlo, tú puedes hacerlo.

No puedes convertirte en profesional en un año …
Todo el aprendizaje de los cursos no te dará experiencia con el mundo real.

Sí, claro, puedes convertirte en un académico con bastante rapidez, pero al construir sistemas del mundo real no triviales, solo aprendes haciéndolo, no estudiando.

Nada que valga la pena es fácil: un año es un tiempo terriblemente corto para aprender realmente lo suficiente como para ser “bueno” en eso. Probablemente puedas aprender a hacer programas simples y tal vez sitios web.

Algunos de nosotros hemos estado en esto durante décadas y todavía no fuimos tan “buenos” como queremos ser.

Hola amigos, soy Abhijit, un entusiasta de la ciencia de datos y del aprendizaje automático.

Por favor, ve al canal. Si te gustan los videos, no olvides SUSCRIBIRSE

Estoy trabajando en una idea, realmente me encanta compartir mi conocimiento, para ayudar a que la nueva florezca. Por profesión, soy analista de datos. También soy dueño de un canal de YouTube, ” ANALYTICS MANTRA “, dedicado a todos los aprendizajes y tutoriales sobre Data Science.