Start course

If you want to know how to develop software using C# and you have little to no experience programming you've come to the right place. This is an introductory course to C# and .NET programming that is the first in a series that will show you how to use these dynamic cross-platform development tools.

In this course, we set the stage in two ways. First, you get an overview of the basic elements of computer programming and fundamental issues that face software development, and how .NET addresses those issues. Secondly, we set up our software development tools on Windows and a non-Windows platform. To test our development environments we create and run a simple C# .NET program.

Learning Objectives

  • Get a foundational understanding of computer programming and .NET
  • Learn how to set up a development environment
  • Learn how to run a simple C# .NET program

Intended Audience

This course is intended for anyone who wants to learn how to develop software using C#


To get the most out of this course, you should have some basic understanding of programming, but it's not essential; this course can also be taken by complete beginners.


So, where does .Net fit into this programming language and CPU picture? .Net addresses the issue of different operating systems and CPUs by providing a common instruction set interface through a kind of compiler interpreter hybrid called the common language runtime abbreviated to CLR.

The CLR is software that is installed onto computers where you want to run .Net programs. Instead of coding against an operating system, your code against the CLR. When you compile a .Net program, it isn't turned into CPU operating instructions but into CLR instructions called Microsoft Intermediate Language – MSIL.

The Just-In-Time compiler of the .Net runtime converts MSIL into instructions or machine code the operating system and CPU can understand and execute. Because MSIL is closer to machine code than human-understandable languages it executes faster than purely interpreted languages and is portable enough to run on any computer with the CLR installed.

.Net wasn't the first runtime environment that could be deployed to various operating systems. Java and the Java Runtime Environment, JRE or Java Virtual Machine predates .Net. Unlike Java, .Net is not tied to any one programming language. You can write .Net programs in C#, F#, Visual Basic, and several other languages.

.Net started out life many years ago as a Windows-only runtime environment that we now know as the .Net Framework. Over the years, this has evolved, starting off with support for WinForm applications, which are Windows apps that use native Windows controls. Then ASP.Net was added to support web development, followed by Silverlight and Windows Presentation Foundation for rich and highly customizable graphical interfaces.

.Net is now supported on a wide range of devices and platforms from desktop, web, cloud, gaming, mobile, and IoT devices through to artificial intelligence. To support all these different platforms, some of which differed significantly from Windows, meant different versions of .Net.

As I said, we started off with .Net Framework for Windows; then we got Mono, an open-source .Net implementation for Linux, which in turn evolved into Xamarin for mobile device development such as Android. .Net Core is another open-source runtime and software development kit, SDK, for cross-platform use on Linux and macOS. This is just the briefest of overviews and a historical context, so don't worry if it didn't make complete sense. It's not vitally important at this stage. I will keep coming back to .Net architecture, adding more detail as we progress through the C# programming courses, and it will all fall into place.

Anyway, it's about time we jumped into setting up our .Net environment, which is what we'll do next. 


About the Author
Learning Paths

Hallam is a software architect with over 20 years experience across a wide range of industries. He began his software career as a  Delphi/Interbase disciple but changed his allegiance to Microsoft with its deep and broad ecosystem. While Hallam has designed and crafted custom software utilizing web, mobile and desktop technologies, good quality reliable data is the key to a successful solution. The challenge of quickly turning data into useful information for digestion by humans and machines has led Hallam to specialize in database design and process automation. Showing customers how leverage new technology to change and improve their business processes is one of the key drivers keeping Hallam coming back to the keyboard. 

Covered Topics