¿Cuál es la hoja de ruta para aprender lenguajes de programación para un estudiante de primer año de ciencias de la computación e ingeniería?

Es bueno ver que tiene mucho interés en el tema de CS, que rara vez es el caso en los colegios de ingeniería en estos días. Las personas generalmente están allí por la fuerza de los padres o tomando el camino de la menor resistencia (ya que la sociedad india hace la vida más fácil para los ingenieros o los médicos). Parece que tienes grandes ambiciones, lo cual es bueno.
La forma en que te sugeriría que viajaras a través de tus 4 años sería
– no confíe / dependa de los maestros / currículo que esperan que todo le sea enseñado sin importar qué tan interesado esté en aprender. Usa el internet para eso. Un montón de MOOCs disponibles.
– Las habilidades interpersonales, las habilidades de aptitud y las habilidades de gestión son igualmente importantes para las habilidades técnicas, así que no las descuide.
– Independientemente de lo que APRENDAS en la universidad, asegúrate de entender los conceptos básicos, ya que lo básico es muy importante.
– En lo que respecta a las pasantías, le sugiero que realice una pasantía en una startup en lugar de en una empresa de renombre porque la cantidad de aprendizaje que se produce en una startup es mucho mayor que en una gran empresa. El espectro de aprendizaje es limitado en una gran empresa.
– Tan pronto como adquiera una nueva tecnología, construya algo con ella o haga un proyecto con ella. Un montón de recursos disponibles en línea para ideas de proyectos.
– Contribuir a algunos proyectos de código abierto. Aprende a usar Linux.
– Comienza a trabajar en tu currículum. Puede usar este sitio para evaluar su currículum vitae RezScore – Califique su currículum vitae
– No te limites al currículum de tu universidad, trata de aprender lo más posible, fortaleciendo tus conceptos básicos.
– Conviértete en un gato de todos los oficios. Mira diferentes tecnologías / lenguajes / plataformas y construye algo usándolos.

Y por último, los cuatro años de ingeniería serán los mejores cuatro años de su vida, forme un círculo de buenos amigos … disfrute de la vida de la ingeniería.

Leer: Ingeniería de la vida! de Aneesh M Gangadhar en AneeshWrites para obtener más sugerencias

¡Primero deja de usar tanto capslock!
Parece que has establecido una meta para ti mismo, ese es realmente un gran comienzo. Para trabajar con los nombres que ha mencionado, no necesita dominar muchos idiomas, sino muchos algoritmos, estructuras de datos y cosas como patrones de diseño de software, mejores prácticas, etc. Aunque saber más de un idioma definitivamente será bueno para tu currículum y definitivamente te hará notar. Y para demostrar que tendrá que hacer algunos proyectos usando esos idiomas.


Primero, puedes comenzar con C, leer Kanitkar para comenzar y luego sumergirte en Dennis Ritchie. Familiarízate con punteros y cosas por el estilo.
Luego sumérgete en un lenguaje orientado a objetos como Java o C.
Ir a través de su curso de BTech le hará saber en qué campo o tema específico le gustaría trabajar.

Para obtener exposición, participe en concursos, escriba artículos sobre su tema y busque activamente pasantías en lugares donde se realice la I + D, debe intentar buscar incluso en lugares como DRDO, el tipo de trabajo que se realizará realmente lo sorprenderá y lo hará. proporcionarle proyectos interesantes para mostrar en su currículum.

Ahora, al abordar el tema de entrar en las compañías mencionadas, sugeriré algunas formas que al menos lo harán notar y quizás abrir una oportunidad.

  • Microsoft: participe en Imagine Cup e intente convertirse en socio estudiantil de Microsoft
  • Google: Participa en google verano de código.
  • Facebook: tienen varios hackathons.
  • Apple: Déjame saber si encuentras algo.

Incluso si no ganas obtendrás una experiencia inmensa.

Y siempre estudie con libros de autores extranjeros y resuelva las preguntas al final del capítulo.

Acerca de las nuevas empresas, compruebe si su universidad tiene una célula de desarrollo empresarial, si no mejor, inicie una que le haga notar y aumente sus credenciales.

¡Y lo más importante es seguir tu instinto y poner todo tu corazón en lo que sea que hagas y hacer lo que está en tu corazón!

A2A

Ya que solo tienes que comenzar tus días de universidad, es mejor darte una breve explicación de lo que se trata esta rama. Campos (principales, no todos) relacionados con esta rama –
1. Programación de computadoras
2. Desarrollo web
3. Desarrollo de aplicaciones móviles.
4. Programación de red informática.
5. Base de datos

Como su descripción de la pregunta se refiere más a cosas como idiomas, desarrollo de Android, nuevas empresas y craqueo a través de las compañías de Silicon Valley, solo explicaré sobre esa base.

Los idiomas son un medio para conversar, tanto en el mundo real como en el virtual. Dice 10 a 1 como 10 9 8 7 6 5 4 3 2 1 de la misma manera que está escrito pero en C –

#include
int main()
{
int n = 10;
while(n--)
printf("%d ", n + 1);
return 0;
}

Lo que hicimos fue seguir un cierto patrón, un concepto, un algoritmo para imprimir esos números, el idioma (cualquiera) es solo un medio para hacerlo.
Concepto utilizado fue
1. Tome un número entero y declárelo como 10.
2. Repita 3 hasta que n vaya de 10 a 1.
3. Imprimir n + 1
4. salir

Este fue uno de los algoritmos más simples que expliqué. Recuerde que los idiomas son solo un medio para comprender algoritmos / conceptos, por lo que su principal preocupación debe ser el concepto de fortalecimiento. Pero no puedes hacerlo a menos que no sepas ningún idioma. Estos se incluyen en la estructura de datos de los sujetos y el análisis avanzado de datos, que si no está en ninguno de los IIIT, los aprenderá en el segundo año, por lo que tendrá un año en su mano.

1. Lenguaje procesal o (y) de bajo nivel : hay un montón de idiomas que son tanto de procedimiento como de bajo nivel o cualquiera de ellos. C, Lisp, Python, lenguaje ensamblador, etc. Le sugiero que aprenda C ya que es lenguaje de procedimiento y de bajo nivel. Además, todos los programadores deben saber cómo codificar en C, esto lo aprenderá y sabrá por qué en los próximos 1 o 2 años.

2. Orientado a objetos : C ++, JAVA, C #, Ruby, etc. Vaya con JAVA, ya que después del lenguaje más importante de C y C ++ en JAVA, es el mejor lenguaje para admitir y construir sistemas grandes. También puedes usar C ++, pero cuando tienes que elegir entre C ++ y JAVA y ya sabes que C, JAVA sería la mejor opción.

3. Funcional : Haskell, es el mejor, por lo que no necesita otras opciones.
Hay muchos otros idiomas, pero estos 3 son suficientes por ahora y para toda tu B.Tech.

Ahora comience con C al principio, el mejor libro (para noobs pero nuevamente el mejor) será Mastering C, y para una mejor comprensión (no para los noobs) – C The Complete Reference 4th Ed

Después de aprender C, puede comenzar directamente con Java The Complete Reference, 8th Edition. Suficiente para el primer año y las vacaciones después de eso, no te preocupes tanto. Cuando haya terminado con estos, espere a que comiencen las clases.

Estos dos idiomas son suficientes por ahora para comenzar con los algoritmos. La introducción a los algoritmos es un libro obligatorio (también es suficiente en términos de libros) para esto, pero es un libro muy grande y puede confundirse, así que es mejor comenzar con Data Estructura a través de C: un enfoque práctico. Pruebe Coursera y es la siguiente parte mientras realiza la Introducción a los algoritmos para una mejor comprensión y un amplio aclaramiento de algos. Pruebe la programación competitiva en spoj, Programming Competition (codechef), topcoder, etc. Todas sus preparaciones, conceptos y estrategias se evaluarán aquí, así que tómelo en serio cuando llegue el momento. CS50 también es un buen curso para ir.
Suficiente para lenguajes y algos.

El desarrollo de aplicaciones móviles es un campo vasto, si quieres ir allí, consiéntete completamente en él, o simplemente sé freelance en eso.
Ir a través de ¿Qué lenguajes de programación deben ser conocidos para el desarrollo de aplicaciones? Comience esto justo después de aprender C y JAVA si desea participar en el desarrollo de aplicaciones móviles. La mejor manera de aprender esto es trabajar en el proyecto lo antes posible, amigo mío, nada te enseña mejor que trabajar en tu propio producto. No sé mucho sobre startups, lo siento mucho.

Los proyectos y los pasantes se basan en su campo de interés, solo elija su campo, estudie según lo indicado y todo estará en camino. Aunque intente trabajar en su (s) proyecto (s) desde el 4º semestre, es el mejor momento para comenzar cualquier campo en el que esté.

PD: la programación no es una tarea fácil, así que trabaja duro para convertirte en un buen programador y aún más difícil entrar en esas compañías. Nada es mejor que practicar, así que sigue practicando. Obtendrá algunos temas muy importantes como Redes, Arquitectura de Computadoras, DBMS, Criptografía, etc. en su curso regular, obtendrá una mejor comprensión de estos y verá si encuentra alguno de ellos interesante y aún más vale la pena aprender.

PPS – “CGPA es muy importante, manténgalo por encima de 8”.
Todo lo mejor.

También vengo de una educación universitaria de India y simpatizo con tu forma de pensar. También solía pensar que si pasas esta prueba (JEE), o aprendes este conjunto de lenguaje de programación, o lo que sea, el éxito vendría automáticamente. No debo decir si eso es correcto o incorrecto; tus metas son para que tu decidas

Si lo que quieres es un trabajo en una gran empresa, entonces crea un currículum espectacular . Haga todo lo posible para obtener las mejores calificaciones posibles: lidere su clase, incluso su universidad. Haz impresionantes proyectos paralelos como parte de un equipo. Apuntar a realizar prácticas en empresas de grandes marcas. Si es posible, obtener alguna experiencia internacional de prácticas. También entienda que no puede poner algo como “estudiado 7 idiomas” en un currículum. Enfocarse en el trabajo práctico de proyectos (y no me refiero a los pseudo proyectos de final de semestre que impone la universidad), contribuciones de código abierto, etc.

Si desea tener éxito con un inicio, solo hay una clave: resolver problemas reales. El aprendizaje del libro es una base esencial, pero nada más. Ningún libro, ningún curso y ninguna respuesta externa pueden ayudarlo aquí. Startups como Google, Dropbox, etc. tuvieron éxito porque resolvieron un problema difícil que a la gente le importaba, de una manera que no se podía replicar fácilmente.

El software se trata de escribir bien y resolver problemas. Aprender la sintaxis del lenguaje solo te enseña a escribir, es como la gramática. No te enseña qué escribir, o por qué.

  • Aprender algoritmos y estructuras de datos; Lo ayudará sin importar lo que decida hacer: Introducción a los algoritmos
  • Lea esto: Siete idiomas en siete semanas. Eso debería satisfacer su curiosidad sobre los diferentes lenguajes de programación y los problemas que resuelven. Algunos (como Ruby, Clojure, etc.) son mejores que otros para aprender, pero no se quejan del lenguaje en sí. Los lenguajes no resuelven problemas, los programadores lo hacen. Recuerde que el hombre fue a la luna usando solo el código de ensamblaje: Apollo Guidance Computer
  • La verdadera experiencia es lenta y difícil de obtener. Como Peter Norvig dice muy bien: enséñese a sí mismo a programar en diez años.

La mejor manera de aprender sobre el software es escribir mucho.

Como otros han publicado, una hoja de ruta es un enfoque totalmente incorrecto. Los buenos programadores son buenos programadores porque han encontrado y dominado un área de la disciplina que les encanta.

Dominar cualquier área de programación es un trabajo ridículamente arduo, que requiere un entendimiento profundo que a la mayoría le resultaría difícil de aprender y las personas que lo hacen son solo buenos programadores si luego llevan ese conocimiento a nuevos lugares para hacer las cosas más eficientes o resolver un problema. Problema que nadie consideraba o que todos creían insuperables. Solo los programadores que aman su trabajo tienen lo que se necesita y predecir qué área le va a gustar más es especialmente difícil cuando todavía no ha probado mucho de lo que se ofrece.

Con eso en mente, use las respuestas que reúne aquí solo para comenzar y luego cada paso a lo largo del camino, cuando encuentre algo que le interese para descubrir más o empujar un poco más, no tenga miedo de tomar una Desvío permanente.

Para comenzar, primero debe apreciar que hay muchos lenguajes y subáreas en la programación. La mayoría de las personas terminan trabajando con un lenguaje de la familia C o Java, ya que son los más populares en todo el mundo. Son los más populares porque son herramientas generales muy poderosas y existe una biblioteca para casi cualquier propósito imaginable.

C ++ y Java son los dos ejemplos más populares de lenguajes orientados a objetos. Estos lenguajes son los más versátiles y Python se está estableciendo como otra gran oferta en esta dirección, con algunas características intuitivas que otros no han desarrollado y se han desarrollado demasiado para trabajar de manera eficiente.

Java también es notable por ejecutarse en una máquina virtual. Esto significa que su código Java puede ejecutarse en cualquier máquina que tenga una versión de JVM, lo cual es una característica útil pero hace que el lenguaje sea más lento. La mayoría de las personas no lo notarán porque es lo suficientemente rápido para la mayoría de los propósitos.

C no está orientado a objetos, pero es quizás el lenguaje más rápido de “alto nivel” que está muy cerca del hardware con una abstracción mínima. Otros lenguajes de nivel superior (más abstracciones de hardware) tienden a construirse sobre la C

Yendo más abajo que C hay un código de ensamblaje. Esto es lo más cercano a hardware antes de escribir directamente en binario. La programación de ensamblajes es lenta y laboriosa, pero le proporciona el código más rápido. La mayoría de la gente está satisfecha con el código de ensamblaje que genera su compilador o contrata a un programador con experiencia en ensamblaje solo por las pequeñas cantidades de código que deben ejecutarse un poco más rápido o, de lo contrario, se vuelven poco prácticos.

¿El montaje no es lo suficientemente rápido para ti? Bueno, puedes aprender hardware y / o trabajar con un lenguaje de descripción de hardware como VHDL. Estos lenguajes son útiles para generar hardware diseñado para realizar solo una tarea (o algunas) realmente bien y producir los planes para el hardware que se utiliza en electrónica especializada.

Si la velocidad no es su mayor preocupación, en su lugar, puede dirigirse a otros idiomas / áreas especializados:

La programación web es bastante popular, pero no soy un interés particular para mí. No soy el mejor para informarle sobre sus ofertas.
HTML no es un lenguaje real, pero puede ser útil saber lo básico. CSS está ganando popularidad pero aún no es algo universal y el campo aún no se ha resuelto; También existe solo para describir realmente cómo deben distribuirse las páginas. PHP es un lenguaje de programación web mucho más general, pero creo que JavaScript se considera el mejor y más simple lugar para comenzar si está buscando algo.
La programación web está dividida en áreas de interés del lado del cliente y del servidor, siendo el lado más profundo y técnico el servidor que apunta a mantener las cosas lo más simples posible para el cliente mientras hace el menor trabajo posible para que pueda servir a muchos usuarios rápidamente.

La programación lógica es otra área especializada que probablemente ahora tiene su mayor enfoque en inteligencia artificial, aunque también aborda temas como el teorema de sistemas multiagentes, etc. Está en una dirección natural si ha estudiado lógica y descubrió que es tu mayor interés, pero se usa principalmente en círculos académicos. Prolog es un lenguaje divertido y simple para jugar, pero descubrirás rápidamente sus limitaciones para la programación general. Sin embargo, su capacidad de retroceso, funciones flexibles y capacidad de reescritura en tiempo de ejecución hacen que sea muy divertido de usar y una excelente opción para cualquier tipo de problema compatible.

Si la inteligencia artificial es un interés, es más probable que desee ver el aprendizaje automático y uno de los lenguajes generales más poderosos que se mencionaron anteriormente. Es posible que también necesite desarrollar más sus matemáticas para familiarizarse con muchos de sus algoritmos.

MATLAB es un lenguaje extremadamente poderoso (aunque un poco lento) para cualquier cosa que requiera matrices (o vectores o tablas multidimensionales, etc.). Esto lo hace bueno para la visión artificial, redes neuronales, estadísticas, análisis de grandes datos, etc. Los gráficos también tienden a estar basados ​​en matrices, pero este lenguaje probablemente sea demasiado lento para eso.

Si el análisis de datos o los gráficos son interesantes, considere mirar R; Es un lenguaje divertido, simple y poderoso que prácticamente ama a todos los que lo usan.

La programación funcional se ocupa de los problemas que conllevan un conjunto de varias entradas alfanuméricas y producen una salida. Si sus problemas de interés coinciden con esta clase, está listo para recibirlos, ya que estos idiomas son algunos de los más sencillos, intuitivos y divertidos para trabajar. Haskell es un ejemplo brillante. En términos de responsabilidad, a los programadores funcionales les va bien en la banca y sospecho que hay buenas oportunidades en consultoría.

Esta lista es inagotable de las opciones y los mejores idiomas que existen para trabajar, pero esperamos que te ayude a descubrir dónde quieres buscar primero.

En cuanto a libros, no hago sugerencias. Probablemente sea mejor hacer una pregunta aparte para eso, pero en realidad ningún libro es un sustituto para simplemente aprender un idioma y jugar con él. También hay muchos buenos recursos en línea para ayudarlo a aprender, pero la mejor manera que conozco de aprender es haciendo; ¡simplemente establezca continuamente tareas que están un poco más allá de sus capacidades actuales y llegue a resolverlas! Los libros y otros recursos existen solo para recurrir cuando te atascas un poco; superas el obstáculo y sigues adelante. Enseñe a medida que avanza e intente programar un poco todos los días (código nuevo, no solo mantenimiento de código) para que nunca lo deje por mucho tiempo y pierda su progreso. Los buenos programadores piensan y sueñan en código …

Supongo que ha completado recientemente o al borde de la finalización de la fase básica de codificación en cualquiera de los lenguajes de programación como C, C ++, Java, Python, etc.

Pero lo principal que hay que entender aquí (al menos la IMHO) es que el aprendizaje es un proceso continuo , nunca debe estar satisfecho con lo que ha aprendido y siempre debe tener curiosidad por aprender y comprender más. Nunca estés contento o satisfecho con lo que has aprendido.

Ahora volviendo a la pregunta, para analizar los conocimientos y realizar una autoevaluación de las habilidades que aprendió en la codificación, intente mirar a su alrededor y analizar los alrededores de manera programática. ¿Piensa cómo sucederían las transacciones en un cajero automático y las manipulaciones del dinero en las cuentas? ¿Cómo la máquina de facturación resume todos los precios de los artículos que compra? O cosas más ingenuas como la forma de organizar las notas de la moneda según la denominación en su billetera. Todo esto se puede implementar en la codificación mediante simples manipulaciones numéricas o de cadena. pensar en soluciones para las preguntas anteriores y similares hará que su cerebro se incline más hacia las soluciones analíticas y lógicas de los problemas. Luego, gradualmente, puede avanzar hacia preguntas más complejas como texto o clasificación numérica o combinación, tic-tac-toe y más tarde en la resolución de cubos de Rubicks o similar, e incluso más. Pero todo esto requiere constante aprendizaje e implementación .

Junto con lo anterior, hay muchos sitios web en línea que le permiten poner a prueba sus habilidades en diferentes lenguajes de programación que contienen niveles de principiante a experto como:

  1. HackerRank
  2. GeeksforGeeks | Un portal informático para geeks.

Además, he encontrado en la página web de la Guía técnica de Google y creo que es relevante. Su tipo de paquete global que toma en consideración todas las habilidades requeridas por un Programador / Desarrollador de Good Software (AFAIK):

Toma un curso de “Introducción a CS”

Centrarse en las instrucciones básicas de codificación

Recursos en línea:

  • Udacity – Introducción a la informática
  • Coursera – Informática 101

Código en (al menos) UN lenguaje de programación orientado a objetos (C ++, Java®, Python®)

Recursos en línea para principiantes:

  • Coursera – Learn to Program: The Fundamentals
  • MIT Introducción a la Programación en Java
  • Clase de Python de Google
  • Coursera – Introducción a Python, libro electrónico de código abierto de Python

Recursos en línea intermedios:

  • Diseño de programas informáticos de Udacity.
  • Coursera – Aprende a programar: elaboración de un código de calidad, Coursera – Lenguajes de programación
  • Universidad de Brown – Introducción al lenguaje de programación

Aprende otros lenguajes de programación.

Añade a tu repertorio:

  • JavaScript®
  • CSS y HTML
  • Ruby®
  • PHP®
  • Perl®
  • Script Shell®
  • Lisp®
  • Scheme®

Recursos en línea:

  • Codecademia
  • Udacity – Desarrollo web móvil
  • Udacity – Desarrollo de juegos HTML5

Prueba tu código

Aprenda cómo detectar errores, crear pruebas y romper su software

Recursos en línea:

  • Udacity – Métodos de prueba de software
  • Udacity – depuración de software

Desarrollar el razonamiento lógico y el conocimiento de las matemáticas discretas.

Recursos en línea:

  • MIT Matemáticas para Ciencias de la Computación
  • Coursera – Introducción a la lógica.
  • Coursera – Optimización Lineal Y Discreta
  • Coursera – Modelos gráficos probabilísticos
  • Coursera – Teoría de juegos

Desarrollar una sólida comprensión de los algoritmos y las estructuras de datos.

Aprenda sobre los tipos de datos fundamentales (pila, colas y bolsas), los algoritmos de clasificación (quicksort, mergesort, heapsort), las estructuras de datos (árboles de búsqueda binarios, árboles rojo-negros, tablas hash) y Big O.

Recursos en línea:

  • MIT Introducción a los algoritmos
  • Coursera – Introducción a los Algoritmos Parte 1 y Parte 2
  • Coursera – Lista de algoritmos
  • Coursera – Lista de Estructuras de Datos
  • Coursera – Libro: El manual de diseño de algoritmos

Desarrollar un fuerte conocimiento de los sistemas operativos.

Recursos en línea:

Aprende diseño de UX

Recursos en línea:

Udacity – Diseño de UX para desarrolladores móviles

Aprender inteligencia artificial

Recursos en línea:

  • Universidad de Stanford – Introducción a la robótica
  • Universidad de Stanford – Procesamiento de lenguaje natural
  • Universidad de Stanford – Aprendizaje automático

Aprende a construir compiladores.

Recursos en línea:

Coursera – Compiladores

Aprender criptografia

Recursos en línea:

  • Coursera – Criptografía
  • Udacity – Criptografía Aplicada

Aprender programación paralela

Recursos en línea:

Coursera – Programación paralela heterogénea

Trabajar en proyectos fuera del aula.

Crea y mantiene un sitio web, crea tu propio servidor o crea un robot

Recursos en línea:

  • Apache Listado de Proyectos
  • Google Summer of Code
  • Grupo de desarrolladores de Google

Trabaje en una pequeña parte de un sistema grande (base de código), lea y comprenda el código existente, busque la documentación y realice la depuración

GitHub es una excelente manera de leer el código de otras personas o contribuir a un proyecto.

Recursos en línea:

  • GitHub®
  • Kiln ™

Trabaja en proyectos con otros programadores.

Esto le ayudará a mejorar su capacidad para trabajar bien en equipo y le permitirá aprender de otros.

Practica tus conocimientos algorítmicos y habilidades de codificación

Practique su conocimiento algorítmico a través de competencias de codificación como CodeJam o el Concurso Internacional de Programación Colegiada de ACM.

Recursos en línea:

  • Código jam
  • ACM ICPC

Fuente: Estudiantes – Guía para el desarrollo técnico – Carreras de Google.

Sigue aprendiendo y mantente motivado. Saludos !!

La belleza de la programación es que no hay un punto de partida que sea aceptado universalmente. Tú eliges tu propio camino. Si nunca has codificado antes de ingresar a la universidad, esto es lo que debes esperar:

La mayoría de las universidades te inician enseñando C / C ++. Es increíblemente fácil de aprender y una vez que conoce los conceptos básicos de programación, aprender cualquier otro idioma se vuelve mil veces más fácil. A partir de este momento, solo se familiarizará con la sintaxis de diferentes lenguajes, porque los conceptos de programación funcionan de la misma forma en casi todos los lenguajes modernos de alto nivel. Ya ves, no es una ciencia espacial. Asegúrate de seguir practicando porque esa es la única forma de dominar un idioma. Hay muchas cosas que no aprendes en la universidad, así que siempre que tengas tiempo, trata de explorar cosas nuevas.

Ahora, por supuesto, el CGPA es importante, pero no tiene que preocuparse por eso mientras lo haga bien. Las entrevistas de trabajo se concentran más en sus habilidades que en sus calificaciones en la universidad, y solo se seleccionan aquellos candidatos que muestran un mayor potencial durante las entrevistas, no aquellos que tienen buenas calificaciones sino un bajo rendimiento durante las entrevistas. (Nuevamente, no te estoy desanimando de tener un buen CGPA).

Mientras la pasantía en las grandes empresas sea cuestionable, debe perfeccionar sus habilidades. Intente involucrarse en proyectos como Google Summer of Code, participando en capacitaciones y hackathons en el capítulo del Centro de Innovación de Microsoft en su localidad. Pero tampoco descarte ningún nombre que no sea tan grande como Google / Microsoft. Aún puede ser un excelente programador si está tomando las decisiones correctas.

Tener proyectos paralelos siempre es una buena idea. Desarrollar para Android / Windows / iOS. Hay toneladas de puestos de trabajo en el desarrollo de aplicaciones móviles. Incluso podrías tener tu propia pequeña empresa si tienes buenas ideas. Hay muchos inversores ángeles en este mercado listos para invertir en cualquier idea buena y realista.

El desarrollo web es algo en lo que cualquiera puede especializarse. Ni siquiera tienes que ir a una escuela para eso. Todo lo que sé sobre desarrollo web es autodidacta. Los freelancers hacen un montón de dinero de proyectos de desarrollo web.

Probablemente hay muchas más cosas que me he perdido en mi respuesta, pero creo que entendiste el punto. Básicamente no hay una hoja de ruta para sobresalir en este campo, usted recorre su propio camino.

¡Buena suerte!

Entender el montaje .
Controle C , luego Java e incluso tal vez Haskell .

Pero si se siente lo suficientemente seguro como para aprender, los materiales van y aprenden OZ / Mozart con este libro Conceptos, Técnicas y Modelos de Programación de Computadoras o con el curso gratuito de EdX basado en este material: Paradigmas de la Programación de Computadoras. un pensamiento muy bien formado sobre los lenguajes de programación que te servirán por el resto de tu vida.

Los lenguajes son instancias / implementaciones de conceptos / paradigmas / teorías / técnicas.
Este lenguaje académico fue creado para enseñar a muchos de ellos de la manera más efectiva, puede parecer seco o abstracto, pero créanme, por experiencia, puedo respaldar completamente esta cita de Kurt Lewin: ” no hay nada más práctico que una buena teoría”. “ .

Es bueno tener objetivos, pero en un cierto punto debes sentarte y hacerlo en lugar de planificar lo que debes hacer. Un plan completo de 4 años de exactamente qué hacer no es útil por varias razones:

  • Su camino puede (y debe) variar dependiendo de lo que quiera hacer. Lo que hice no es necesariamente óptimo y no es para todos, pero yo y otros podemos dar sugerencias sobre qué mirar.
  • Tomar muchas de las decisiones importantes sobre qué aprender es casi imposible sin saber más de informática.
  • En general, no debería haber personas que le digan qué hacer (incluso confiar en las experiencias de otras personas para que lo guíen no es algo bueno, independientemente de si sigue o no su consejo). También contradice tu supuesta mentalidad acerca de no tener miedo a fallar.
  • El enfoque en recursos específicos a menudo tampoco es útil, por algunas de las razones similares a las anteriores.

Dicho esto, aquí hay algunas recomendaciones basadas en lo que hice (definitivamente coinciden con las de otros encuestados):

  • Fundamentos: C, C ++ y Java por razones que otros han mencionado. Python si realmente no tienes experiencia y quieres cerrar un poco la brecha. Yo haría uno de estos primero.
  • MATLAB si tiene la intención de involucrar el análisis numérico / de datos.
  • Programación web si te gusta eso: ¡no tengo experiencia con esto!
  • Introducción a los algoritmos es genial si te gustan los algoritmos.
  • La programación en C es posiblemente el mejor libro para aprender C.

En cuanto a un ejemplo de línea de tiempo, aquí es aproximadamente lo que siguen los estudiantes de CS de la universidad local (los 20 principales en Estados Unidos) en orden:

  • Matemáticas discretas básicas
  • Java / orientado a objetos
  • C, arquitectura / sistemas informáticos básicos y algoritmos.
  • otros basados ​​en pistas auto seleccionadas que incluyen algoritmos, gráficos, aprendizaje / inteligencia de máquinas, lenguajes de programación, seguridad, sistemas, ingeniería. En este punto, básicamente aprendes lo que necesitas para tus deseos individuales.

Consiga una computadora portátil primero, si no la tiene, obtenga Internet y “USE”.

La respuesta corta es – comenzar a codificar. Que haya fallas en la compilación. Lee sobre esto y el idioma en internet. Arregla y sigue codificando.

Además, si el aprendizaje de un idioma es el único objetivo, haga una investigación en Internet para recopilar buenos libros / blogs para comenzar. Su búsqueda de lo mismo puede tener criterios como conocer el creador del idioma, otras personas que contribuyeron al idioma, cualquier blog que puedan tener y que se adapte al idioma que desea aprender.

Lea libros que se centran en los conceptos del lenguaje y no en las características. Si entiende por qué se crea un concepto particular en ese idioma, puede aplicar el mismo durante la programación.

Suscríbete a los grupos de noticias de ese idioma.

Siga los proyectos de código abierto en github que tienen proyectos en ese idioma. Además, comience a contribuir al mismo (normalmente, para empezar, tendrá que corregir errores en el proyecto antes de poder comenzar a contribuir con las funcionalidades del código principal)

Use stackoverflow para buscar algunas preguntas comunes que se hacen en ese idioma. Lea los artículos en el Dr Dobbs Journal. Cuenta con artículos de reconocidos y experimentados expertos en su industria.

Siga el desarrollo del lenguaje como en si el idioma está haciendo cambios a sus conceptos existentes / biblioteca estándar, etc. – los grupos de noticias también pueden ayudar con eso o si hay un sitio web para el idioma.

Finalmente, aprenda por lo menos 2 o 3 lenguajes (uno o 2 sistemas de programación como C ++, Java, Python, etc., uno o 2 lenguajes de programación funcionales como Scala, uno o 2 framework web como grails, etc. tiempo, así que quizás un marco web para comenzar, quizás marcos GUI, QT para multiplataforma o WPF / WinForms en .NET, también tenga una idea para tecnologías móviles)

Junto con lo anterior, aprenda sobre la arquitectura cliente / servidor – Desarrollo de servidor REST completo (tendrá que buscar en Internet para saber y entender lo mismo) – tal vez si desea aprender sobre esto, obtenga un buen libro para explicar los conceptos básicos de o usar internet)

Todo lo anterior está incompleto sin la aplicación de su aprendizaje. Entonces, comience a resolver problemas / trabaje en sus ideas / proyectos que pueda encontrar (y vea si puede implementar su idea usando múltiples tecnologías / idiomas). Este pensamiento requiere un poco de experiencia en la industria, por lo que quizás pueda hacer una pasantía en algún lugar donde pueda. aplica tu aprendizaje y, al mismo tiempo, aprende la forma de hacer las cosas de la industria)

Normalmente (no siempre), algunas corporaciones de ingeniería tienden a tener productos basados ​​en múltiples pilas de tecnología, pero como ingeniero, es posible que esté trabajando en un idioma o tecnología la mayor parte del tiempo. Entonces, puede surgir la pregunta de por qué aprender tanto. Desde mi punto de vista, le brindará una variedad de opciones para elegir y si tiene más de un idioma, puede pensar en una solución que sea más eficiente / elegante en un idioma que en el otro.

Si quieres aprender algo, necesitarás ir más allá de lo académico. Le enseñará teoría, pero no las aplicaciones y para las aplicaciones, tendrá que poner su propio esfuerzo. Si tomas la iniciativa, será una gran experiencia de aprendizaje. Y, de ahí la primera línea de respuesta!

(Parece que quora se ha vuelto inteligente. Guardó mi respuesta cuando la memoria de mi laptop se rompió. ¡Uf! 🙂)

No se trata del lenguaje, es la mentalidad. Podrías elegir el idioma que quieras; Todos te entrenarán para pensar correctamente. No asuma que solo elegir un conjunto correcto de herramientas le brinda buenos trabajos, tendrá que saber cómo usarlos de la manera correcta. La forma correcta es en realidad la más difícil: tienes que fallar mucho.

Realmente no sé si hay estudios sobre la mejor manera de aprender lenguajes de programación. Pero sugeriría comenzar desde un nivel alto y sumergirse en un nivel inferior cuando adquiera experiencia.

  1. Pitón

    Buen lenguaje para principiantes. Le ayuda a comprender conceptos de programación básicos ampliamente utilizados. Sintaxis fácil de usar y muy limpia.

  2. C # o Java

    Estos idiomas le brindan más control, pero siguen siendo seguros y tienen una vasta biblioteca y comunidad estándar.

  3. F # o Scala

    Este punto sugeriría probar diferentes paradigmas de programación; Le ayuda a comprender que hay varias formas de pensar sobre el problema.

  4. Haskell

    Paso opcional si estás realmente en la programación funcional. Conocer a Haskell definitivamente te hace un mejor programador.

  5. C ++

    Está bastante familiarizado con la programación orientada a objetos hasta ahora, por lo que ahora es el momento de ir a un nivel inferior. C ++ es un lenguaje que se debe conocer porque se usa mucho. Y se considera como el idioma del maestro, por lo que es mejor que sepas bien.

  6. do

    C es un lenguaje de facto en la programación de sistemas. También es un nivel bastante bajo, por lo que debe comprender cómo programar bastante bien para aprovechar al máximo.

  7. Montaje

    Ahora, deberías ir a un nivel aún más bajo. El ensamblaje es la última capa de abstracción antes del código de máquina en bruto. La mayoría de los compiladores de C y C ++ pueden generar código fuente de ensamblado en su máquina de destino. También puedes jugar con máquinas virtuales o con diferentes kits de herramientas, como LLVM. Asegúrese de comprender cómo se presentan los conceptos de alto nivel en Asamblea antes de continuar.

  8. Tu propio idioma

    Haz tu propio lenguaje de programación. Implementar un compilador e intérprete para ello. Copia características de otros idiomas que crees que son buenas. Probar diferentes tecnologías, como JIT y AOT. Escribe miles de pruebas y asegúrate de que todo funcione.

De esta manera obtendrás una vasta comprensión sobre la programación y cómo funcionan las computadoras. Recuerda también aprender la teoría, ¡es importante!

¡Buena suerte!

Usted está haciendo un montón de preguntas.
Si desea ser un buen programador, deberá comenzar a desglosar la “oportunidad” en sus partes constituyentes. Algunas partes nunca se juntarán, son temas separados “agrupados”.

Primero lea la respuesta de Sean Lucent.

Algunos de los temas que mencionaste
1): “Quiero trabajar con …”
El problema con eso es que estás poniendo el carro frente al caballo. Ese es el objetivo final. Cortar hasta el objetivo final, aunque pragmático, no te llevará allí. La primera regla de la programación es hacer la investigación. ¿Qué usa Google internamente? Nominalmente Python. Estudia Python. Creo que esa es la respuesta incorrecta, porque estás haciendo la pregunta incorrecta.

2) Hiciste una pregunta mejor: “para que mi tiempo se dedique a aprender primero esos idiomas que me ayudarán a desarrollar los idiomas que aprenderé en el futuro”
Si esta es la pregunta, entonces de lo que estamos hablando no es adquirir habilidades (por importantes que sean), sino más bien recoger conocimientos. Conocimiento que puedes construir más adelante. En cuyo caso, sugeriría a Pascal, C y Lisp. Estos idiomas te obligarán a pensar. Te darán los cimientos sobre los cuales construir. Es posible que nunca te enseñen esto en la escuela, pero sería mejor que te atendieran leyendo un par de libros. Puede ir en línea y encontrar muchos libros gratuitos en esos idiomas.

Respuesta corta, C y Java. Si tienes experiencia en escribir código en esos dos, Python será fácil. También lo hará Javascript. Así lo hará todo lo demás.

Dos problemas, no, dos más “oportunidades” …

Los Departamentos de Recursos Humanos son pozos de conformidad e ignorancia. Ni siquiera leen hojas de vida (CV), tienen un algoritmo para eso. Es como pasar 100 horas en un trabajo final, solo para tener un asistente de maestro con apenas más experiencia que la que usted califica. El departamento de recursos humanos solo mira las “habilidades”. Si están buscando contratar a un programador de Python, eso es lo que quieren. Es mejor que se muestre prominentemente en su currículum. Y es mejor que sepas el tema. Eso te lleva de nuevo a la pregunta # 1.

El segundo problema es que si realmente desea prosperar en su profesión, tendrá que poder “pensar”, crear estrategias y encontrar soluciones a los problemas para los que nadie puede prepararse. Eso es cuando poder pensar como un programador es útil. Ninguna escuela te preparará para eso. Tienes que hacer eso. Eso significa leer un libro al mes sobre un tema en el que no se calificará. C, Pascal, Lisp, Haskell, etc. Mirando el mismo problema desde la perspectiva de diferentes idiomas, te obliga a pensar en los problemas desde diferentes perspectivas. Si observas un problema humano mientras piensas en hindi (o lo que sea que hables en casa), se te ocurrirá un enfoque diferente al de pensar en inglés. Es el mismo problema. Mismo problema, diferentes soluciones.

Y ahora una opinión.
La mayoría de los “ejercicios” en CS son problemas matemáticos. Lo suficientemente interesante, y ciertamente tendrá que tener sus habilidades matemáticas a la par. Pero la mayoría de los problemas en la industria no son puramente matemáticos. Usan las matemáticas como una herramienta, al igual que cualquier buen estudiante de CS. Si las matemáticas son algo para lo que eres bueno, no dejes de aprender CS solo. Go and study CS and another subject matter. Study CS and Finance. CS and Accounting. CS and Mechanical Engineering. CS and whatever strikes your fancy.

Lets face it, universities in India are producing a tidal wave of engineers. How do you expect to distinguish your self from all the competition? If you have two degrees you can apply for a specific opportunity. Say, in banking: “I got an Honors degree in Computer Science, and I barely, just barely managed to get a degree in Finance. But if you got a finance problem to model, I already know exactly what you are talking about…”. Now think in terms of applying to Tata Motors. A CS degree with a specialization in 3D modeling, or mechanical modeling or… you get the idea.

GIVE YOUR SELF EVERY EDGE YOU CAN.

I trust this helps.

In first year you should focus on learning either C,C++ (preferrable) or Java. My answer will be based on C++. You can learn C++ from Learn C++ it’s a very good source for beginners. You should be clear with the concepts of object oriented programming and STL after completing the course. Then you should be focusing on learning data structures, algorithms and the analysis of algorithms in the respective order. For data structures you can refer http://geeksforgeeks.com , mycodeschool Data structures – YouTube.

MIT 6.006 Introduction to Algorithms, Fall 2011 and You can also refer to this answer Shaksham Kapoor’s answer to Which is the best online course to learn data structures?for more resources for data structures. When you are done with data structures and algorithms go for design and analysis of algorithms (daa). You can learn daa from MIT 6.046J Design and Analysis of Algorithms, Spring 2015 and from stanford course for algorithms on coursera. You should be able to complete all this by the end of 1st year or 3rd semester. When you are done with these courses you should be able to solve competitive problems from online judges like http://spoj.com Programming Competition,Programming Contest,Online Computer Programming etc. Now in second year you should be focusing on competitive coding , For that there is a book Competive programming 3 , you can follow that book seriously for competive programming. You will learn various things . Also you can apply for internship in google hyderabad campus in 2nd year. But remember you can only apply in 1st and 2nd year. When you enter 3rd year you should start learning some scripting language like python or ruby and start developing projects. You could also start contributing on open source projects and even apply for Google Summer of Code in your third year.

I never knew so many things since starting so i didnt do that well, but now you know and you have a head start. Learn and guide others too 🙂

I would advise you to read c or python as they are the simplest to work with. Also they have really low overhead to get your code working. Codeacademy.com can help you learn python. Once you get somewhat familiar with the language the more important part is learning data structures and algorithms . Use your newly learned language to code these data structures and algorithms. Once you get familiar with algorithms start trying out problems on spoj, poj, UVA or topcoder.

Feliz aprendizaje

I don’t know how much help I can be… For me programming was always in my blood, I “felt” how some application is working… The first day I got my first computer, i took it apart and put it back together just to identify all the pieces and how they connect properly… In the evening I was already editing the autoexec.bat file without any prior knowledge of bash scripting! 😀 I broke a lot of things, taking them apart and putting them back together, learning form my mistakes faster and more in depth than anything any book could teach me!

Just do it! Start with the basics, learn about algorithms and just basic math, learn how to THINK everything in logical “computer” steps – everything is an algorithm! After that, start with basic math problems, no matter what programming language you start to learn… Learn about data structures, backtracking, graphs and trees, lists and practice A LOT!

And don’t expect to become good at it overnight. The best teacher you can have is experience – and that comes with time and practice, like all important things in life. Practice, practice some more, and when you’re done, get some paper and scribble down ideas about what you can learn next, what you can do next! Get a job in this field, even if it won’t be your dream job from the start – it will give you the opportunity to learn by doing, the experience and the “feeling” for how the industry works! This job will be a better teacher to you than anyone you can possibly get in school!

Choose a proper target first where you have to land yourself till the end of Engineering.

As in what you have to opt for Future as your Career.

There are many programming languages which are trending now , some of the most opted today are java and python.

As a first year student just make a plan for every semester and get in touch with the programming languages side by side…you can look out for the online websites or follow youtube tutorials to learn your opted language.

Finding the Best nearby Computer institute and getting a certified course done there can be one of the best thing you can do.

You can make the best of the semester vacations to master your programming language.

Later stages till the third year try to find and attend some internships on the programming language you have mastered which will help you a lot to get a good job.

Not an expert nor a proper answer , but just took you through the things i could have done during my early years.

All the best for your future.

Do Subscribe to my channel to stay in touch with the latest Computer World.

Computer Everyday

Here is what I did, which was not necessarily optimal.
– Learned the language Turing (programming language) from Ontario high school programming curriculum in grade 10
– Took a C/C++ high school class in grade 11, learned stuff outside of curriculum because it was interesting
– Learned Python one weekend in grade 12 and was good enough with it to write a contest the next week with it. Stuck with Python as main choice of programming language.
– Learned web stuff, most notably Javascript in second semester grade 12 at a job experience high school course thing to do some task for a company.
– By this point I have enough experience that picking up a new language is easy.

A2A

I don’t know if am eligible to answer this question but I can share what I think is important. But take my advice with a pinch of salt as I am not pursuing Computer Science. Anyways, since you expect an answer from me. Here it goes.

  • I see you are a lot worried about the languages to learn. Take this course sometime — Programming Languages. At some point in your academic life, you will have to learn [C++/Java] I believe and since you said you are interested in Android Applications, you should go for Java then. It’s good to get your hands dirty but only after you have made a mental map of what you are going to do to solve a particular problem. So, it is important that you understand Algorithms and their time complexity. Take this pair of courses — Algo-I and Algo-II. You will never regret this decision of yours. I have taken only the first part yet.
  • Maintain a blog of your experiences as you learn new things. It will not only help you express yourself better but would also help fill gaps in your learning.
  • Always keep a side subject/project that you work on in your leisure time. For me, it is Haskell. You should not try to finish the subject. Take it as if it’s never going to end and you just like to enjoy the journey. Doesn’t matter where it takes you.

First of all, your desire to work only with “big name” companies indicates how little you know. By far, most computer programming and software development jobs are with companies that you don’t think of as computer companies. Many are small to medium sized companies that can give you a very successful career. And the large, well known companies that hire lots of software developers are not usually the ones you think of as computer companies. For example, General Electric, Toyota, and Proctor and Gamble are all large companies that hire thousands of software developers. So focus more on the kinds of computer applications you might find interesting.
Secondly, the best way to learn any language is to use it. Write lots of programs in that language.
Thirdly, this also applies to natural language and if you want a job with a “big name” company of any kind, learn English better by writing it, speaking it, reading it and taking courses in it.

See.. you seem over concerned about yourself (NO PUN INTENDED).

First of all understand logics.
Then go for a particular language ( preferably C). Master that language. “Big companies” dont want you to be the jack of all trades and master of none. Since its ur starting, go with C. A very basic book will be “let us c” by yashwant kanetkar . Your course will most probably be in c.

Then go through data structures and algorithms ( a “big step” towards “big companies”). Implent them through your codes.

Once you master a particular language, then practice practice practice and practice