¿En qué consistiría el curso de ingeniero de software autodidacta?

Introducción a la programación (usando C)

  • Flujo de control básico (si / while / for, etc.)
  • Las funciones
  • Punteros y sus aplicaciones (aritmética de punteros, punteros como argumentos de función, pasar por referencia / valor, etc.)
  • Gestión de memoria básica (pila frente a montón, malloc / gratis, etc.)
  • Estructuras de datos (pilas, colas, árboles, listas vinculadas, matrices, etc.)
  • Algoritmos (clasificación, búsqueda, recorrido de estructura de datos)

OOP (Programación orientada a objetos usando C ++ o Java)
Si bien existe un debate sobre la programación orientada a objetos frente a la programación orientada a datos, es importante comprender los conceptos de oop para operar en la industria.

  • Clases y herencia
  • Polimorfismo
  • Encapsulamiento
  • Paso de mensajes

Estructuras de datos

  • Arboles binarios
  • Muchísimo
  • Gráficos
  • Matrices dinámicas (vectores)
  • Listas enlazadas
  • Colas
  • Pilas
  • Conjuntos

Algoritmos

  • Medición de la complejidad del tiempo y el espacio.
  • Búsqueda (búsqueda binaria, búsqueda por profundidad, búsqueda por amplitud, retroceso, etc.)
  • Divide y conquistaras
  • Clasificación (clasificación por inserción, clasificación rápida, combinación, etc.)
  • Algoritmos codiciosos (cambio de monedas, algoritmo de Dijkstra, códigos Huffman, problema de mochila)
  • Programación dinámica (números de Fibonacci, matrices multiplicadoras, Floyd-Warshall, subcadena común más larga, etc.)
  • Búsqueda de texto (algoritmo Knuth-Morris-Pratt, algoritmo Rabin-Karp, etc.)
  • P y NP

Arquitectura de computadora / diseño

  • Cómo se compilan sus programas en código máquina y se organizan como códigos operativos para ejecutar.
  • Cómo se organizan los datos / instrucciones en registros para realizar operaciones en ellos.
  • La relación entre la memoria caché / memoria y cómo organizar su código para aprovechar la arquitectura de la computadora (errores de memoria caché, etc.)
  • Chip de rutas de datos.

Sistemas operativos

  • Procesos, hilos
  • Programación de procesos
  • Concurrencia (punto muerto e inanición)
  • IO Management y programación de disco
  • Fragmentación de la memoria
  • Memoria virtual
  • Paginación
  • Cachés
  • Gestión de archivos

Esto está fuera de mi alcance, estoy seguro de que esto podría necesitar mucha edición, pero es un buen comienzo.

Depende de lo que esté buscando si está buscando un título equivalente.

  • Programación (declaraciones de control y tipos de datos)
  • Bases de datos
  • OOP
  • Algoritmos y estructuras de datos para entrevistas 🙂
  • Algunos sistemas operativos y, con suerte, material de arquitectura informática
  • Una especialidad (aprendizaje automático, web, móvil, seguridad)

Con eso tienes suficiente para competir con personas que obtuvieron un título (faltan algunos aspectos pero puedes aprenderlos en el trabajo)

Si solo desea que un trabajo tenga un desarrollador web o desarrollador móvil, la ruta es mucho más corta

  • Programación
  • Una especialidad
  • Capacidad para gestionar contratos y presentarse.

Después de ese punto, puede aprender todas las otras cosas anteriores en la necesidad de saberlo.

More Interesting

Soy ingeniero de software con cuatro años de experiencia y me siento bastante perdido en este momento. ¿Hay alguien más que sienta lo mismo?

¿Qué trabajo tiene un futuro mejor: un ingeniero de desarrollo de software en Microsoft o un asociado en Morgan Stanley Advantage Services?

¿Cuáles son las actividades para el desarrollo de un buen software?

Cómo ser muy bueno con las computadoras y el software

¿Es una contradicción cómo hay escasez de ingenieros de software pero el campo se está volviendo más competitivo?

Cómo conseguir un trabajo de ingeniería de software

¿Cómo debo prepararme ahora para ser bueno en la codificación (para convertirme en desarrollador, ingeniero de software, etc.)?

Cómo convertirse en un buen ingeniero electrónico

¿Debo abandonar la idea de convertirme en ingeniero / programador de software, porque no tengo un título universitario en ese campo?

Soy BE CS estudiante de último año, quiero seguir mi carrera en pruebas de software. ¿Es esta una buena opción profesional en términos de ganar una cantidad decente de dinero?

Soy un programador de computadoras con dos años de experiencia. Me gustaría pasar a una función de gestión. ¿Qué tengo que hacer?

Necesito algunas opiniones Soy ingeniero de software y recientemente recibí una oferta de Yahoo y eBay. ¿A qué compañía debo ir?

¿Qué puede hacer un ingeniero de software de Microsoft si se le ha dado un aviso de 3 meses para ser despedido?

¿Hacia dónde se dirigirá la ingeniería de software en 2030 o 2035?

Trabajo en TI, pero quiero profundizar en el desarrollo de software. Cumpliré 45 años en agosto. ¿Soy demasiado tarde para aprender esto?