Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Penny de Byl and Penny Holistic3D

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.

Read more

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

  • 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

  • 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.

What students are saying about this course:

  • Penny is a really good teacher, this is the kind of C# class I've been looking for and it is just right for what I need right now. I would highly recommend it.

  • This course has been awesome. I knew virtually nothing about coding, and now I'm halfway thru, loving it, and learning a TON. Great teacher, clear and concise lessons with plenty of opportunity to learn, test code, experiment, and consistent quizzes and challenges. 5/5

  • I'm an artist, code was always something that I had the desire to learn but at same time I always thought it was something too complex and boring, until I decide to buy this course and start watching these videos. Everything is very well explained, she teaches really well, straight to the point. Now I'm finding it extremely fun to learn and I've been doing the course and watching the videos as if it were a Netflix series. I get excited at every new thing that pops up :D I also love when you have to do challenges, it's like a game, super fun. It is very easy to follow, even if you have zero knowledge in coding, like me when I started. Recommended.

Enroll now

What's inside

Learning objectives

  • 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.

Syllabus

In this section students will gain an understanding about the way computers work, the history of coding and learn about why C# is a great choice for beginners.
Read more

H3D has a bustling online student community.  Here's how to get involved.

How to contact us

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.

This lecture will take you step by step through the setup of your computer with a C# compiler and test that it works. The setup for both Mac OS and Windows operating systems will be demonstrated.

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.

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.

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

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 explanation of why datatypes come in different sizes and why you should select the smallest ones for your needs.

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.

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.

ASCII and Datatype Tables

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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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

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

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

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.

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

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

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.

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.

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.

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.

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.

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.

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.

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

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.

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.

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.

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.

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.

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.

In this lecture an overview of inheritance and polymorphism 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.

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.

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.

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.

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

In this workshop we will grab the text of a webpage from a given URL and do a word search counting the number of times a certain word appears.

In the first of this two part workshop we will build the logic of a word guessing game called Hangman.

In the second part of this workshop we will finalise the code for the Hangman game by adding in looping functionality and win/lose scenarios.

In the first part of this two part workshop we will develop a chatterbot program. This is a text based application in which you can type in text and get a response as through you're typing in a chat room.

In the second part of the chatterbot workshop we will expand on the bot's functionality through getting it to transpose words to reword sentences back at the users.

This link provides further information on the courses you can look at taking based on your interests and skill level.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses C# as a vehicle to impart fundamental programming concepts, which are transferable to other languages and applicable across various domains
Mirrors the curriculum of a first-year university computer science course, providing a solid academic foundation in the first six months of study
Employs the Mono C# compiler, which is freely available for both Windows and Mac, lowering the barrier to entry for students with different operating systems
Includes hands-on workshops to build projects like a Caesar Cipher, Hangman Game, and Chatterbot, offering practical experience in diverse applications
Requires students to use the command-line to compile and run C# programs, which may be unfamiliar to some and require additional setup time
Teaches C#, which can be adapted in a variety of settings such as robotics, Unity, Visual Studio and Unreal, expanding career and learning opportunities

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Highly recommended c# for absolute beginners

According to learners, this course is a highly recommended guide for those with zero knowledge in coding. Students find it very well explained and easy to follow, with a great teacher who is straight to the point. The format, described as clear and concise lessons with consistent quizzes and challenges, makes learning extremely fun. Opportunities to learn, test code, and experiment are plentiful, helping students learn a TON and build a solid foundation in C#.
Concepts are explained clearly and concisely.
"Everything is very well explained, she teaches really well..."
"Great teacher, clear and concise lessons..."
"...teaches really well, straight to the point."
Lessons, challenges, and projects keep learning fun.
"Great teacher, clear and concise lessons with plenty of opportunity to learn, test code, experiment, and consistent quizzes and challenges."
"I also love when you have to do challenges, it's like a game, super fun."
"I've been doing the course and watching the videos as if it were a Netflix series."
Instructor receives high praise for teaching style.
"Penny is a really good teacher, this is the kind of C# class I've been looking for..."
"Great teacher, clear and concise lessons with plenty of opportunity to learn, test code, experiment..."
"Everything is very well explained, she teaches really well, straight to the point."
Highly suitable for those with no prior coding experience.
"It is very easy to follow, even if you have zero knowledge in coding, like me when I started."
"I knew virtually nothing about coding, and now I'm halfway thru, loving it, and learning a TON."
"I always thought it was something too complex and boring, until I decide to buy this course..."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Naked C#: A Beginner's Guide to Coding with these activities:
Review Binary Number System
Solidify your understanding of binary numbers, which are fundamental to how computers store and process information. This will make understanding memory management and data types in C# much easier.
Browse courses on Binary
Show steps
  • Read about binary representation and conversion.
  • Practice converting between binary and decimal numbers.
  • Understand how binary relates to bytes and memory addresses.
Read 'Head First C#'
Reinforce your understanding of C# fundamentals with a visually engaging and interactive book. This will help you grasp the concepts more easily.
View Head First C# on Amazon
Show steps
  • Read the introductory chapters on C# basics.
  • Work through the examples and exercises in the book.
  • Focus on the chapters that cover topics you find challenging.
Read 'C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development'
Expand your knowledge of C# beyond the basics covered in the course. This book provides a broader perspective on C# development and its applications.
Show steps
  • Read the introductory chapters on C# and .NET Core.
  • Explore the sections on topics that interest you, such as cross-platform development.
  • Use the book as a reference when working on C# projects.
Four other activities
Expand to see all activities and additional details
Show all seven activities
CodingBat C# Practice
Reinforce your understanding of basic C# syntax and logic through online coding exercises. This will help you become more comfortable with writing C# code.
Show steps
  • Visit the CodingBat website and select the C# section.
  • Work through the exercises on topics like strings, loops, and arrays.
  • Aim to complete at least 5-10 exercises per session.
Create a C# Cheat Sheet
Consolidate your knowledge of C# syntax and concepts by creating a cheat sheet. This will serve as a useful reference for future projects.
Show steps
  • Review the course materials and identify key C# concepts.
  • Organize the information into a clear and concise format.
  • Include examples of code snippets and syntax.
  • Share your cheat sheet with other students for feedback.
Build a Simple Calculator Application
Apply your C# skills to build a practical application that performs basic arithmetic operations. This will solidify your understanding of user input, operators, and control flow.
Show steps
  • Handle user input and display the results.
  • Design the user interface for the calculator.
  • Implement the logic for performing arithmetic operations.
  • Add error handling to prevent crashes.
Contribute to a C# Open Source Project
Gain practical experience by contributing to a real-world C# project. This will expose you to different coding styles, project structures, and collaboration workflows.
Show steps
  • Find a C# open source project on GitHub that interests you.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature that you can work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Naked C#: A Beginner's Guide to Coding will develop knowledge and skills that may be useful to these careers:
Software Developer
A software developer designs, develops, and tests software applications. This course helps build a foundation in programming using C#, which is a widely used language in software development. The curriculum mirrors that of a first-year university computer science program, giving you a solid understanding of programming concepts. By learning to perform mathematical operations, manage memory, design program execution, and handle user input, you gain essential skills for developing software. The hands-on projects, such as creating a Caesar Cipher and a Hangman game, offer practical experience in software development. This course may be useful if you want to become a software developer.
Software Engineer
A software engineer applies engineering principles to the design, development, maintenance, testing, and evaluation of computer software. This course helps build a strong foundation in programming with C#, a widely used language in this field. The university-level curriculum covers essential concepts such as memory management, mathematical operations, and dynamic program execution. You may find that learning to handle user input and reading/writing to files are crucial for developing robust and reliable software systems. Hands-on projects, such as creating a Caesar Cipher and a Hangman game, provide practical experience in software engineering. You can begin to understand the software side of things by taking this course.
Game Developer
A game developer creates video games for various platforms. This course may be useful if you want to learn C#, a language commonly used in game development, especially with the Unity game engine. Learning how to develop programs and solve problems may help with game logic and mechanics. The course covers dynamic program execution, repetition for fast data processing, and handling user input, all essential skills for creating interactive game experiences. The course mentions using C# in Unity, which is a great starting point. Furthermore, this course helps you build a toolbox of skills.
Robotics Engineer
A robotics engineer designs, builds, and programs robots for various applications. This course may be useful to learn C#, a language often used in robotics programming. The curriculum mirrors that of a first-year university computer science program, you may find the solid understanding of programming concepts beneficial. Learning how to manage memory, design dynamic program execution, and handle user input may help with programming robot behaviors and interactions. The course mentions using C# in robotics, making it a relevant starting point. The core skillsets may be valuable in the future.
Application Developer
An application developer designs and creates software applications for computers and mobile devices. This course may be useful to learn the fundamentals of programming using C#, a versatile language for building various applications. Learning how to manage memory, perform mathematical operations, and design dynamic program execution may help with the development of robust and efficient applications. The hands-on workshops, such as creating a Chatterbot and storing names and addresses in a file, provide practical experience. You may wish to take this course to get the essentials down.
Web Developer
A web developer builds and maintains websites and web applications. This course may be useful in learning the basics of programming, which can be applied to web development. While C# is not the primary language for front-end web development, it is commonly used for back-end development with frameworks like ASP.NET. You may find the knowledge of handling user input and reading/writing to files helpful for building web applications. This course also covers reading and processing text from a webpage, which is relevant to web development. You may want to take this course to get acquainted with the core tenets of coding.
Automation Engineer
An automation engineer designs, develops, and implements automated systems and processes. This course may be useful in learning the basics of programming with C#, which can be applied to writing scripts and programs for automating tasks. The knowledge of dynamic program execution, repetition for fast data processing, and handling user input may help with creating efficient automation workflows. The course also covers reading and writing to files, which is useful for data processing and logging in automation systems. This course may be useful if you want to understand how to automate tasks and improve efficiency.
Quality Assurance Analyst
A quality assurance analyst tests software to ensure it meets quality standards and functions correctly. This course helps build a foundational understanding of C# programming, which may be useful for writing test scripts and automating testing processes. The knowledge of program logic, data processing, and handling user input may help with designing effective test cases. You may find that understanding the underlying code helps with identifying potential issues and improving software quality. This course may be useful if you want to pursue a career in software quality assurance.
Data Analyst
A data analyst collects, processes, and analyzes data to identify trends and insights. This course may be useful in learning the basics of programming with C#, which can be applied to data manipulation and analysis tasks. You may find that the knowledge of reading and writing to files, handling user input, and performing mathematical operations may help with processing and analyzing data sets. The course also covers developing repetition for fast data processing, which is valuable for handling large volumes of data. You may begin to work with real world data after this course.
Data Scientist
A data scientist uses statistical methods and machine learning techniques to analyze data and extract meaningful insights. While this role typically requires advanced degrees (master's or PhD), this course may be useful as a first step to learn the fundamentals of programming with C#. This will allow you to better understand some data structures and algorithms. The knowledge of handling user input, designing program execution, and reading/writing files may help with data preprocessing and manipulation, which are essential tasks in data science. This also assumes some prior knowledge of statistics.
Research Assistant
A research assistant supports research projects by collecting, analyzing, and interpreting data. This course may be useful in learning the basics of programming, which can be applied to automating data analysis tasks and creating custom tools for research. The knowledge of handling user input, reading and writing to files, and performing mathematical operations may help with processing and analyzing data sets. While this role often requires an advanced degree (master's or PhD), this course helps you to understand programming concepts. The ability to write scripts to gather research data may be very helpful.
IT Support Specialist
An information technology support specialist provides technical assistance and support to computer users. This course may be useful in gaining a basic understanding of how computers work and how to troubleshoot software issues. You may find that the knowledge of reading and writing to files, handling user input, and designing program execution may help you to diagnose and resolve technical problems. The hands-on projects, such as creating simple programs, provide practical experience in problem-solving. In this role, you may be on the front lines of the technological world.
IT Consultant
An information technology consultant provides expert advice and guidance to organizations on how to use technology to achieve their business goals. This course may be useful in gaining a foundational understanding of programming concepts, allowing you to better assess and recommend technology solutions. The knowledge of C# programming and software development practices may help with evaluating software products and providing technical recommendations. You may find that the course helps you to understand the underlying technology and provide more informed advice to clients. You may also require some business skills to be successful.
Technical Writer
A technical writer creates documentation and guides for software and hardware products. This course may be useful in gaining a better understanding of programming concepts, which can help you to explain technical information more clearly and accurately. The knowledge of C# programming may help with documenting code and creating tutorials for developers. Understanding the fundamental nature of the computer and how to communicate with it through programs can improve your ability to write effective technical documentation. You may find yourself writing documentation for other software developers.
Database Administrator
A database administrator manages and maintains databases, ensuring data is stored securely and efficiently. This course may be useful in learning the fundamentals of programming, which can be applied to writing scripts for database management and automation. The knowledge of reading and writing to files and handling user input may help with data manipulation and querying. Although C# is not directly used for database administration, understanding programming logic can be beneficial for automating tasks and troubleshooting database issues. The course also covers computer memory management which may be tangentially helpful.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Naked C#: A Beginner's Guide to Coding.
Uses a visually engaging and interactive approach to teach C#. It's excellent for beginners who prefer a more hands-on learning style. The book covers the fundamentals of C# programming in a clear and concise manner. It is particularly helpful for understanding object-oriented programming concepts and building graphical user interfaces. This book is valuable as additional reading to reinforce the concepts taught in the course.
Provides a comprehensive guide to C# and .NET Core. It covers the fundamentals of the language as well as more advanced topics such as cross-platform development. It useful reference for understanding the broader C# ecosystem and how it applies to different environments. This book can be used as a reference to expand on the topics covered in the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser