Course materials & problems for HackBulgaria's Programming 101 with C#. Starting November 2015.
The course is happening thanks to the following companies:
- Working with Visual Studio - projects, solutions, compiling & running.
- Basic cmd commands
- Introducing C# with syntax, types & language constructs
- Problem solving & debugging with C#
- Working with methods in C#: named parameters, params keyword, yield, ref, out. Reference types and value types. Overloads and optional parameters.
- More built-in types: DateTime, CultureInfo, formatting strings, the TryParse/TryGet concept, Math, Random
- Working with source control systems: git and TFS
- Introducing C# OOP concepts & Solving OOP problems
- classes/structs/enums: members (fields/properties/methods)
- modifiers (encapsulation)
- namespaces
- Objects, base Object type, class/struct
- base methods:
ToString()
,Equals()
,GetHashCode()
- constructors
- redefining operators
- static members
- Second take on C# OOP concepts
- Interfaces & standard interfaces:
IEnumerable
,IComparable
- Inheritence & Abstract Classes
- Polymorhism
- Overloading vs Overriding vs Hiding
- When to use inheritance and when to use a member
- is vs has
- Interfaces & standard interfaces:
- Introducing Generic Types
- Introducing C# Collections & data structures in C#
- Solving problems with different data structures.
- Nullable types
- Introducing delegates and events
- Working with nested & anonymous Classes
- Static constructors
- Introducing exceptions in C#
- Introducing LINQ and working with LINQ over collections
- Introducing lambda expressions
- Introducing IO in C# - working with files and streams
- Introducing XML as a data format. Working with LIQN to XML
- Data serialization to XML and binary
- Introducing Test Driven Development
- Introducing review process in software development
- Working with tools like stylecop
- Intoducing some basic UI with WinForms
- Solving problems in teams
- Introducing Threads and background workers and tasks.
- async / await concept
- Looking at the bigger picture - objected oriented design
- Desining larger systems & making bigger software projects using everything we know up to now.
- Introducing NuGet and working with 3rd party libraries.
- Working with JSON serializers and HTTP clients
- Introducing databases - SQL, connections & data readers.
- Introducing the concept for ORM with Entity Framework
- Introducing Reflection in C#
- How does it work? CLR, Virtual machines & .NET overview
- Working with technologies
- ASP.NET, MVC
- ASP.NET, WebAPI
- WPF & XAML