Naked C#: A Beginner's Guide to Coding
4.7 (21 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
196 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Naked C#: A Beginner's Guide to Coding to your Wishlist.

Add to Wishlist

Naked C#: A Beginner's Guide to Coding

The bare bones of programming without the bling!
4.7 (21 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
196 students enrolled
Created by Penny de Byl
Last updated 7/2017
Current price: $15 Original price: $200 Discount: 92% off
30-Day Money-Back Guarantee
  • 8 hours on-demand video
  • 16 Articles
  • 19 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • use the fundamental threshold concepts underlying all programming languages to write C# programs.
  • take their knowledge of C# and adapt it in a variety of settings that use C# such as robotics, Unity, Visual Studio and Unreal.
  • transition from C# to using other programming languages with ease.
View Curriculum
  • You should be able to use a Windows or Mac machine at a beginner level.

This course will not teach you to become a programmer.  Programming is like martial arts, it takes years and years of practice.  No course can make you a grand master no matter what it promises.  What this course WILL do is give you a solid foundation in programming as a skill for life using C# as the vehicle. You will learn about the fundamental nature of the computer and how to communicate with it through the development of programs to perform a variety of tasks and solve numerous problems.  Following the same curriculum used to teach 1st year computer science in university in the first 6 months of a degree, you will learn not just what to program but 1) why it is is done like that and 2) how you can broaden your skill set in programming beyond this single course.

The topics covered include:

  • Bits, Bytes and Binary;
  • Management and Manipulating Memory;
  • Performing Mathematical Operations;
  • Designing Dynamic Program Execution with Logic;
  • Developing Repetition for Fast Data Processing;
  • Handling User Input; and,
  • Reading and Writing to Files

The course material has been developed for students using either Windows or Mac computers using the freely available Mono C# compiler.  It is well paced covering each concept in bite sized chunks and filled with hands-on workshops that will build projects across a variety of domains.  Some of the programs that will be written include:

  • a Caesar Cipher for encrypting text;
  • a Hangman Game;
  • a Number Guessing Game;
  • a Chatterbot;
  • storing and retrieving names and addresses in a file; and
  • reading and processing text from a webpage.

At the end of this course you will be equipped with a toolbox of skills that you can apply in your job and day-to-day life making you more employable and relevant in today's marketplace.

Who is the target audience?
  • Everyone that wants to code and thoroughly understand what they are typing into the computer.
Curriculum For This Course
63 Lectures
4 Lectures 19:57
Why do it Naked?

This lecture will explain how your computer folder hierarchy is structured and how to access the command-line. It will be the command-line that you will be using to compile and run the C# programs created in this course. Understanding how to access and create directories from the command line will make your programming life much easier.

Preview 06:53

Previously students stepped through the writing and compiling of their first C# program. In this lecture it's time to examine that initial code in more detail. By the end the elementary structure of a C# program will have been explained and demonstrated allowing students to make minor modifications to their code to change the program output.

The Anatomy of a C# Program
7 Lectures 45:27

This lecture explains how computer memory is structured due to the electronic nature of the hardware. It demonstrates how bits are structured into bytes and teaches students the origins and use of binary code.  Afterwards students will be able to explain the process of converting binary code into decimal values. This is essential knowledge for the novice programmer before they delve further into coding.

Bits and Bytes

In this lecture you will learn how to create an integer variable to store a number and then print it to the terminal window.

Introduction to Variables

In this lecture we will continue examining the different datatypes that can be used to create variables. In particular float, double and char will be discussed. There will also be an explaination of why datatypes come in different sizes and why you should select the smallest ones for your needs.

More Variables

The topic of this short lecture is the ASCII Table. We will explore how the symbols on the keyboard are stored internally for the computer and how you should deal with them in programming.

The ASCII Table and the Char

In this lecture you will learn about strings and how to store sentences and paragraphs in a variable. At the end we will also start to explore user input and write a short program to ask some questions and print out responses.


This short lecture will cover the formatting of code and examine where you can and can't put in spaces or new lines.

A Word About Formatting

ASCII and Datatype Tables


10 questions
Mathematical Operators
3 Lectures 31:45

In this lecture we will cover the basic mathematical operators of addition, subtraction, multiplication, division and modulus and you will learn how to use them in a program to modify the values held in variables.

Basic Mathematical Operators

In this lecture you will learn how to take input in the form of a string and convert it into a numerical value that can be used in an interactive calculating program.

Converting String Input to Number Values

In this lecture we will take a quick look at the built in C# Math class. This class contains a plethora of complex and useful prewritten mathematical functions that will make your job as a programmer much easier.

Mathematical Functions

Mathematical Operators
9 questions
Boolean Algebra
6 Lectures 55:52

This lecture explores the use of relational operators in developing dynamic programs that will operate differently depending on variable values and user input.

Relational Operators and the IF statement

In this lecture you will follow through step by step with a number of examples that examine the use of relational operations with an if statement. You will create a simple guessing game and grade calculator.

A Simple Guessing Game and other Relational Operator Examples

This lecture will introduce you to the switch statement. The switch statement can be used as a substitude for an if statement when you only want to check for exact matches between variables and literals. The switch will be demonstrated through the development of a simple calculator program.

The Switch Statement

In this lecture Boolean Algebra will be introduced as a means of creating compound logical statements. After examining the concepts of AND and OR a program will be developed that can test the student on their knowledge.

Boolean Algebra and Logic Operators

In this practical step-by-step lecture students will develop code that uses Boolean Algebra and user input to test if a given year is a leap year.

Calculating Leap Years

Appendix A

Boolean Algebra
10 questions
4 Lectures 42:10

This lecture will introduce the concept of loops before looking explicitly at the for loop. Throughout students will learn how a loop operates and write their own code to process a variable number of inputs to a program with a loop before printing out a result.

For Loop

In this lecture while and do-while loops will be introduced. Students will be stepped through the workings of each and shown examples of how they can be used for testing user input validity.

While and DoWhile Loops

In this lecture nested loops will be explained with an examination of a for loop embedded inside another. By the end of this lecture students will understand how such loops run and affect the flow of the program.

Nested Loops

In this workshop students will follow along as a number guessing game is created. A program will be developed to generate a random number that the user has to guess. The program will run until the correct number is guessed and provide the user with feedback as to whether their guess is too high or too low. This program explores the use of a while loop that contains an if statement.

An Advanced Guessing Game

10 questions
5 Lectures 43:48

This lecture explains the programming construct of arrays. It demonstrates how powerful they can be when coupled with loops. Students will learn how to create and array, fill it with values and process the values contained within.

Introduction to Arrays

In this short lecture the foreach loop will be demonstrated. This is a special loop used with arrays for accessing the values.

ForEach Loops

This lecture introduces the idea of multidimensional arrays and shows students how to declare and initialise them with values. In particular, the focus will be on two dimensional arrays and a short program will be written to enter in values and print them out.

Multidimensional Arrays

In this hands-on workshop students will follow along as a simple encryption program is written using arrays and loops. The product will be a program inspired by the cipher developed by Julius Caesar and used for sending his military documents.

Preview 14:21

Modify the Caesar Cipher to ask the user how many characters to shift by and then apply this to the encryption. The answer is in the attached resource file.

Jump Statements
6 Lectures 33:44

In this lecture jump statements will be introduced. They are a means of changing the flow of a program by providing a way to quit out of loops or jump to other parts of code. By the end of this lecture students will understand how jump statements can be used to make their code more efficient by reducing the amount of work it is doing.

Introduction to Jump Statements

In this workshop the break statement will be used to stop a loop from searching through a text document. During this exercise students will also learn how to download a webpage directly into their C# program and use this as the contents to search through for a keyword.

The Break Statement

In this workshop a data file will be searched for invalid data. The continue statement will be used to skip over the processing of this data that could cause an error when the program runs. Students will work with the code and data file of geolocations for the worlds capital cities to print out a list of those in the Southern Hemisphere.

Continue Statement

Modify the code from the Continue workshop to print out all cities in the Northern Hemisphere.

Challenge 1

Modify the code from the Continue workshop to print out all the cities (with name and country) between the latitudes of 30 and -30.

Challenge 2

Read a file in from a url and apply a Caesar cipher of shift 5 and output the result.

Challenge 3
Methods (aka Functions)
8 Lectures 01:08:03

In this lecture functions and methods will be introduced. By using these constructs repetitious code can be modified by input values to change the way the program works. By the end of the lecture students will understand the different forms a function can take as well as how to use ones from the C# library in their own programs.

An Introduction to Functions

Use the Math.Ceiling() method in your own program. 

Challenge 1

Use the Console.Beep() method in your own program. 

Challenge 2

In this follow along workshop we will be rewriting a program to replace repetitive code with a function. The function will allow for customisation of the data it is processing and how that data is displayed.

Writing Custom Functions Part 1

In the second part of writing a custom function we will explore overloading and the use of the return jump statement to send data out of the function and back to the Main() method.

Writing Custom Functions Part 2

Sometimes you will want to get more than one value out of a function. In this case the return statement won't work. Instead the "out" modifier is applied to function parameters that allow values to be retained after the function has ended. This lecture demonstrates how to apply the out modifier with existing functions as well as the how to write your own.

Function Returns with OUT

In this lecture we will example how variables can be defined with different access points inside a program. Some variables will exist for the entire program whereas others will be created and destroyed as needed. This greatly assists with memory management and knowing how to use these will make your programming more efficient.

Local and Global Variables

In this lecture we will overview a way to build more robust programs that will not crash when errors occur. Through the use of the try/catch statement I'll demonstrate how to build a program that can fail gracefully or not at all when an error occurs with computer memory or user input.

Try, Throw, Catch.
10 Lectures 48:56

In this lecture we will look at the basic structure of a class and how it is used as a template to create custom and complex datatypes. A follow along section at the end demonstrates how to build a class and program to store names and addresses.

Classes and Objects

Expand the code created at the end of the previous lecture to allow the program to set all the properties of the Person class in the constructor such that Person requires 4 arguments.

Challenge 1

To the answer of the previous challenge question add the details for 3 more friends and print them out.

Challenge 2

Arrays are a very useful way to store, process and retrieve many objects of the same type. This is no different for classes. This lecture will demonstrate how array's of objects are handled in the exact same way as arrays or other datatypes.

Arrays of Objects

Use the code from the previous lecture to create a program to read in the values of 10 cars before printing out the details for all.

Challenge 3

Modify the solution from the previous challenge and add to the car details a way for the user to enter, store and print out the registration number for each car.

Challenge 4

In this lecture we will examine the use of the public and static modifiers and discuss how they control access between classes of methods and properties.

Public, Private and Static

In this lecture we will take a look at the way static and non-static methods are used in the two C# classes of Console and String and discuss the different ways they are accessed in code.

Playing with Static Methods and Properties

Write a program that has two strings, one set to the word "apple" and one set to the word "orange". Use the String.Compare method to write a message to the console telling us which word comes before the other in the alphabet or if the words are the same.

Challenge 5

In this lecture an overview of inheritance and polymophism in object-orientated programming is presented. It is an advanced concept that although you have been using throughout this course, not something you might initially see the benefit of. However as you begin to write more and more programs with complex functionality you'll appreciate these special characteristics and learn to use them to your advantage.

Inheritance and Polymorphism
4 Lectures 41:02

In this lecture we will examine the File class and use it to read values out of a text file. The values will be read in as an entire string as well as broken down into lines and individual words for processing.

Reading Files

Write a program that reads in a file containing one float per line and calculates the average and prints it out formatted with 2 decimal places.

Challenge 1

In this lecture we will look at the methods for writing and appending values to a text file. The code is straight forward and easy to implement.

Writing Files

In this workshop we will work through taking the Caesar cipher program created earlier to encrypt and unencrypt text files.

Caesar Encrypting a File of Text
2 More Sections
About the Instructor
Penny de Byl
4.6 Average rating
306 Reviews
1,723 Students
3 Courses
Professor of Computer Science, Games and Procedural Art

Hi, I'm Dr Penny de Byl.  I'm a full stack developer of most things computer sciency and academic with a true passion for teaching.  I've been teaching others about games development, programming, computer graphics, animation and web design for over 25 years in Australia and Europe. My best selling textbooks including Holistic Game Development with Unity are used in over 100 institutions world-wide.  My graduates work at companies like Apple, Ubisoft, LinkedIn and Deloitte Digital.

I've won numerous awards for teaching excellence at the state, national and international levels including the Australian Learning and Teaching Council's Excellence in Teaching Award and the Unity Mobile Game Curriculum Competition. My approach to teaching computer science and related fields is project-based giving you hands-on workshops you can immediately get your teeth into.

I want you to leave my virtual classroom fully armed with a toolkit of skills for life-long learning.  I'm excited to now be focussing my efforts full-time on Udemy to bring my years of knowledge and experience to those eager to learn about technology.