iffypop in Sydney is doing 1 thing including…

learn c#

iffypop has written 4 entries about this goal

Review: The .NET Framework  — 1 year ago

Hello! – For day one, i’ll be reviewing the .NET framework. I’m pretty familiar with most components of the framework, so I thought a quick browse of the Wikipedia Article.

I’ve written my findings below – some parts are copied straight from Wikipedia.

Definitions

The Microsoft .NET Framework is a software component that can be added to the Microsoft Windows operating system. It provides a large body of pre-coded solutions to common program requirements, and manages the execution of programs written specifically for the framework.

Features/ Facts

  • The framework contains a large class library (the Base Class Library – BCL) which covers a large large range of programming needs in areas including: user interface, data access, database connectivity, cryptography, web application development, numeric algorithms, and network communications. The functions of the class library are used by programmers who combine them with their own code to produce applications.
  • The framework provides the means to access resources regardless of programming language.
  • The framework allows access to COM components.
  • The Common Language Runtime (CLR) acts as a virtual machine, so you dont have to worry about CPU specifics. The CLR takes care of security mechanisms, memory management and exception handling among other things.
  • The Common Type System (CTS) defines datatypes and programming constructs supported by the CLR – so you can develop in multiple languages.
  • The framework compiles code into MSIL assemblies (EXE or DLL).

Comparisons with other frameworks

  • v1.0 vs. v1.1 – New APIs, Support for Mobile ASP.NET, ODBC support for Oracle
  • v1.1 vs. v2.0 – Tons of new ASP.NET controls, and APIs. Generics. New Data Controls.
  • v2.0 vs. v3.0 – Vista managed APIs. Includes same CLR as 2.0 (ie. no architecture changes)
  • .NET vs. J2EE – Very similar. Java has virtual machine, bytecode (.net = MSIL). .NET is only really working on Windows, whereas
    JVM works on many different architectures.
Topics to Study  — 1 year ago

I found a course in Advanced C# Programming here

This seems to cover most of the language/framework areas I’d like to learn.

  • .NET Framework Review
  • Common Language Runtime (CLR)
  • Common Type System (CTS)
  • Value Types vs. Reference Types
  • Extending System.Object
  • String vs. StringBuilder
  • Object-Oriented Programming
  • Defining and Using Classes
  • Understanding Partial Classes in .NET 2.0
  • Understanding Object Lifetime
  • Building Class Hierarchies
  • Forcing Inheritance with Abstract Classes
  • Preventing Inheritance with Sealed Classes
  • Cross-Language Inheritance
  • Visual Inheritance
  • Defining and Implementing Interfaces
  • Working with Generics in .NET 2.0

NET Interfaces and Collections

  • IDisposable
  • Building Disposable Objects
  • ICloneable
  • Building Clonable Objects
  • IComparable and IComparer
  • Building Comparable Objects
  • ICollection, IDictionary and IList
  • Using ArrayList, HashTable and SortedList
  • IEnumerator
  • IEnumerable
  • Defining Custom Collections
  • Working with Generic Collections in .NET 2.0
  • Defining and Versioning Assemblies
  • The Role of .NET Assemblies
  • Private and Shared Assemblies
  • Understanding Private Assemblies
  • Building and Using Single-File Assemblies
  • Building and Using Multi-File Assemblies
  • Understanding Shared Assemblies
  • Strong Names
  • Global Assembly Cache (GAC)
  • Building, Configuring and Consuming Shared Assemblies

.NET Interoperability Services

  • Interactions between Managed and Unmanaged Code
  • Interop Marshalling
  • Platform Invocation Service (PInvoke)
  • Calling Platform DLL’s from .NET
  • Using COM Servers from .NET
  • Runtime Callable Wrappers
  • Thread Interoperability with COM
  • Calling .NET Components from COM
  • COM Callable Wrappers
  • Advanced Data Management Features of ADO.NET
  • The ADO.NET Object Model
  • Connected vs. Disconnected Access
  • Using the ADO.NET 2.0 Provider Factory Model
  • Connection Pooling
  • Working with Connected Data
  • Using Stored Procedures
  • Transaction Management
  • Working with Disconnected Data
  • Using Multiple Tables with DataSets
  • Filtering Data with DataViews
  • Using Strongly Typed DataSets
  • Binding Data to Controls

Working with XML

  • Using XmlReaders and XmlWriters
  • Using Xml Schemas for Validation
  • Managing XML Data using XmlDocument
  • Delegates and Events
  • What are Delegates?
  • Using Delegates
  • Singlecast vs. Multicast Delegates
  • Relationship between Delegates and Events
  • Defining Custom Events
  • Trapping Custom Events

Multithreading in .NET

  • Threading Concepts
  • Creating Threads in C#
  • Managing Threads
  • Problems with Threads
  • Thread Synchronization
  • Web Services
  • Review of Web Services
  • .NET 2.0 Changes to Web Services
  • Exploring WSDL
  • Exploring the Proxy Code
  • Making Synchronous and Asynchronous Calls to a Web Service
  • Exposing Custom Types from Web Methods
  • Defining and Using Secure Web Services

Reflection & Attribute Programming

  • Using Attributes
  • Built-in Attributes
  • Designing Custom Attributes
  • Reflection Concepts
  • Extracting Type Information
  • Viewing Metadata
  • Discovering Attributes with Reflection
  • Using Reflection at Runtime
  • Building Smart Clients
  • Remoting
  • Remoting Basics
  • Understanding Application Domains
  • Creating Remotable Objects
  • Well-known vs. Activated Objects
  • Creating Channels for Calling Remote Methods
  • Creating Remote Objects
  • Interacting with Remote Objects
  • Using Interfaces with Remote Objects
  • Lease-based Lifetimes

Security

  • Security Basics
  • Evidence and Code Identity
  • Role-based Security
  • Code Access Security
  • Security Policy
  • Permissions
  • Code Groups
  • Using the .NET Configuration Wizard
  • Cryptography

Timescales?

I’d like to take a day over each topic. I’d like to commit to studying four days out of every week. That would be nice!

I can get some done in my lunch break at work, then some time in the evening too. On weekends I might be able to study two topics a day.

So, if that list is to be followed exactly, this will take me just over six months.

Wish me luck!

Approaches  — 1 year ago

There are two steps which i’d like to take before I start learning -

(1) A List of Topics
(2) An approach to learning
– How long should I spend on each topic?
– Should I ‘practice’ each topic as well as learning it?
– Is there much to be memorised?
– Can I skip stuff I think I already know?

Concerning the second point, I think its useful to divide learning into three levels – Recognition, Knowledge and Understanding.

Recognition – You can identify this topic. You can give a brief overview. You know when to use this approach. You know a few pros/cons.

Knowledge – You know the issues surrounding this topic. You know parts of it very well. You have used this approach once or twice.

Understanding – You are fluent with this topic. You can adapt the approach to suit a particular need. You have confident judgement in your knowledge of its pros and cons. You have used it many times.

So, – what should I aim for? Is it reasonable/advantageous to have an understanding in each Advanced C# Topic?

What do you think?

Why learn advanced C#?  — 1 year ago

Ok, so there are a few things we should get out of the way. I’m a .NET developer! Thats why. But..

Knowing the ins-and-outs of a programming language doesnt make you a great developer. The ins-and-outs wont last forever – it wont make me any happier – well, I dont think so anyhow.

So why?

Well, i’ve just come out of university and have been developing in C# (along with ASP.NET) for 6 months – and I think i’ve hit a bit of a plateau. I’m not exactly working on horridly specific projects – far from it – quite standard, but flavoursome, CMS type stuff.

So, i’m going to do it for two reasons.

(1) To keep me interested at work
(2) Because I CAN get this done, quite easily. There are certain topics which, having a working knowledge of, will help me get where I’m going. I’ll have more confidence in using this language to implement designs. I’ll be able to participate in ‘higher-end’ stuff like code reviews.

So, will you help me along the way? If anyone is in a similar position, feel free to join me! Lets learn together!

iffypop has gotten 0 cheers on this goal.

 

I want to: