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
- ¿Qué debo aprender para convertirme en ingeniero de software?
- ¿Cómo se convirtió India en una potencia de software?
- Compare y contraste los roles de un desarrollador de software y un probador de software. ¿Cuál es mejor para un más fresco?
- ¿Qué universidades ofrecen programas de MBA sin GMAT en los EE. UU. Con 2 años de experiencia laboral en el campo de las pruebas de software?
- ¿Qué trabajos puedo realizar en la industria del software si no estoy interesado en la programación?
- 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.