SmartSaver ER Diagram Requirements Creating and using your own class, struct and enum (with flag(s), preferably) Property (standard, indexed, auto-implemented) usage in struct and class. Named and optional argument usage. Extension method usage. Reading from file. Generic type usage. Regex. Widening and narrowing type conversions. Putting data to collection, iterating through it the right way. LINQ to Objects usage (methods and queries), including groupJoin. Implementing some of the standard .NET interfaces (IEnumerable, IComparable, IComparer, IEquatable, IEnumerator, etc.) Lazy initialization. Generics (in delegates, events and methods). Delegates. Events and their usage: standard and custom. Exceptions and dealing with them in a meaningfull way. Anonymous methods. Lambda expressions. concurrent programming (threading or async/await (for your own written classes); common resource usage between threads). Config file usage (both - app and user). Dependency Injection. Prepair ER diagram and create the database (MS SQL, but not mandatory - only important to be able to integrate to your solution). Transfer/update data using DataTable and DataAdapter. Select/insert/update/delete usage. LINQ usage: Join, Group, Skip and Take, Agregate function. Entity Framework usage.