I have put together a list for my mentee to study for the next 6 months. She is just getting started with programming, even though she did a bit of C and VB. This list is targeted towards the technology we are working with currently so some categories might not apply generally. I hope that this list might help some of you who are just getting started as well.
The list is in no way complete. Suggestions are of course welcome!
Object Oriented Programming
- Object orientation
- Objects
- Association, aggregation and composition
- OOP principles:
- Encapsulation
- Abstraction and generalization
- Inheritance
- Polymorphism
C#
- Classes
- Class vs. object
- Class vs. structure
- Value types vs. reference types
- Stack vs. Heap
- Private / protected / public members
- Fields, properties, methods
- Static members
- Virtual members
- Abstract classes and interfaces
- Class vs. interface
- Interface vs. abstract class
- Implicit vs. explicit interface implementation
- Base classes and subclasses
- Method overloading
- Method overriding
- Conditional statements (if, if-else, switch…)
- Loops (for, foreach, while)
- Recursion
- Generics
- Generic collections, like List<T>, Dictionary<>
- Events
- Event delegates
Visual Studio
- File types
- Project template types
- Solution Explorer
- Properties window
- Toolbar window
- Set as startup project
- Add reference
- Compile and run
- Debug, attach to process
- Watch, Call stack window
- Namespaces
- Solutions, projects
- References to projects, namespaces
Windows Forms
- Forms
- Controls
- Event handlers
- Data binding
UML
- Class diagram
- Sequence diagram
- Use case diagram
Software Design
- SOLID principle
- Clean code
- Gang Of Four Patterns
Software Architecture
- Two-tier/three-tier architecture
- User interface layer
- Business logic layer
- Data access layer
- MVC architecture
- MVVM architecture
- SOA – service oriented architecture
Software Development Processes
- Waterfall model
- Agile development
- LEAN
- Software prototyping
- TDD – Test Driven Development
- DDD – Domain Driven Development
- FDD – Feature Driven Development
- Iterative and incremental development
- V-Model
- Scrum