¿Se puede estudiar ingeniería de computación / software por sí mismo?

Sí, y para su beneficio, he presentado un resumen de cómo hacerlo a continuación.

Absolutamente creo que estudiar ciencias de la computación por tu cuenta es algo que cualquiera puede hacer.

Edición : el esquema a continuación se refiere a Ingeniería de Software en su mayor parte y no tanto a Ingeniería Eléctrica o Mecánica. Intentaré agregar más lecciones de hardware y otros aspectos en el futuro. Sin embargo, la parte de “Introducción” de esta respuesta aún puede aplicarse a todos los aspectos de la educación.

Si bien no creo que sea fácil según los estándares, creo que se puede lograr. Los primeros pasos siempre tienden a ser los más difíciles, pero si está dispuesto y determinado, creo que una vez que haya superado la primera fase de aprendizaje de los fundamentos de la programación, podrá aprender mucho por su cuenta. Me refiero a que prácticamente todo el material del curso de educación superior necesario está disponible en línea de forma gratuita . Todo lo que tienes que hacer es saber qué buscar.

Nota : Aunque creo que esto es muy posible por su cuenta, recomendaría tratar de encontrar al menos otra persona con quien aprender. Esto puede ser muy útil porque tendrás a alguien que te ayudará a mantenerte motivado y rebotar la idea. Si uno de ustedes se adelanta, haga que el otro enseñe. Este es también un gran ejercicio de aprendizaje. Si puedes enseñarlo bien y simplemente eso significa que tienes un conocimiento bastante firme del concepto. Si le resulta difícil explicarlo en términos simples, probablemente no conozca el material lo suficientemente bien.

Empezando
Incluso puede ir a la página web de casi una universidad de prestigio, encontrar los requisitos para completar su título en Ciencias de la computación y buscar cursos equivalentes en línea gratuitos en lugares como Coursera, Codeademy, MIT OpenCourseware, Khan Academy, edX, Stanford Online, Treehouse o Lynda (aunque las dos últimas cuestan dinero), etc. Lo creas o no, incluso puedes obtener estas cosas en línea, llamadas libros. Leer estas cosas de la edad de piedra también será muy beneficioso para ti.
Estoy escribiendo esta respuesta porque pensé que iba a intentar y hacer la parte difícil por ti. A continuación hay una lista de todo lo que tienes que hacer para comenzar.

1. Búsqueda en Google para cualquier currículo de requisitos universitarios de informática

2. Desglosar lo que hay que aprender de su página.

3. Encuentre fuentes gratuitas para aprender en línea que cumplan con esos requisitos

4. Aprender

5. Repita # 3 y # 4 continuamente

Sabes lo que me siento generoso. Te voy a mostrar exactamente por dónde empezar.

Me tomé la libertad de consultar las páginas de requisitos de CS de un par de universidades en línea:

  • Licenciatura en Ciencias de la Computación – Carnegie Mellon.
  • Licenciatura en Ciencias de la Computación – Berkeley
  • Licenciatura en Ciencias de la Computación – UCLA
  • Licenciatura en Ciencias de la Computación – MIT
  • Licenciatura en Ciencias de la Computación – UNC

Estos fueron solo algunos que pude encontrar en dos minutos.
Veamos echemos un vistazo a todos los requisitos ahora.

Ciencias de la Computación

A continuación se incluye una lista de muchos cursos de informática que se consideran fundamentales para obtener un título.

  • Introducción a la informática – ¡Este es el curso introductorio! Es muy importante que entiendas todo a este nivel. Todos los aspectos de la informática que se discuten aquí se utilizan en todas partes, todos los días, por cada programador. De variables, condicionales, bucles, funciones, clases, objetos, etc. Debe comprender todos estos conceptos. Mi consejo personal es encontrar un idioma y mantenerlo hasta que te conviertas en un experto. Idealmente, esto debería ser Java, C, C ++ o Python. C y C ++ pueden ser algo confusos para los principiantes, por lo que personalmente recomendaría Java o Python. Tenga en cuenta que este será uno de los cursos más difíciles de terminar. Estos fundamentos son muy difíciles de envolver al principio. Tienes que aprender cómo piensa una computadora y cómo una computadora lee lo que escribes. Sin embargo, estos conceptos son lo que debes entender. No puedes saltarte este curso bajo ninguna circunstancia. Programando Haciendo es un recurso Java muy bueno que pasa por muchos fundamentos de programación. Tutorialspoint es un gran recurso para toda su sintaxis de lenguaje básico. Este no es un buen buen tutorial de introducción. Hablan de lo básico pero no profundizan demasiado. Por lo tanto, me gustaría hacer referencia a este sitio, pero utilizar otras páginas para obtener una mejor comprensión de un idioma. El curso de Codecademy Python o JavaScript es un lugar decente para comenzar a aprender Python o JavaScript (JavaScript y Java no son lo mismo. Son muy diferentes). También tienen un montón de buenos ejercicios que son buenos para hacer. Tienden a tomar tu mano un poco y es un lugar decente para los principiantes, pero se equivocan en cuanto a cuánto te ayudan a entender conceptos básicos. Recomendaría leer un libro aparte a medida que avanza en sus lecciones para que pueda comprender mejor los conceptos que repasan. Introducción a la informática y la programación es un curso MIT que utiliza Python. Es un curso completo y, en general, MIT ofrece muchos cursos gratuitos que te recomendaría que consultes. Libros útiles y otros recursos: Head First Java , Effective Java , A First Book of C ++ , C: A Reference Manual , Learn Python The Hard Way , etc. No es que perdone esto ni nada más que buscar en Google el título de un libro y la concatenación de “pdf” hasta el final tenderá a devolver algunos resultados útiles 😉
  • Fundamentos de la programación y la construcción de software : los temas abarcan desde depuración, pruebas, generación de casos de prueba, máquinas de estados, tipos de datos abstractos, patrones de diseño, fundamentos de programación orientados a objetos, concurrencia, análisis, subprocesos, etc. Todos estos son temas avanzados. Muchos de los enlaces anteriores repasan estos fundamentos. ¡La clave es estar siempre codificando! Codifique constantemente más y más para envolver su cabeza en torno a estos temas. Busque más problemas en línea o preguntas que pueda probar y construir. Recuerde que la frustración es extremadamente común y se espera en esta etapa. ¡Puedes hacerlo aunque! Es importante tener en cuenta que estas dos primeras secciones tomarán mucho más tiempo de lo que probablemente piense, ¡y lo importante es seguir transportando! La estructura e interpretación de los programas de computadora es el curso de MIT que sigue al curso de introducción de MIT mencionado anteriormente. Muchos de los enlaces anteriores se extienden a esta área. Introducción a la programación en Java es otro curso de MIT que enfatiza Java en lugar de Python .
  • Nota : bien, ya deberías tener los conceptos básicos de programación hacia abajo. Probablemente debería consultar en este momento la documentación / comentarios sobre el código adecuado, el control de versiones y las mejores prácticas si aún no lo ha hecho. Un consejo que le daría es tal vez buscar la guía de estilo de código de una buena compañía. Este es un estándar que muchas compañías deben cumplir con el código para mayor claridad y legibilidad. Me gustaría ver la guía de estilo de una gran empresa, Google tiene la suya para ver en línea. Google Java Style , Google Python Style . Todo esto incluye reglas para la sangría, la longitud de la línea, las declaraciones, el formato, etc. Pruebe y tenga un estilo coherente hasta ahora.
  • Organización de la computadora : temas básicos sobre cómo funciona todo en un nivel inferior (el nivel inferior no es peyorativo, simplemente significa que está más cerca del hardware). Desde aprender sobre registros, transistores, puertas, circuitos, codificación en lenguaje ensamblador, canalización, aritmética, E / S, jerarquías de memoria, etc. Las estructuras de computación de MIT son una buena fuente general. La organización y diseño de computadoras , es un libro decente. No tiene que profundizar mucho en este curso si no quiere, es bueno tener una buena idea de cómo se organiza la organización de su máquina.
  • Algoritmos y estructuras de datos : cursos de ingeniería de software extremadamente importantes. Estos tienden a ser el tema de lo que muchos entrevistadores harán preguntas. Debes aprender todo de listas vinculadas, pilas, colas, clasificación, árboles, gráficos, etc. Aprende estos códigos internos y externos y selecciona el código. Los algoritmos de la Academia Khan son una gran fuente y Khan se asoció con los brillantes Tom Cormen y Devin Balkcom. Debe obtener el libro de Introducción a los algoritmos de CLRS para leer mientras trabaja en el curso de Khan. Probablemente será el único libro de algoritmos que necesitarás. Introducción a los algoritmos en MIT para un curso completo , y luego puedes seguir con este curso de Diseño y Análisis de Algoritmos . HackerRank es un gran lugar para ver dónde estás con todas estas habilidades. Debe usar HackerRank tan pronto como empiece a entender los algoritmos más avanzados.
  • Programación web : esto es lo básico de toda la programación www. Los idiomas y habilidades que tienes que aprender para ingresar al desarrollo web son HTML, CSS, Javascript, Ruby, PHP, etc. También puedes aprender sobre marcos que te ayudan a crear aplicaciones más manejables. Un gran ejemplo es Django con python. Codecademy ofrece una gran cantidad de cursos destinados a que entiendas todos los conceptos básicos y la sintaxis de algunos idiomas. Recomendaría crear un perfil y completar cada uno de sus cursos principales que correspondan a lo que he enumerado anteriormente. Con el fin de obtener una buena base sólida en la programación web, tendrá que ramificarse y aprender tecnologías como Angular, Node js y jQuery para JavaScript o también podría aprender Ruby on Rails.
  • Felicidades una vez que haya llegado a este punto de la lista, con una comprensión experta de todos los campos anteriores, es probable que ahora sea elegible para un trabajo. Esto no significa que si entiende todos los temas anteriores obtendrá un trabajo, significa que conoce todos estos temas como el dorso de su mano y luego puede ir y construir aplicaciones completas desde cero en este punto. Aún tienes que aprender mucho más por tu cuenta para obtener algo que probablemente quieras, pero en este momento deberías estar en una buena posición. Si ha llegado a este punto y no ha experimentado con Control de versiones , ha cometido un error. Sal ahora mismo y crea una cuenta de github. Inserte todo su mejor código en su cuenta y cuando haya terminado, programe aún más proyectos. Recuerda tus ABC’s (Be Be Always). Debería poder crear aplicaciones escalables que pueda impulsar en este punto. ¡Sal y construye algo! Puede ser cualquier cosa. Ni siquiera tiene que ser algo que cualquiera use. Es sólo para ti. En este punto, recomendaría simplemente mirar esta página completa de Ingeniería eléctrica y Ciencias de la computación del MIT . Enumera muchos cursos que puede enfocar en un intento de abordar por su cuenta. Me he tomado la libertad de agregar algunos temas para que se centren en lo siguiente.
  • Sistemas operativos : este es un gran curso que se basa en la organización de computadoras. Irás un nivel hasta el kernel y aprenderás todo sobre la administración de recursos y la sincronización de procesos. Esto es algo muy intenso y debe aprender el lenguaje C para comprender completamente cómo funciona un programa dentro del núcleo. Curso de Ingeniería del Sistema Operativo MIT . Semphores le dará un dolor de cabeza, pero si puede implementar un sistema básico de productor / consumidor en una entrevista, su entrevistador quedará muy impresionado.
  • Compiladores : una vez que haya tomado este curso y todos los cursos mencionados anteriormente. Debería haber muy pocos puntos ciegos en la informática para ti ahora. Al llegar a este punto, debe saber la mayor parte de lo que hay que saber sobre la composición de la informática. Debería poder obtener un trabajo ahora y todos los cursos que he enumerado a continuación son más o menos complementos a su conocimiento general como programador. Coursera suele ofrecer un curso de compilación. Recomendaría encontrar un buen libro que corresponda a lo que usted quisiera construir en un compilador. Computer Language Engineerinat MIT .
  • Redes : esto se centra en explicar cómo funciona Internet, que va desde cómo se modulan los bits en los cables y en los protocolos inalámbricos hasta los protocolos de nivel de aplicación como HTTP. Explicará los principios de cómo diseñar redes y protocolos de red. Curso MIT de Redes .
  • Bases de datos – Bases de bases de datos básicas. SQL es un buen lugar para comenzar. Coursera tiene un buen curso a pedido para esto también al momento de escribir este artículo.
  • Laboratorio de ingeniería : este es un curso que se ofrece en muchas universidades. Sin embargo, obtendrá lo mismo de la creación de aplicaciones reales desde cero, como lo hará al tomar un curso como este. Laboratorio de Ingeniería de Software es el curso MIT para el desarrollo de Java .
  • Lenguajes de programación : esto enseña los principios de los lenguajes de programación funcional, imperativo y lógico. Los temas incluyen intérpretes meta-circulares, semántica (operacional y denotacional), sistemas tipográficos (polimorfismo, inferencia y tipos abstractos), programación orientada a objetos, módulos y lenguajes de programación multiproceso en el MIT.
  • Inteligencia artificial – ¡Los robots nos matarán a todos un día! Inteligencia Artificial .
  • Gráficos – Cómo procesar y crear imágenes. Los temas incluyen transformaciones, iluminación y trazado de rayos Gráficos por computadora
  • Criptografía – Cifras, intercambios de claves, encriptación, computación segura, protocolos de clave pública, etc. Criptografía y Criptografía
  • Desarrollo móvil : esta es una excelente herramienta para tener en su caja de herramientas. Android y iOS son básicamente tus únicas opciones. Es más fácil comenzar con Android, ya que está en Java y no necesitas una Mac. Sin embargo, iOS tiene una comunidad excelente y Swift es probablemente el lenguaje más hermoso que he visto. Lynda tiene excelentes tutoriales para ambos, pero cuesta una pequeña tarifa mensual. También puede encontrar muchas lecciones gratuitas en línea, pero no he podido encontrar muchas que se destacan como material excelente para ayudarlo a comenzar. Recomiendo usar su período de prueba gratuito y luego aprender lo más que pueda dentro de ese período para obtener las habilidades que necesita para continuar por su cuenta.
  • Estoy seguro de que editaré más cursos aquí otro día.

Matemáticas

Todos los requisitos basados ​​en matemáticas para prácticamente cualquier institución de nivel superior requerirán estos cursos a continuación. Si bien es posible que no desee una profesión que sea muy pesada en matemáticas, es importante tomar estos cursos. Tomar estos cursos te enseña cómo pensar de manera eficiente. Las lecciones para prácticamente todos estos cursos de matemáticas se pueden encontrar en Khan Academy o MIT Open Courseware . También me he tomado el tiempo para ordenar estos en orden de importancia en un sentido general.

  1. Cálculo multivariable – Este es el cálculo de nivel superior. Los requisitos previos para este nivel son álgebra, trigonometría, geometría y niveles más bajos de cálculo. Cálculo: Trascendentales tempranos: James Stewart
  2. Discreto : en mi opinión, esta es una excelente disciplina matemática que cualquier científico informático debe conocer. El libro de las matemáticas concretas. Por Knuth es un gran suplemento. Este curso probablemente tenga la más alta prioridad que todos los otros cursos de matemáticas en esta lista. Matemáticas para Ciencias de la Computación es un curso de MIT .
  3. Probabilidad – Básicamente estadísticas sobre esteroides. Este es un curso muy importante si está pensando en ingresar a Data Science. Yo usaría la Academia Khan y este libro .
  4. Álgebra lineal : aprender estos fundamentos es muy importante para los campos que se ocupan en gran medida de los gráficos. Para este curso, prefiero las conferencias del MIT de Gilbert Strang y su libro que lo acompaña.
  5. Ecuaciones diferenciales : he visto que este curso se considera opcional para muchas universidades de nivel superior. Pero sigue siendo un buen curso a seguir. Una vez más, simplemente compruebe Khan y MIT .

Cursos varios
Estos son algunos buenos cursos de educación general que creo que pueden ayudarlo indirectamente en la vida y en la informática. No son realmente necesarios para aprender ciencias de la computación, pero tener un conocimiento básico de estos campos puede ayudarlo a mantener una educación integral.

  • Comunicación oral : créanlo o no, realmente tiene que poder comunicarse con sus colegas. Puedes ser un programador increíble, pero si no eres capaz de llevarte bien con las personas que te rodean todos los días, mucha gente no te contratará.
  • Física
  • Biología
  • Química
  • Astronomía
  • Negocio
  • Música
  • Filosofía
  • Ciencias económicas
  • Espíritu emprendedor
  • Historia
  • Cualquier cosa que siempre te haya interesado.

¡Eso es! Si toma los puntos anteriores, sale y realmente se aplica, podrá aprender ciencias de la computación. ¡Buena suerte!

Nota: de ninguna manera estoy diciendo que obtener un título es algo malo. Soy estudiante en este momento y, si bien sé que podría completar mi educación por mi cuenta, la universidad es un entorno de conducción y apoyo que me ayuda. Un título también es una prueba de que al menos tienes una pequeña cantidad de conocimientos de informática. Esto abre la puerta a muchos lugares, entonces, si no tienes un título.

También aprender por su cuenta puede ser algo muy difícil para la mayoría de las personas. Muchas personas necesitan la universidad para el medio ambiente para ayudarlos a tener éxito. Entonces, ¿ puedes aprender informática por tu cuenta? Sí, absolutamente, pero eso no significa que vaya a ser fácil.

🙂

Lista final de mis recursos favoritos:
MIT OpenCourseware
Stanford en línea
academia Khan
YT: DerekBanas
YT: LearnCode
Codeademy
CareerCup
Casa del árbol
Coursera
Reddit
Quora
edX

Más sobre mí

Como han dicho Varun y Harish: sí, ciertamente. En la universidad más cercana a mí, aquí en Queensland, Australia, aproximadamente 1, 500 estudiantes están estudiando ingeniería externa.

La ingeniería informática es probablemente la disciplina de ingeniería más fácil de estudiar solo, ya que las herramientas de estudio externas coinciden con lo que realmente estudias. Sin embargo, aproveche cada oportunidad para vincularse con otras personas que realizan el mismo curso en su localidad e ir a los eventos organizados por la Universidad.

Una advertencia, especialmente si has estado fuera de la escuela por un tiempo, prepárate para la dificultad del primer año de matemáticas. Algunas revisiones aquí serán útiles para usted.

Sí, absolutamente puedes. Todo lo que necesitas es-
1) la pasión
2) dedicación
3) Un buen conocimiento de los temas que debes estudiar.
4) una rutina
5) Recursos (Libros, YouTube, Videos)
6) Buenas habilidades de comunicación (para comprender lo que intentan explicar los libros y / o los videos)
y más importante

6) Exámenes (Un medio para probarse a sí mismo. Pueden ser las asignaciones al final de un capítulo. Puede ser un proyecto pequeño. CodeChef / SPOJ / Otros problemas para las habilidades de programación.

Puedes estudiar y tener un buen conocimiento de los temas que se encuentran en Ingeniería, pero hay un factor clave que hace que un Ingeniero sea lo que es: la capacidad de actuar bajo presión.

Tienes 3 exámenes al día y un sinfín de tareas y proyectos que tienes que hacer (lee ‘copia del nerd que lo hizo primero’).

Hay mucha presión de grupo.
Estás comiendo de un lío que es literalmente un ‘lío’.
Estás tratando de impresionar a las chicas lindas de tu clase.
Estás tratando de socializar con los Grupos y pareces una “parte” de ellos.
Al mismo tiempo, está confundido si debe comenzar a prepararse para un Trabajo (la diversidad viene más adelante. Debe averiguar para qué trabajo se está preparando), o debe prepararse para CAT / GATE / GRE.
Y todo esto sucede simultáneamente.

Entonces, si quieres estudiar las asignaturas de ingeniería CS, puedes hacerlo. Pero convertirse en uno es muy diferente. No se trata solo de libros y teorías, se trata de tus experiencias.

Un rotundo sí. Comencé a aprender sobre computadoras cuando estaba en la escuela secundaria. Había recogido un libro sobre Álgebra Booleana y me fascinaba. Lo leí todo y estudié todos los ejemplos. Esto fue en 1973, cuando no existía una computadora personal, pero había circuitos integrados, y un amigo mío y yo pasamos muchas veces soplando la parte superior de ellos (¡demasiado voltaje!). Para 1975, estaba el Altair 8800 y obtuve uno de ellos. Fui a la universidad, donde tuve la suerte de estar en un entorno rico en recursos informáticos y personas útiles. Cuando era estudiante de segundo año, estaba trabajando para el Departamento de Física, programando y diseñando hardware, y nunca miré atrás.

Finalmente tomé mi primera clase real de ingeniería informática en 2012 y disfruté muchísimo porque me obligó a aprovechar el tiempo para aumentar mis habilidades.

Entonces, creo que es seguro decir que puedes estudiar solo y aprender todo lo que necesitas saber. Pero, y es uno grande, conseguir tu primer trabajo es más desafiante porque no habrá ninguna organización que pueda responder por ti. Una vez que tenga ese trabajo, los trabajos subsiguientes se basarán en su desempeño en su primer trabajo. Entonces, conozca gente, vaya a casas abiertas de empleo, asista a conferencias, etc. para obtener algunos contactos.

Por último, y esto también es importante, tenga en cuenta que estudié solo, pero tuve un montón de gente muy útil para responder preguntas y ayudarme cuando estaba fuera de lugar. Esto va con la gente de la reunión. Puedes obtener mucha ayuda en línea, en estos días, es un recurso maravilloso.

Estos son los mejores recursos para convertirse en expertos en arquitectura de computadoras.
Cómo convertirse en un experto en arquitectura de computadoras

La respuesta simple es sí. Sin embargo, será a la vez más difícil y requiere más disciplina que simplemente ir a una universidad.

Es fácil pasar por alto elementos pequeños críticos pero necesarios, ya que el estudio individual puede centrarse demasiado en objetivos a corto plazo, como por ejemplo, cómo resolver un problema actual.

Sí hombre! por qué no … yo mismo soy ingeniero de CS, solo importa la graduación de uno para otro campo de ingeniería, pero CS tiene que ver con la habilidad y su destreza para resolverlo. Por lo tanto, le sugiero que piense en algo de manera extraordinaria.

Sí, ciertamente, aunque tener un entorno de apoyo definitivamente ayuda desde una perspectiva motivacional.