Learning C#

Education Options and Resources for Beginner and Advanced Programmers

Whether you want to code desktop or web applications, C# is the central brainchild for all types of Windows software development. Explore traditional – and newer – academic paths and get an extensive list of resources to get started with this complex yet useful language in the software development world.

Meet the Expert

Jennifer Marsh Jennifer Marsh

Jennifer Marsh is a software developer and technical writer. She’s worked with C# since its introduction. Using her expertise in coding, she’s written technical content for IBM, Rackspace, Adobe, and Udemy and continues to write articles that help people understand the life of a coder.

C# (pronounced C Sharp) is a powerful language that offers solutions to several small and large business development needs. Some would argue that it’s one of the most valuable programming languages to learn. According to the PYPL Popularity of Programming Language Index, which identifies how often a tutorial for a particular coding language is searched on Google, the interest in C# continues to grow. Additionally, compared to other coding languages, it’s relatively simple and easy to learn, making it a top choice for aspiring and even senior developers.

But where does one start when he or she wants to learn this language? With so many options now available, it can be overwhelming. In this guide, aspiring C# programmers will find the answer to that question and more. Provided are resources on how and where to learn C# as well as an overview of various learning options, from coding games to college degrees. Whether you’re new to the game or a longtime developer, this guide covers the essentials of the C# coding language.

Understanding C#, Visual C#, and .NET

Students might hear developers use the terms .NET and C# interchangeably. However, .NET is the framework for both C# and VB.NET, whereas C# is the language. When a developer starts an application, he or she can choose the language but will always use the .NET framework’s libraries throughout the code. One of the most difficult parts of learning the C# language is the .NET framework libraries — they’re large and there are hundreds of methods and resources within the platform.

Another common mix up is C# and Visual C#. While these two are similar in some ways, they do have different implementations. C# refers to the language for developing within Visual Studio. Visual C#, on the other hand, refers to the development interface provided by Microsoft. Visual C# is the IDE used in Microsoft’s Visual Studio software, which is the foundation for developers to create their applications. It offers numerous tools to build web-based and desktop applications. It includes a debugger, the development IDE, integration with a database (usually Microsoft’s SQL Server), and a testing platform. Students can download Visual Studio Express for free from Microsoft’s website. As a matter of fact, students need the Visual Studio software before they can get started with C# development, so it’s recommended that students download and install it before they begin the learning process.

Uses and Benefits of C#

Each language in the coding world has its own benefits and pitfalls. C# is a versatile language, so students can dive into almost any type of application environment without too many limitations. One limitation, however, is that .NET is a Microsoft framework so students should want to work with Windows platforms if it’s the language they learn. This means Windows desktops, servers, and cloud environments are needed for their applications.

C# and the Cloud

The most common use for C# is cloud applications. The cloud is overtaking desktop environments because of its reliability, security, stability, and scalability. As a result, understanding C# in the cloud is a must for most coders and is often a recommended starting point for new developers.

There are two types of cloud applications — apps for end users and apps for other developers. Cloud applications for end users are similar to desktop software, except the client uses a web browser to work with the application. Cloud applications are similar to building websites, except instead of building something such as an ecommerce or content site, the programmer builds tools for customers. Windows-based companies use C# developers to build internal cloud applications. These applications usually tie in with a public-facing application, so students need to understand the business as well as the customer base.

APIs (application programming interfaces) are cloud components that plug in to other developer applications. For instance, Twitter has an API that lets developers display tweets in their own application. C# developers often refer to C# APIs as web services or WCF services.

Server Applications

C# is also used in server applications. If students work with automation, C# allows them to create Windows services, which are programs that run in the background of a machine. Students can also write Windows services for regular desktops, but most professional C# developers use services as an automation tool for servers. For example, if a student wants to automate an import of emails every five minutes, they can use C# to manage this task.

Desktop Applications

Desktop applications are the last common use for C#. These applications, however, aren’t as popular as they were a decade ago. Software development is moving towards the cloud and cloud-based infrastructure, which makes desktop development much less attractive for programmers. Cloud applications can be run from anywhere in the world, whereas desktop applications coded in C# can only run on Windows machines.

Nonetheless, students may still run into desktop applications from time to time as a developer, so it’s good for a C# developer to have general knowledge about the way they work. Occasionally, an organization might have a C# developer create a custom tool or application that runs on internal Windows client machines.

Distinguishing Features

While C is the foundation for the C# language, C is not an object-oriented programming language. C is used for embedded systems and low-level programming, whereas C# is a higher level programming language. Some .NET framework libraries include low level options for hardware and software components, but programmers wouldn’t use C# for something such as device driver creation.

C++ is another option, but it’s considered a more difficult language to use. It’s also not convenient for web applications. While a programmer could write C++ services to run on a web server, it’s not meant for cloud applications like C#. C# is an out-of-the-box cloud platform language that makes it easy to create browser-based apps.

The most similar language to C# is Java. The languages are so similar that students can use the same class names and methods between both languages. If students learn one language, learning the other will likely take very little time.

The main difference between C# and Java is the libraries. Students must also learn a different IDE. Most Java developers use Eclipse while C# developers need Visual Studio. As a matter of fact, students must use Visual Studio with C#, but they have several options with Java. However, Visual Studio is far more programmer-friendly and makes it much easier to learn the language.

Coding Language Comparisons

c# c c++ java
Level of difficulty Difficult Intermediate Difficult Intermediate
Object-Oriented Yes No Yes Yes
Used for cloud apps Yes No No Yes

How and Where to Learn C#

The Internet has opened up several learning paths for aspiring software developers. Twenty years ago, the only way to learn a coding language would have been to go to college, but now aspiring and new coders can learn any programming language, including C#, in a number of different ways. Below is a breakdown of some of those options:

Colleges and Universities

universitiesGoing to college is probably the first option that comes to mind when one decides to learn C# or any other coding language. Most aspiring software developers pursue degrees in computer science, computer information science, or computer engineering. A degree program can be a great option, as it prepares students for not only software development careers, but also provides a well-rounded education. Additionally, some employers require software engineers and developers to hold a degree in computer science or a related field. While it isn’t always required, a college degree can help open the doors to a greater variety of programming careers including junior, intermediate, and senior level C# positions.

Developers with a college degree have a competitive edge, but this route is also the most expensive and time-consuming. The typical minimum is four years, and it could take longer if the student can only attend part time due to other commitments.

Another drawback with a degree program is that most focus more on theory than application. Some schools don’t even offer C# as a language option. C, C++, and Java are more prominent in academia, so be sure to research course curriculum before choosing to attend college for C#.

For the aspiring programmer, pursing a CS degree is ideal if he or she wants a well-rounded education in science and engineering and not just language syntax. If students have the time and financial backing to make the commitment, it can be well worth the effort.

Online Tutorials

For aspiring developers who want to focus on learning one language, another option is online tutorials. This option is ideal for current developers who want to learn a new language or someone interested in simply testing the waters. Online tutorials alone cannot lead to a career as an engineer, but they do provide valuable hands-on learning for C# and its syntax.

tutorialsMost people search Google for online coding tutorials, but it can be difficult to know which ones are good or bad. It’s also easy to browse blogs and dedicated programmer sites for general references that cover C# concepts, but these aren’t always ideal for learning a new language. Websites don’t take the student step-by-step through the process or focus on building a foundation for learning. For instance, sites such as Stack Overflow teach students how to work through problems, but they don’t offer the learning environment necessary to build skills with the language.

There are, however, some great online tutorials that give students a solid foundation for C#. What’s great about these tutorials is that the student can learn at his or her own pace. He or she can go through them as quickly or slowly as needed and also take the time to revisit tutorials that may be more challenging to ensure he or she fully understands the material.

Below are a few sites that provide quality online tutorials for aspiring and novice C# coders. All of these sites allow users to sign up for access to free versions. Users can also explore their libraries without paying for a subscription.

Pluralsight
Pluralsight

Pluralsight is a well known online tutorial site specifically for developers. They offer other learning courses, but it’s mainly marketed as an environment for IT and software developers. Several companies offer free Pluralsight access through corporate accounts because it benefits them to continually educate their employees.

Lynda
Lynda

Lynda is similar to Pluralsight, but it offers more general tutorials. In other words, it doesn’t only focus on software development. Lynda offers development and web design courses, but it also offers video, 3D animation, education, business, and photography. If the student wants to learn more than just C#, Lynda is a great option.

TutsPlus
TutsPlus

TutsPlus is a newer online tutorial site. It’s owned by the popular Envato company, which is a place for coders to sell their scripts, designs, and animations. TutsPlus was made by independent developers who like to share information. TutsPlus users can find several online tutorials for free, so this option is ideal for aspiring C# developers on a budget.

Coding Bootcamps

Coding bootcamps are focused, classroom-oriented learning environments. They are also a fast-paced – but intense – alternative to a CS degree. In coding bootcamp, students receive a crash course on C# and can fully immerse themselves in learning it without any other distractions.

The similarity between code bootcamps and a CS degree program is the instructor-based benefits. Both bootcamps and a computer science degree give students the ability to ask the instructor questions for immediate feedback, which some students may prefer.

Although bootcamps are much shorter than a degree, it doesn’t mean they don’t require a lot of time, effort, and commitment. Bootcamps are intense, consisting of long days for several weeks. These courses are meant for the student who wants to learn everything about the C# language quickly and through hands-on experience.

Pros and Cons of Coding Bootcamp vs. CS Degree

pros
  • Bootcamps are more affordable than a four-year degree
  • Focus is on C# only, instead of several classes for a well-rounded education
  • Instructors are usually also programmers so are knowledgeable in the most current real world issues and applications
  • Can be more practical than theory-based education
cons
  • Bootcamps may not be recognized by some employers as a legitimate form of education. Some employers may prefer a CS or related degree.
  • Because bootcamps have a shorter overall timeline than CS degree programs, classes meet frequently (e.g. every day and even weekends) and days are long
  • Fewer on-site options
  • Less well-rounded education

Coding Games

A new trend in programming tutorials is the use of coding games. The student can either challenge him or herself or play against other coders. These games are usually meant for people who already have a grasp on the C# language, but they can also be used to teach programming.

One of the most popular code gaming sites is Code Wars. The site even has clans, so coders can come together to fight other coders. Code Wars displays coding problems that players must solve. These solutions are then peer reviewed, so the player can learn from other more advanced programmers. The game has a C# section, so the student can choose to be a part of C#-specific coding wars.

Another coding game on the Internet is Code Hunt. Code Hunt takes users through a maze of “coding fragments” that are captured and fixed by the gamer. It teaches developers how to troubleshoot and debug code that doesn’t return the right output.

For more advanced programmers, Coding Game gives the developer puzzles that are used to improve coding skills. This is a more advanced option, but it’s useful for developers looking to improve on basic coding skills.

Certification

Certifications have been an alternative – or enhancement – to CS degree programs since the 1990s. Like bootcamps, they may not be fully recognized by some employers, and some may prefer more formal education. However, many companies pay for certification training as a benefit for both the developer and the knowledge gained by the development department.

CertificationMost companies see certifications as a benefit to the coder as it demonstrates knowledge and skill in C#. Certifications are especially essential for C# developers. Since C# is a backend coding language primarily used in internal applications and API integration, experience is typically gained within an organization and applications aren’t available publicly. This means the coder may not be able to prove experience through a portfolio. Instead, the coder can use certifications that test knowledge of C# and display test results to potential employers.

There are several ways to study for C# certification, but, ultimately, the student must take an exam at an official location. Since C# is a Microsoft-specific coding language, the student can only take the test at an official testing center, which is PearsonVue. The disadvantage for these certifications is that official test centers are limited, so the student might need to drive several hours to find the closest location.

The way a C# beginner learns the language is irrelevant. Videos, books, and even instructor-led bootcamps are available for training. The Internet also has several practice tests to prepare the student for the official exam day.

Certification Resources

Microsoft offers several certifications, but the C# exams are specific for the Microsoft Certified Professional (MCP) and the Microsoft Certified Solutions Developer (MCSD). This means that taking the exams counts towards credit for both of these certifications. The cost for one exam is $150 and students can sign up through Microsoft’s website.

Here are a few study resources for the C# certification exam:

Books

Some students prefer reading technical books to learn new languages. Amazon has dozens of C# certification books that guide the student from new programmer to passing the certification exam.

Microsoft
Microsoft Virtual Academy

The best place for students to prepare for an exam is through the company’s official resources. Microsoft offers training that prepares you for all three C# certifications.

Horizons
New Horizons

New Horizons is an official Microsoft certified learning partner. The advantage to this option is that they also offer on-site training for people who prefer instructor-led courses.

O'Reilly
O’Reilly

There are several webinars and videos specific to certifications. O’Reilly is a popular technical book publisher that also offers video training specific to the C# certification tests.

Pluralsight
Pluralsight

Pluralsight was mentioned previously as a good way for students to learn C#, but the site also has specific courses for C# certification. Students can combine learning C# with preparing for C# certifications.

Today

The History of C#

The C# language is all about understanding a platform’s nuts and bolts. It’s not about design with C# — it’s about understanding the engineering side of applications and how to build robust solutions that automate backend development. As a backend development language, C# is the virtual mechanics of a website. Developers work closely with designers, but don’t need to be designers in order to work with the language, although a familiarity with design doesn’t hurt.

C# was originally developed as a Java competitor and is one of the youngest languages on the market. C# has its foundations from C, and was original named “Cool” for “C-like Object Oriented Language”. Additionally, because it’s a Java competitor, it’s also similar to Java in some ways.

Microsoft began its introduction of cloud programming with the ASP (Active Server Pages) framework, which was based on the Visual Basic language. Originally, this was the only way for a developer to create dynamic web pages using Microsoft technology. The company later developed the .NET initiative that completely changed the way Windows developers coded. Within the .NET framework, Microsoft released the C# language, which used object-oriented programming (OOP) syntax contrary to the previous ASP language. C# along with VB.NET were released in January 2002 as the .NET framework. Originally, VB.NET was more popular likely due to its similarities to the Visual Basic language, but C# eventually gained traction primarily because of its direct competition with Java. Developers that preferred a C-style language could create Microsoft-specific applications without using Visual Basic. It is now the preferred language in the Windows coding world.

The Future of C#

C# is still considered a new language, but it’s already engrained in several corporate systems, and it now works with the MVC (Model-View-Control) framework, which is a trending way to design software. MVC is a framework that lets coders create web-based applications using C#. It still uses the .NET framework libraries, but MVC reduces the overhead that previous .NET versions required. Programmers no longer need to keep track of page load state and can focus on the backend code.

In April 2015, Microsoft announced its plans for the next version of C#. Some characteristics of the new version will include:

  • Pattern matching
  • Record and algebraic data types
  • Nullability tracking
  • Async streams
  • Covariant return types
  • Array slicing

Resources for Beginners

Unless the student has some kind of formal training, knowing where to go to begin studying and learning C# can be overwhelming. Type “learn C#” into Google and there are millions of results. To help narrow down the process, here are some solid tips and resources to help aspiring and beginner programmers get started:

Download Visual Studio Express

Microsoft gives developers the ability to get started for free. An essential resource is the Visual Studio site where the student can get familiarized with the coding environment.

Sign up for Code Academy

Code Academy is a popular site for beginners who want to learn any language, including C#. The site takes beginners step-by-step through the learning process and tests them as each chapter is completed.

Watch official Microsoft training

Microsoft offers its own training site for C#. This resource is ideal for beginners looking to learn the very basics.

Get a GitHub account

GitHub is a collaboration tool for developers to publish programming projects. GitHub is the main resource for developers that publish projects as open-source. It’s also available as a local installation. In addition to publishing coding projects, users can also get valuable feedback from other coders.

Learn the .NET framework

This site helps developers learn the .NET framework as well as concepts related to C# programming. C# developers can find classes for core fundamentals and the MVC framework.

Find video tutorials at Udemy

Udemy is a user-generated video site that hosts several C# learning tutorials. It’s a paid site, but the student can purchase videos one-by-one instead of paying for a subscription to the full site.

Understand object-oriented programming

C# is an object-oriented programming language. The student must understand these concepts to learn C#. Code Project has an excellent review of OOP concepts.

Join C# communities

Every developer gets stuck at some point or needs a different perspective. Fortunately, there are numerous communities where developers can ask questions and get help from peers.

Get a Stack Overflow account

Stack Overflow is the go-to site for asking C# coding questions. The site is well known as a place to help programmers with simple as well as complex problems.

Read Microsoft’s references

Microsoft offers numerous references to C# and how to get started with the language. It also has a forum where developers can ask questions when they get stuck on a problem.

Advanced C# Resources

Once a student moves into intermediate and advanced concepts, they need a place to find references and solutions to more complex concepts. Advanced programming is more about concepts than a language, so most advanced resources focus on the student finding a solution to a problem using C#. Below is a roundup of tips and resources for more advanced programmers:

Learn algorithms

Algorithms are a set of steps that tell a computer how to accomplish a task. Algorithms power many of the successful applications on the Internet. Advanced coders must understand algorithms and how to use them in C#.

Review advanced C# concepts

Microsoft has its own resources available for advanced programmers. Read through these concepts to understand them.

Understand cloud computing

The development world is moving towards the cloud as the main platform that hosts applications. Developers should understand how cloud architecture works as it relates to C#.

Play Code Wars

Code Wars is an advanced coding game for developers who still want to learn but also have a firm grasp of C#. It’s a fun way to develop advanced skills with the language.

Answer practice exam questions

Pearson has practice exam questions students can use to test skills for the C# certification exam.

Understand hash tables

Hash tables are used in several complex coding applications. C# has its own hash table class that programmers can use, but it’s important to conceptually understand a hash table’s structure.

Read Microsoft’s source on Generics

Generics are an important concept in C# development. Most complex programs have at least one generic in the system.

Read a technical book

Amazon now offers students the ability to rent books or download them to Kindle. Find an advanced C# book that’s interesting and use it to boost skills.

Learn LINQ to Entity framework

LINQ and EF are used to interact with a database. EF maps to database tables and LINQ is used to query those tables. It’s an advanced yet important factor in C# programming.

Understand databases with C#

Microsoft SQL and C# go hand-in-hand to create interactive dynamic applications. The student needs to know database concepts as they relate to C#.

C# Careers and Salaries

Developers who learn C# have numerous career opportunities. C# developers are in demand, so it’s a good language to learn even as a beginner. The market is also in need of junior, intermediate, and senior level developers. The salaries are above average, and developers that step into lead positions can earn salaries in the upper range of the salary curve.

Here are a few sample job descriptions for C# developers:

Junior Software Engineer

All programmers start at a junior engineering level. This position usually involves fixing bugs and debugging code with senior engineers to familiarize the applicant with the code and structure. They also work with senior engineers to design new modules for new software projects.

  • Education

    Junior developers don’t necessarily need a CS or related degree, but hands-on experience is definitely beneficial.

C# Developer

This position is the most common job title. It includes intermediate and senior level applicants. C# developers design, test, and code existing and new modules for a variety of software – usually browser-based applications. This position requires engineering of new applications, so the developer must understand the full development life cycle.

  • Education

    Intermediate developers usually need a computer science degree, several years of experience, or a certification.

WPF Developer

WPF is the framework for Windows desktop applications. C# uses the WPF framework to create applications that run on desktops. These developers are responsible for designing and creating applications, performing bug fixes, and deploying code to numerous desktops.

  • Education

    CS degree and/or certifications to help prove competency in the framework and language.

Senior Software Engineer

Senior level engineers drive much of the new software design and user experience. They also help train and mentor junior level engineers. They sometimes lead teams of developers for bigger projects. Their job involves designing software, creating algorithms, documentation, and building data-driven analysis tools.

  • Education

    Most senior level development positions require a computer science, computer information science, or computer engineering degree.

Lead Software Engineer

Most development shops have a lead developer that manages the team. This position is part development and part management. Lead developers work with project managers to design small and large scale applications. They don’t usually code the projects, but they do help with solutions to complex situations where developers aren’t able to figure out problems with applications.

  • Education

    Most lead developers need several years of experience on top of a CS, computer information science, or computer engineering degree.