C-Sharpen Up 2012.2
Event Information
Description

Now is the time to take your C# skills to the next level!
Saturday Oct 6, 2012 from 8:00 am to 4:30 pm
Summary
We'll end the day with a look at some popular "Best Practices" that can also help take your skills up a notch. What's best is that all of this material is based on current technology. So you'll be able to start using what you learned immediately!
Intended Audience
Agenda






Presenters
Stephen Bohlen Currently a Senior Software Engineer for SpringSource where he is the Technical Lead and Community Evangelist for the Spring.NET Framework, Stephen brings his varied 18-year-plus experience in software and technology to the design and delivery of Software Engineering Solutions and Frameworks for other Software Engineers. In addition to his work on Spring.NET, Stephen is also an active contributor to several other .NET Open-Source Software projects including NHibernate, NDbUnit, and others as well having developed a number of Visual Studio productivity add-ins. Active in the software development community, Stephen speaks publicly, blogs (semi-)regularly, and is the author of several popular screencast series focused on Agile and ALT.NET concepts and technologies including the widely-praised 15-part Summer of NHibernate video series introducing viewers to the popular open-source O/RM tool. Stephen is also a founding/organizing member of the NYC ALT.NET user group which meets monthly to discuss Agile-focused techniques and technologies in the world of Microsoft software development and beyond. Steve is presently a Microsoft Visual C# MVP and in years past has been an MVP in both ASP.Net and Solution Architecture. He is also a member of the ASP.NET Insiders and Visual C# Insiders.
Danilo Diaz, aka Dani, is a Developer Evangelist for Microsoft's Mid-Atlantic State district. In this role, he helps developers understand Microsoft's product offerings and strategy. Prior to joining Microsoft, he worked at Perficient Philadelphia where he helped establish their Mobility Practice. Dani has over 8 years of experience in the IT industry. His ability to identify and utilize the right blend of technologies to solve business needs has been an asset on all projects he has worked on. Dani's first .NET project was a Web-based eLearning application which was built on ASP.NET 1.0 Beta 2. As a consultant he has served the roles of system architect, technical lead, developer and mentor on various large and small projects. He has worked on SOA-based applications, Web applications, Windows applications and mobile systems.
Steve Michelotti is a Microsoft ASP.NET MVP and an Architect/Developer for Applied Information Sciences (AIS). He has consulted at Advertising.com/AOL where he was the Tech Lead for one of the highest volume .NET applications in the world. He previously was the Chief Technologist at e.magination. Steve is a frequent presenter at developer user groups and Code Camps along the East Coast and holds the MCSD, MCPD, and MCT certifications. Steve has been on Microsoft Channel9 and his published articles include Visual Studio Magazine and his blog: www.geekswithblogs.net/michelotti.
Andy Schwam is a Microsoft C# MVP and a Technical Architect at Global Indemnity where he builds web applications with ASP.Net MVC and of course, C#. For several years he's been designing and delivering testable systems with patterns like Dependency Injection, Single Responsibility and more. He has delivered many web based, data driven applications throughout his professional career. Andy is an experienced speaker and trainer and has spoken at a variety of user groups and events, presenting a variety of topics. Andy is a Board Member and Presenter at Philly.Net. He has been creating software applications since 1999.
Session Details
The Fundamentals Of .Net: In this talk we can talk about type system, manage code, assemblies, IL, reflection and GC.
Adding .NET Generics to your C# Recipes: When .NET introduced Generics, they were largely used in the Base Class Library to support strongly-typed collections. But Generics also open the door to a richer vocabulary for us to use to express our intent in code. In this session we will explore the multitude of uses for .NET Generic Types beyond collections including creating more flexible class declarations and method signatures as well as understanding the role of generic type constraints.
Demystifying Lambdas: A Lot More Than Just LINQ: When .NET 3.5 ushered in the age of the lambda expression for C#, the most visible use-case for this language feature was in support of Language-integrated-Query (more commonly known as "LINQ"). But lambdas also offer us the opportunity to be much more succinct in our coding of many common C# constructs. From events to delegates to anonymous methods, closures, and more, lambdas offer us the opportunity to say more with less in a fundamentally different way than we've previously considered using C#. In this talk we will explore both the underlying principles behind lambda expressions and several of the ways that we can drastically improve our code by leveraging this new functional-style paradigm in .NET.
LINQ and Other Language Enhancements: LINQ (Language Integrated Query) is one of the best and easiest to use features in .Net. Introduced in C# 3.5, it allows developers to easily query collections of data. What is great is that it allows the same technique/syntax to be used to query objects in memory, databases, xml and other sources. The session will focus on the core principals of LINQ as well as several related language enhancements that make LINQ possible including extension methods, anonymous types, implicitly typed variables, and more.
C# 4.0: This presentation will cover the new C# 4.0 language features. This demo-heavy session will begin by covering various dynamic scenarios with C# including the new “dynamic” keyword, simplified Reflection, custom dynamic objects, duck typing, Iron Ruby integration, and more. We will also cover named and optional parameters, new COM Interop enhancements, co-variance, and contra-variance. If you are a C# developer, come learn about the new language tools that you can put in your toolbox!
Refactoring to a SOLID Foundation: In this session we take a small, functional but tightly-coupled, software solution and improve its design using each of Robert C. Martin's S.O.L.I.D. principles as follows: SRP: Single Responsibility Principle; OCP: Open-Close Principle; LSP: Liskov Substitution Principle; ISP: Interface Segregation Principle; DIP: Dependency Inversion Principle. Each principle is applied in sequence to the existing solution, making it possible for the attendee to observe the principle in relative isolation first while also evolving an understanding of how the principles all collaboratively reinforce each other when applied together. Before each principle is applied and the solution is refactored to introduce it, the attendee is presented with one or two simple PowerPoint slides to introduce the concept and provide some abstract understanding of its goals and benefits to OO programming. The principle is then applied to the existing solution, demonstrating the practical application of the principle to working software. At each step along the way, the existing solution (a simple console application) is re-executed, demonstrating that the overall behavior of the software solution has not been negatively impacted by the various refactorings.
Unit Testing, Dependency Injection and Mocking: In this presentation I'll provide an introduction to unit testing with the help of Dependency Injection and Mocking. If you struggle with unit testing, you'll see how these tools can make life easier for you.