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:
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:
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.
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.
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 explaination 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 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.
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.
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.