Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I was looking for a good C# book for beginners to learn the language fundamentals and OOP fundamentals, however, every book I have looked at seems to start quickly and does not touch the fundamentals in a professional learning way or maybe the authors are good at programming but not so good at how to teach the subject to others.

Is there a book out there that's the de-facto standard for describing best practices, design methodologies, and other helpful information about C#? What about that book makes it special?

share|improve this question

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

closed as off-topic by gnat, Dan Pichelman, MichaelT, Kilian Foth, GlenH7 Oct 18 '13 at 13:35

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, Dan Pichelman, MichaelT, Kilian Foth, GlenH7
If this question can be reworded to fit the rules in the help center, please edit the question.

    
Microsoft's beginner tutorials are quite good. –  Robert Harvey Oct 21 '11 at 22:32
3  
Hi Simon, open-ended book recommendation questions don't work well here, as they tend to be a list of people's favorite book with no explanation about why the books are any use. I've revised your question to better fit with what types of book questions we do allow here. For more information, check out Are book recommendations on-topic?. –  user8 Oct 21 '11 at 22:51
1  
I don't think you should be aiming for a book that tries to cover both language fundamentals and proper design methodologies. It's probably not going to do a very good job at either. –  Yam Marcovic Oct 22 '11 at 0:22

4 Answers 4

To start with C#, I suggest Head First C#.

The Head First series also has an OOP book, but I don't know how good it is.

share|improve this answer
    
The Head First OO book is great(my first HF book and I've bought 5 more since). Even better is the Design Patterns book but start with the OO one. –  Eoin Carroll Oct 21 '11 at 20:56

Oop with Microsoft Visual Basic .Net and Microsoft Visual C# .Net Step by Step is the book I read years ago which was my first formal education on both C# and Object Oriented Programming. I did have experience with scripting, but not really anything object oriented. I found both the pace and content to be just what I was hoping for.

share|improve this answer

Well, the "problem" with C# is, it's a multi-paradigm language, the most prominent aspects being:

It is hard to teach C# and the most common patterns employed without trying to explain all of them at once. I guess that's why most introductory books will only skim that, because honestly you could fill a bookshelf explaining the mechanisms and the strengths and pitfalls of every single approach, and then their combination.

If you're in a hurry to learn C#, learn C# first and then go into detail when you're having trouble to decide how to solve specific problems you encounter (asking here should get you good pointers or even the answers you're looking for).

To anybody who wants to "work their way up" from the bare bone basics I suggest starting with Ruby, for a number of reasons:

  • It has quite a low entrance barrier and requires no boiler plate code. When you write your first Ruby program, you only see code that you completely understand.
  • It is purely object oriented. You can concentrate on understanding that approach.
  • It is dynamically typed. From a beginner's perspective, this is desirable, because you don't have to understand the intricacies of static type systems to write code. You can focus on creating type relationships in your head, rather than spending time on communicating them to your compiler.
  • It will slip in functional programming very naturally, without you even really noticing at first.

Even as an experienced programmer, Ruby will deepen your understanding of OOP (unless you already know Smalltalk, Io, CLOS or something of that kind). And as a beginner, it is a very unobtrusive approach to the subject.

Of course starting with Ruby if you're aiming for C# is a bit of a detour. But IMHO it's worth it, if you can spare the time.

But one thing you should know is: To truly understand the purpose/role/place of an approach/paradigm/strategy/pattern/idea, you must test it in the field and that means gathering experience by trying to fit it into a project of considerable size and life time.
No book, no matter how well written, no guru, no matter how wise, can provide a substitute. They are good sources of guidance, but looking for one that will give you all the answers in a blink of an eye is waste of precious time that you could spend learning from your own mistakes in your attempt to put to practice whatever answers you do get your hands on.

share|improve this answer
    
You don't have to learn all of the C# paradigms simultaneously. The logical progression is to learn class-based programming first, then generics, then functional programming. If you'd studied C# in any detail you would already know this. –  Robert Harvey Oct 21 '11 at 22:28
    
@RobertHarvey: Of course you will learn sequentially, because you are a human being. The point is, you need to understanding what a type parameter is, to grasp what an array's type is, and what a function object is, to make sense of the most simple GUI. Most books for beginners try to quickly get to the part where you build something you can see, which requires simultaneous knowledge of all 3, at least to some degree. Nobody will want to (or arguably even should have to) work through chapters on interfaces or classes vs. structs, let alone subjects like co/contra-variance prior to that. –  back2dos Oct 22 '11 at 0:04

OO Language books tends to focus more on the syntax of the language rather than the OO and OOP parts. Also, C# field includes the basic language and its frameworks such as ASP.NET. So, books tend to focus on one thing mostly.

To find a book that covers many things at once will not probably be possible (or practical). I suggest you plan your learning as follows:

1 - Learn the basics of C#.Net, this will give you the basic syntax and how to construct and run programs. It will introduce you to objects to some extent. Many books will fit this category.

2 - Find a book that focuses on OO/OOP such books include OO design, OO Paterns, etc. You may like to take a look at this one (Beginning C# Object-Oriented Programming)

3 - You may then want to focus on a framework such as ASP.NET, etc.

It usually takes several books to learn a language, so be patient. Also, consider video tutorials from providers for example:

Link-1

Link-2

Please note that I can't recommend these courses or book, I have provided the information only as an example of material that addresses your question.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.