Originally posted by Sublimity
May you point them out so I can fix.
(This was quickly written in my spare time so, :/)
Now, I'm not sure what level of programmer this tutorial is targeting, but assuming it's meant to be introductory, I'd consider teaching C# as a first language to be a bad choice. That aside, here are some points I noticed (from the three of your tutorials posted as of this time):
From your first tutorial:
- C# is multi-paradigm.
- You mention computing-power. C++, C#, Visual Basic, and all computationally universal programming languages have the same amount of computational ability. I've also never heard of a language described by its "computing-power", but rather, computers.
- ".Net" is actually ".NET"
- Your installation time might be slightly (or very) off. I have installed Visual Studio on both my laptop and desktop (although they are relatively new and of high quality), and it has taken no longer than a few minutes.
- When describing the C# language, you mentioned a few points that attempted to describe the language, but you failed to ever describe the core features (or perhaps, distinctions) of the language (such as paradigm, type system, major implementations aside from Microsoft's Visual C#, etc.).
- Assuming this tutorial is for beginners - how many of them know what SOAP, XML, or even object-oriented programming is?
- Two points you mentioned were XML and SOAP, but you never described what they were, or how they were used in programs (specifically, programs written in C#).
From your second tutorial:
- A WinForms application isn't just for "creating applications" - it's specifically for creating forms (effectively a GUI). A "UI" doesn't necessarily translate to a "GUI".
- A WPF application is effectively the next generation of WinForms. It's also built for making GUIs, it's just more modern, and employs a different (possibly better) method of designing GUIs than WinForms. I'd suggest you teach WPF as opposed to WinForms, there's not much sense in teaching outdated technologies.
- Not really a problem, but you didn't make "Console Application" bold in your list of options.
- A Console Application is designing for creating applications that run from a console window (which is only somewhat synonymous with "command-line application"). Console applications are not the same as Batch, they are not related to Batch. I think it's a bad comparison.
- A Class Library is for creating a library of classes, not explicitly a DLL. It's not used to clean up code, it's used to store and organize classes (which are code).
- You don't necessarily want to break up a program into a class library without good reason. You should use it when you're developing a library - not when you want to break up your program.
- Class libraries are not used to separate events.
- Class libraries should certainly not be used for teamwork! If you need to work with a team (whether remote or in the same room as you), you use modern communication tools, software configuration management tools, and ideally a defined (or series of defined) development methodologies. You do not use class libraries.
- You missed the core distinction of a WPF browser application: it runs in a (client's) web browser, and requires the client to have .NET 3.0+.
- Please make them rename forms! Start building good habits early.
From your third tutorial:
- Please, make them rename components!
- ".Text is defining the value in which we are invoking" hardly makes any sense. See broad criticisms. You've jumped into properties without explaining what properties are.
- When double quotation marks wrap a portion of text, the text is handled as data (of the string literal type), rather than code. Side note: for new programmers, you never explained what a string was.
- = is the assignment operator (please give the real names of things early on, it makes them easier to discuss later).
- Your note about = vs == isn't relevant, because they know nothing about logical operations or statements.
- You just breezed right over event driven programming.
Broad criticisms:
Your tutorial, at least up until this point, is not focused on C#. It seems to be focused on .NET, Visual Studio, and (especially) WinForms. While all are useful tools when developing in C#, they have little bearing on the C# language. By jumping directly into WinForms, you've failed to teach core, necessary constructs - you've simply begun using advanced tools and programming techniques (without explaining the tool or technique). You've offered no clear explanations about core programming concepts, and have only demonstrated "flashy" things, things that ultimately don't bear relevance in programming. You've also failed to explain and define certain terms of concepts that would not be understood by a truly new programmer.
I may have missed a few points, if you'd like me to give more examples, I'd be happy to. Don't take this the wrong way, I'm not trying to bash your tutorial. Like I said, it's mostly well written, and is quite well organized. There are a few technical errors. There are a few flaws in your teaching methodology. Of course, there are frequently minor technical errors in learning resources - even professional ones. I'd be most concerned about the teaching methodology.