Temo che in Italia non ci sia nessuna laurea davvero adatta, ma la piu' vicina e' "informatica".
Ecco una lista di cose che avevo scritto per preparare un programma per una scuola. Escludo la parte di rendering e tutte le conoscenze specifiche per i vari reparti. Questo programma copre piu' o meno quello che ci serve da un programmatore Junior.
In genere siamo titubanti al prendere i Junior dall'estero, ma facciamo eccezioni per persone che si dimostrano eccezionalmente portate.
C++:
Generally, when the language is known (with books like “Thinking in C++”, which is free), the best solution is to read all the “Effective” books by Meyers.
When the read is done, apply everything to real problems.
- Casts: C++ has its own casts, they need to be well known.
- RTTI: what it is.
- “const” keyword: what does it mean in C++ and how to proficiently use it.
- Templates: what are them and how to use them proficiently .
- STL containers and algorithms: How to use them. Even if not used directly, is the best approximation to any container.
- Compile/Link: what happens during compilation and linking
- Namespaces: how to use them
- Preprocessor: how to use it.
- References: how and when to use them
- Cache: how it works and how to make your code faster.
Programming:
Every argument should be presented with some exercises with real problems.
- Patterns: at least GOF.
- OOP: classes, objects, inheritance, polymorphism and so on.
- Multithreading: synch solutions, double buffering, deadlock problems and so on.
- Data structures: Lists, Trees, Hashmap, sets and so on.
- Optimization: choose the best algorithm for every situation.
Math:
Every argument should be presented with some exercises with real problems.
- Vectors
o What is a Vector: representation and simple operations.
o Dot product and Cross Product: What are them, what they mean and how they are calculated
o Trigonometry: how to solve vector problems with trigonometry
- Matrices
o What is a Matrix: representation and main operations (mul, add, sub).
o Rotation, View and Proj Matrices: how are built, what they represent.
o Homogeneous Coordinates and Matrices: what are homogeneous coordinates and how are used in 3d computer graphics.
- Quaternions
o What is a Quaternion: definition, representation and basic operations.
o Rotation using Quaternions: What problem solves, when to use it
o Gimbal Lock: what it is and why quaternions solve it