Study material

Please do familiarize yourself with (as much as you find necessary of) the following study material before attempting to approach the corresponding lab exercises. Naturally, all of the study material is not mandatory. However, you will notice how you greatly benefit from exploring this material.

Legend

Introductory Please use this material to get up to speed. This material is too easy to be part of the course, but may be very helpful if any of the concepts are completely new to you.

Appropriate This material is on par with the level of the course.

Advanced This might feel a bit more advanced than the contents of the course. But remember to always challenge yourself!

Block 1

I don't know C# — where should I start?

This is a C# video tutorial series with 100 videos starting from the absolute basics.

This is a C# video tutorial series of 200 videos that start from the basics and also cover Windows Forms (i.e. GUI programming).

How are iterators used in OO languages?

A brief video explaining what iterators are and how they implemented and used in Java, by Natan Schultz.

How do I implement Iterator Pattern in C#?

Derek Banas shows how to implement the Iterator Design Pattern in Java, by Derek Banas. Java is incredibly similar to C#.

Block 2 — Testing

What is TDD?

A 5 min video giving a high-level explanation of TDD.

What does TDD look like in the real world?

A 2 h video of a pair-programming session with Roy Osherove. A real-world situation resulting in real-world problems. A TDD pair-programming session with Roy Osherove.

How do I do TDD in C# with Visual Studio?

A 17 min video demonstrating how test-driven development can be carried out in C#.

How can I achieve high test coverage? What is Triangulation?

A blog post about a more "extreme" approach to TDD that aims to result in higher test coverage.Triangulation in Test-driven development

Are there TDD anti-patterns?

Blog post on things you "should not" do.TDD anti-patterns

How much implementation code should I write before I write the next test?

Robert C. Martin suggests a more rigorous approach to TDD. Video. There is also a blog post on the same topic.

Block 2 — Refactoring

What is refactoring?

Wikipedia pageWhat is refactoring?

What should I refactor?

Below are a number video playlists that enact and explain some of the techniques from the great book by Martin Fowler called Refactoring.

Composing Methods

Moving Features Between Objects

Organizing Data

Simplifying Conditional Expressions

Making Method Calls Simpler

Dealing With Generalization

I need more examples of refactoring...

Derek banas has a long series where he applies refactoring step by step. This might help if you want a little more narrative and context.

Block 3 — Design Patterns

Is Head First: Design Patterns a useful book?

Of course it is. It's the course book. Read it. Head First Design Patterns

Is it true that Christopher has made videos on Design Patterns?

Indeed. I hope they help. Let me know if I can make them better somehow.

Are there videos showing code examples of Design Patterns?

Indeed. Derek Banas has made a whole lot of screencasts with code examples of popular patterns.

Block 4 — Code Contracts

What is Design By Contract?

Click here for video.

How can I use Code Contracts in Visual Studio?

What are Code Contracts and how can I use them in .NET?