C# Intermediate Programming : Applications Driven Approach

A great way learn to how to solve real problems using Computer Science
4.5 (76 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.
662 students enrolled
62% off
Take This Course
  • Lectures 137
  • Length 30.5 hours
  • Skill Level Intermediate Level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 5/2016 English

Course Description

Students will learn to create their own computer programs using the C# programming language. Only a very basic knowledge of C# syntax or any other programming language is expected. This is a course for individuals who would consider themselves slightly above beginners. The first section of the course serves as a refresher to get everybody up to speed.

Students will be exposed to all the stages in software development and develop problem-solving skills as well as learn the syntax of the C# language.

The challenges/applications are drawn from a variety of situations in the homeschool and workplace. They address a wide spectrum of interests including:

  • Business
    • sorting
    • searching
    • data analysis
    • connecting to a sequential and relational database (SQL)
  • Science
    • probabilistic simulations (using random numbers)
    • deterministic simulations (using concepts from physics and math... Plinko Game )
  • Social Studies (Geography)
    • Distance between two cities Table Lookups
    • Country Telephone codes
  • Math
    • hidden pitfalls of computer arithmetic in real world applications
    • famous mathematical algorithms and their applications (Euclidean Algorithm)
    • solving mazes and puzzles using the concept of recursion
  • Cryptography
    • validating codes like SIN (social insurance numbers) , VIN, ISBN
    • coding and decoding messages using classical encryption techniques
    • a peek into more advanced techniques (Steganography)
  • Graphics
    • creating a program that plays a classical memory game on a 4x4 grid
    • creating applications utilizing drag and drop events
  • Gaming
    • animation basics
    • using a back buffer (double buffer) to improve flicker
    • creating simple 2d games using keyboard and mouse movement and incorporating sound effects

My goal is not just to show you how to program, but to help you understand what you are doing, and why you are doing it. I am online daily to respond to any problems you may encounter. 

Not only do the videos show you how to become a programmer in great detail, but each time an important concept is taught, I offer you a challenge that is designed to help you really understand what you have just learned.

You will go away and complete the challenge, and then come back and see the challenge answered and explained in detail in the video, allowing you to check your results!

... and finally, this is NOT a static course, updates are made several times a month, with new lectures and challenge problems added on a continual basis.

What are the requirements?

  • All course material (demos, notes) will be available for download during each individual lecture. The only software required to start the course is the free version of Microsoft Visual Studio Express (link provided in intro lecture)

What am I going to get from this course?

  • Program fluently in C# using Microsoft Visual Studio
  • Understand how to create a basic Windows Form Application ... No Console Apps
  • Understand the basic concepts of Selection, Repetition, Methods and Exception Handling
  • Understand the intermediate concepts of Arrays (one,two,three dimensional), Random numbers,Object Oriented Programming, String handling
  • Understand the advanced concepts of Recursion, Sorting and Searching Techniques, Database Programming using SQL, Graphics and Animation Techniques
  • Apply the programming skills learned to create meaningful computer applications from the world of Business, Science, Math, Cryptography, Graphics and Gaming
  • Create Business applications which incorporate sorting, searching, data analysis and connecting to a database
  • Create Science applications which incorporate probabilistic and deterministic simulations
  • Create Social Studies applications (Geography) which incorporate table lookups (searching) to determine the distance between two cities or the telephone code for a country
  • Create Math applications that illustrate the hidden pitfalls of computer arithmetic in the real world, and applications that solve mazes and puzzles using recursion
  • Create applications from the world of Cryptography which validate SIN (Social Insurance Code), VIN, ISBN numbers and also create applications which code and decode messages.
  • Create Graphics applications which incorporate drag and drop events
  • Create several 2d Game Applications which incorporate flicker free animation and allow the user to use the keyboard and mouse to control movement.
  • Fully appreciate the wide range of applications that the study of Computer Science provides.
  • * NEW * Create simple applications using the UI Paradigm Windows Presentation Foundation (WPF)
  • * NEW * Extend the idea of coding and computational thinking by solving a series of advanced problems (PROGRAMMING CHALLENGES) from a wide variety of disciplines.

Who is the target audience?

  • This course is meant for individuals who are somewhat familiar with basic C# syntax or any other programming language but who would only consider themselves slightly above beginners. The first section of the course serves as a refresher to get everybody up to speed.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Course Information

C# is a programming language developed by Microsoft. C# has power of C++ since it's derived from C and C++. It is simpler than Visual Basic. Besides that, C# is a Java like language for web programming. Microsoft says, that C# is the best language to develop its .NET Framework applications.


Here's what you need:

Visual Studio Express 2015


Here is what you are going to learn... lots of practical applications.. here is a sampling

  • create a computerized cash register for a pizzeria
  • create a program which determines whether a person is eligible for a credit card based on a scoring system
  • create a program which adds two fractions ... simple problem ... not so simple solution
  • create a program which analyses survey results
  • create a program that plays a classical memory game on a 4x4 grid
  • create a program which displays car details stored in a database
  • create a program which validates ISBN (Book ID numbers)
  • create a program which encodes and decodes information using a classical cryptographic techiques.
  • create a program that uses the concept of recursion to find its way out of a maze (feels like Artificial Intelligence)
  • create a program that can sort multi-field records by the desired field (column)
  • create a program that performs a lookup of information (country telephone codes)
  • create a program that connects to a Sequential or Relational SQL Database
  • create a program that uses drag and drop to perform a practical application.
  • create a space shooter game
  • ...... Now its your turn !
Section 2: The Basics Extended

In this Lecture we will

  • Become acquainted with the Visual Studio C# Express environment

In this Lecture we will

  • Create your first Windows Applications using various user interface controls
    • labels
    • text boxes
    • buttons
    • picture boxes
    • radio buttons
    • group boxes
  • Become acquainted with naming conventions for the interface controls

In this Lecture we will

  • Use Scroll Bars and the NumericUpDown control
  • Use the menu control
  • Work with multiple forms

In this Lecture we will

  • Become acquainted with the concept of computer storage
  • Use variables and data types (int,double/string)
  • Work with assignment statements
  • Create a simple program which uses assignment statementsl
  • Discuss the scope of variables

In this Lecture we will

  • Work Arithmetic operators
  • Learn about the Math class (so we can calculate square roots and powers.
  • Learn to use the modulus operator % and integer arthimetic (eg 5/2 doesn't equal 2.5)
  • Learn to cast... and know the difference between (double) 5/2 and (double) (5/2)
  • Learn to convert numbers to strings and strings to numbers
  • Create a simple Bank Savings program
  • Learn to reference the Microsoft Visual Basic Inputbox
  • Create a program which determines the average of a set of numbers
  • Apply the concepts learnt to solve a number of practical mathematical problems (see Resources)

In this Lecture we will

  • Look at a simple quotient - remainder application ... inches into feet and inches
  • Create a practical applications "Venus Motor Sales"
  • Learn to display numbers in currency format
  • Learn to display numbers in any custom format

In this Lecture we will review the basics of Selective Processing

  • Look at IF statement and write programs which utilize this structure.
    • Guessing numbers game
    • Ticket Sales based on age
    • Quiz Marking program
    • Determining whether a number is even or odd
  • Look at relational operators == != > <
  • Look at Boolean operators && ||

In this Lecture we will

  • Look at a practical application of selective processing by creating a program to calculate a Gas Utility bill which uses tiered pricing.
  • Look at an invoicing program and use it to illustrate the difference between the variable types double and decimal
  • Illustrate how to code applications which use checkboxes

In this Lecture we will

  • Look at one of the ways a programmer can create a program that is user-friendly.
    • To achieve this aim will will accept input via a dialog box.
  • Work through examples that obtain input using Built In and User Defined (custom) Dialogs.

In this Lecture we will

  • Learn how to monitor keystrokes using the Keypress event
    • Discuss the difference between the char and string variable types
  • Extend our knowledge of User Defined Dialogs by looking at more advanced applications
    • illustrate how to create two way communication between the main form and the user dialog using the get and set commands (accessors and mutators)

In this Lecture we will

  • Look at the concept of repetition (another name for loops)
  • Look at the use of the While Loop
  • Look at user controlled repetition
  • Look at counter controlled repetition
  • Look at the use of the For Loop

In this Lecture we will

  • Look at some practical uses user controlled repetition
  • Look at the difference between counters and accumulators
  • Create several programs which determine averages
    • using user controlled repetition with an inputbox
    • using a user controlled repetition with a custom dialog
  • Combine our knowledge of Selective and Repetitive programming to create a large scale solution to a averaging problem.

In this Lecture we will

  • Look at the Combo box control and a practical application of its use
  • Look at the List box control and a practical application of its use

Problem solving has been described as the process of finding certain information that is not known, from a set of information that is known. In other words, problem solving is not an end result but rather a process. The end result is only worthwhile if the process is followed.

Problem solving is also an activity based on logic and, as such, requires some kind of structure to be present to aid us in our quest.

In this Lecture we will

  • look at some fundamentals in the problem solving process, and we will look at a problem solving model to help us as computer programmers - the software life cycle.
  • Thoroughly understand the problem
  • Break the problem down into its component parts
  • Arrange the solution in a clear and systematic way
  • Translate the solution into a computer language

It would be unfair to ask anyone to solve problems without effective tools to help along the way. The nature of programming requires programmers to first solve the problem at hand, then create an ordered set of instructions that will teach the computer how to solve the problem. There are a variety of problem solving models that assist the programmer in the problem solving stage.

In this Lecture we will

  • look at flowcharting a diagram, using symbols and arrows, which describes the solution to a computer problem in a step by step manner.

Why do software companies keep sending you updates, patches and fixes?

Computer programs that fail are common. By fail, we mean that a tiny error can cause a program to misbehave or crash. Most users are familiar with "crashing", from our own experience with computers. We have all heard amazing stories about software glitches that cause banks to lose millions or spacecraft to crash.

It may be impossible to guarantee that programs are error-free, but careful programming can help.

A program may encounter problems as it executes. It may have trouble reading data, there might be illegal characters in the data, or an array index might go out of bounds. C# has built in error and exception handling that enables programs to deal with such problems. Programs can recover from errors and keep on running.

In this Lecture we will

  • Look at Syntax errors
  • Look at Run-Time errors
  • Look at Logic errors

In this Lecture we will

  • Learn why and how to use subroutines or methods.
  • Learn that a method is actually just a small program that can be called from within a program
  • Create some sample applications

In this Lecture we will

  • Demonstrate how to have an event execute a method
    • It is possible to have one event handler respond to the same event on many different
  • Create several applications that incorporate this new concept

To this point, all the data that we have used when executing our programs has been entered from the keyboard. Similarly, all the output that has been produced from our programs has been to the screen. We must realize that not all input and output occurs this way, in fact, the majority of input for a computer program comes from data files that are stored on a disk or hard drive. When we create a document in a word processor, we see it on the screen; however, if we want to store that information, so that we can use or edit it at a later date, we must output the data to some secure storage medium. In the next few lessons, we will see how data storage and retrieval works.

Data produced from a program as the result of successful processing, can be output to a file for storage, rather than simply to the screen. Once stored, the data can be accessed for further processing, used as input for programs, searched for specific information, sorted, updated ... you get the idea!

Everyone using a computer deals with files. When you turn on your computer, the computer loads files. When you start a piece of software, the computer loads files. When you type solutions to the questions in this unit and save them (hopefully), the computer is saving or writing to a file. We use files to store information that is not being used by the computer at the present time.

Can you think of any useful program that doesn't use files? Files are a very important concept to understand, because any really useful piece of software uses files. Even your video games store your high scores.

In this Lecture we will

  • Learn to read from a data file (StreamReader) and write (StreamWriter) to a data file
  • Look at some simple applications that uses a data file

The beauty of using a program such as Visual Studio C# is the wide area of unique controls you can apply to your windows applications. Examples include linklabels, tabcontrols, datetime pickers and the treeview.

In this Lecture we will

  • Look at several controls we have not previously covered and how they can be implemented
  • Look at the Speech control which references the Microsoft Speech Library
  • Allow you to discover and implement a new control
12 questions

A recap of some of the concepts covered in this first section of the course from creating your first app, to mathematical concepts, to selection and repetition, methods, and new controls 

Section 3: Handling Exceptions

Exceptions occur when an application experiences some unexpected problem at run time.

In this lesson we will

  • Discuss how to use the try catch finally block to anticipate potential problems and attempt to shield the end user from those problems as much as possible.
  • Discuss best practices when checking for exceptions and discuss the mindset of the conscientious software developer who seeks to provide the best possible experience for his users.
  • Illustrate the Error Provider Control
3 questions

A recap of error handling techniques in c#

Section 4: Advanced Array Applications

In this Lecture we will

  • Introduce the concept one-dimensional arrays, which are multi-part variables "buckets" containing other "buckets".
  • Discuss "Why" they should be used
  • Learn how to declare, store ,retrieve, display and utilize the contents of an array structure.

In this Lecture we will

  • Create a one-dimensional array application involving student marks that will determine the average mark and highest/lowest marks
  • Introduce the concept of passing by value and passing by reference

In this Lecture we will

  • Introduce the concept of array counters and why they are used.
  • Code a simple application which uses array counters
  • Introduce the concept of de-limited text files and the use of the SPLIT command

In this Lecture we will

  • Introduce the concept of two dimensional arrays. Two dimensional arrays are useful for storing tables of information. They contain rows and columns of data which are the same data type.
  • Discuss where and why they are used.
  • Learn how to declare a two dimensional array, store values inside it, retrieve the contents , display the contents on screen and perform row and column calculations.

In this Lecture we will

  • Use two dimensional arrays in a practical application We will create a program which performs an analysis of Quiz scores for a number of students and a number of quizzes.

In this Lecture we will

  • Introduce the concept of two dimensional array counters
  • Create programs which perform data analysis

In this Lecture we will

  • Introduce the concept of three dimensional arrays
  • Take a look at a practical application of three dimensional arrays
5 questions

A recap of one,two and three dimensional array concepts

Section 5: Mathematical Applications

In this Lecture we will

  • Introduce several useful built-in math functions
    • Trigonometric functions
    • Absolute Value
  • Create a simple application which utilizes some of these functions

In this Lecture we will

  • Discuss the issue of floating point arithmetic and the errors that it can lead to
  • Illustrate the concept of Tolerance which is one technique to overcome these pitfalls

In this Lecture we will

  • Be introduced to the Euclidean Algorithm which can be used to find the Greatest Common Divisor (GCD)
  • Use the Euclidean Algorithm in several programs to help use find the GCD
    • adding fractions (simple problem ... not so simple solution when you must code it)
3 questions

A recap of the hidden pitfalls of computer arithmetic and the Euclidean Algorithm.

Section 6: Advanced Probabilistic Simulations

As our programming experience becomes more complex and detailed, are you taking the time to help others? Do you visit the discussion area regularly to see if you can support those experiencing difficulty? By
working and learning together, we can share the challenges as well as the successes.

In this Lecture we will

  • Introduce/review the concept of random numbers
  • Discuss where random numbers are used
  • Write some simple application programs to demonstrate the concept.
    • coin toss
    • dice roll
    • guess number
    • math game
  • Give you the challenge of programming the "Gambler Problem"

In this Lecture we will

  • Go through the solution to the Gambler Problem from the previous lecture
  • Simulate the PLINKO game
  • Create a probabilistic simulation of the success and failure rates of students taking driving school.
  • Give you the challenge of programming the "Shooting Gallery Problem"

In this Lecture we will

  • Go through the solution to the "Shooting Gallery Game"
  • Introduce to the concept of random selection without duplication. This involves games where repetition of winners is not allowed.
  • Create an application (prizes ... "The NFL Helmets Problem") which utilizes the concept then try the "Casino Problem"

In this Lecture we will

  • Develop a Memory Game application which incorporates many of the concepts we have covered so far in this section on probabilistic simulations.

In this Lecture we will

  • Introduce to the concept of building discrete random distributions
  • Create an application which utilizes the concept
  • Create a random number generator using a static class
3 questions

A recap of random numbers and their applications

Section 7: Object Oriented Programming

Now that you have a good sampling of basic C# syntax under your belt, it's time to tackle some more challenging topics. Classes are integral to the .NET Framework, particularly the .NET Framework Class Library. This lecture demonstrates how classes are defined and new instances are created, how to define Properties and how to both set values and get values for a given instance of the class as well as creating Methods in our classes. We talk about how the classes you create are really custom dat types that can be used as such in helper method declarations and more.

In this Lecture we will

  • Introduce you to some of the basic concepts of object oriented programming
  • Learn to differentiate between a class and an object
  • Learn to create a class
  • Learn about fields,properties,methods and constructors
  • Learn how instances are created
  • Create a simple application that use classes

In this Lecture we will

  • Review the basic concepts of classes,objects,fields,properties,methods and constructors
  • Look at the concept of encapsulation
  • Look at the concept of Static Methods
    • creating a "global" variable
  • Look at method overloading
  • Look at the concept of inheritance

In this Lecture we will

  • Highlight a practical applications that incorporates Object Oriented Programming concepts
    • Payroll Application

In this Lecture we will

  • Introduce the concept of a structure
  • Discuss the difference between an array and a structure
    • The elements of a structure can be of different types
  • Discuss the similarities with classes
    • They represent data structures
    • The structure definition looks alot like the field definitions for a class

struct CListOfCars
public String Make;
public String Model;
public int CarYear;
public int Doors;
public String CarPicture;

CListOfCars[ ] Car = new CListOfCars[11];

Note:  The structure definition looks alot like the field definitions for a class. Right after the structure def we create an array of CListOfCars called Car

Notice below how we are using an array to refer to each part of the car structure and how the array is a mixture of text (strings) and numbers. You can't do that with a regular array

string p = Application.StartupPath;
Car[1].Make = "Honda";
Car[1].Model = "Civic";
Car[1].CarYear = 1998;
Car[1].Doors = 4;
Car[1].CarPicture = p + @"\Civic1.bmp";

6 questions

A recap of OOP concepts and Structures

Section 8: String Applications

In this Lecture we will

  • Be introduced to String class methods
  • Determine the length of a string of text
  • Extract a subset of characters from a string of text
  • Create a program that performs a letter count

In this Lecture we will

  • Introduce the concept of String accumulators and concatenation and show how they can be used to re-form strings and numbers.
  • Discuss the importance of string manipulations in the real world

In this Lecture we will

  • Look at how strings are used to solve number theory problems
  • Discuss how this topic is a pre-cursor to Cryptography ... the sciece of codes

In this Lecture we will

  • Introduce you to a practical application of Strings called code validations
  • Introduce you to the concept of a check digit
  • Create a program to validate a Social Insurance Number
  • Create a program to validate a credit card

In this Lecture we will

  • Illustrate how ISBN (International Standard Book Numbers) are created and validated
  • Create a program to valid and create the check digit for ISBN
  • Create a program which performs searching and substring extracting
    • Enter a phone number of the form 416-1234567 and the program extracts the area code and telephone number

In this Lecture we will

  • Introduce the concept of Cryptography
  • Illustrate how the Caesar Code works
  • Create a program to encrypt and decrypt the Caesar Code
  • Demonstrate some advanced Crypto techniques

In this Lecture we will

  • Challenge you a variety of problems that require the use of String Functions
    • validating a credit card
    • validating a VIN (vehicle information number)
    • .... and more !!
5 questions

A recap of C# String commands and applications

Section 9: Introduction to Recursion

In this Lecture we will

  • Define Recursion
  • Discuss the 3 criteria necessary to perform  recursion
  • Create a program which determines Factorials using  recursion
  • Create the recursion version of the Euclidean Algorithm (GCD)

In this Lecture we will

  • Take a look at some sample applications of Recursion
    • Path Length
    • Word Puzzle
    • Flood Fill
    • ..... and more !!!

In this Lecture we will

  • Use the recursive backtracking technique to navigate through mazes
3 questions

A recap of Recursion basics

Section 10: Sorting and Searching

In this Lecture we will

  • Discuss the concept of sorting and why arrays are necessary to create an efficient program.
  • Introduce a number of sorting techniques including the Replacment and Bubble Sort.

In this Lecture we will

  • Learn how to sort strings using the CompareTo() command
  • Modify the Bubble Sort to incorporate a swap method
  • Modify the Bubble Sort to only compare as far as the last swap
  • Learn how to sort using the Exchange Sort

In this Lecture we will

  • Learn how to use the Selection Sort (a combination of the Exchange Sort and the Replacement Sort)
  • Learn how to use the Shell Sort
  • Learn how to use the Quicksort
  • Learn how to use the sort method of the class called Array
    • Array.Sort(some array)

In this Lecture we will

  • Challenge you with a sorting application problem which determines the median of school marks

In this Lecture we will

  • Learn how to sort multi-field records
  • Learn how sorting multi-field records can be very inefficient
  • Learn how the pointer sort method can make multi-field sorting very efficient
  • Create several applications that incorporate pointer sorts
    • one dimensional array application
    • two dimensional array application

In this Lecture we will

  • Learn how to use Structures and Classes (an array of objects) to sort multi-field records
  • Challenge you with a sorting problem which tracks snowfall records for various ski resorts

In this Lecture we will

  • Introduce the sequential search technique.
  • Use a simple practical application called the Album Lending Program to demonstrate how it can be implemented.
    • incorporate a Search class using static methods
    • incorporate a comma delimited text file
    • Read and Write data to the text file
    • Use a User Defined Dialog with keystroke monitoring, and the get and set properties

In this Lecture we will

  • Introduce the binary search technique.
    • compare the speed of the sequential vs the binary search
  • Use a simple practical application called the Album Lending Program to demonstrate how it can be implemented.
    • incorporate a Search class using static methods

In this Lecture we will

  • Introduced to the concept of table lookups, an application of searching.
  • Look at an inventory application and how it implements searching
  • Assigned you a distance table lookup problem to program
5 questions

A recap of Sorting and Searching Techniques and Applications

Section 11: File Handling Applications

In this Lecture we will

  • Extend our knowledge of Data Files by creating a program which updates a Sequential files
    • changes
    • deletions
    • additions

In this Lecture we will

  • Learn how to use several Common Dialogs
    • File Open
    • File Save
    • Font
    • Color
  • Demo several applications which incorporate Common Dialogs
  • Incorporate Common Dialogs in the Album Lending program

In this Lecture we will

  • Update the Album Lending program to include
    • a user defined toolbar with a new file button and status bar
    • error handling (try/catch)
    • a listview control to display the data
      • note: view property set to DETAILS + Gridlines set to true
  • Highlight some student created file applications

In this Lecture we will

  • Introduce you to Using SQL (Structured Query Language) Server Express
    • create a single table database (Contacts)
      • Visual Studio can generate code to connect a form to a database but you need to have the database in place BEFORE generating that code
    • connecting your form to your database objects with a datasource
    • adding database driven controls to your form

In this Lecture we will

  • Discuss the differences between Sequential (Flat File)  and Relational Databases
  • Create a Multi-Table database (Car Tracker)
    • add multiple tables with primary keys
    • create a dataset - in data source window add new data source
    • then create relationships between tables 
    • In data source window select Listing node and choose Details view
    • Data bind with other tables
      • select table from dataset and drag onto form surface over combo box
      • combo box is now populated with all the values from the table not simply one row
    • Add queries using Dataset Designer then query builder
      • binding new queries to controls on form or whole form (click smart tag in adapter)

In this Lecture we will

  • Complete the Car Tracker App from the previous Lecture
6 questions

A recap of File Handling and SQL

Section 12: Introduction To Data Structures

In this Lecture we will

  • Learn that C#.NET has a lot of different data structures, for example, one of the most common ones is an Array. However C# comes with many more basic data structures. Choosing the correct data structure to use is part of writing a well structured and efficient program.
  • Learn why the ArrayList is one of the most flexible data structure.
  • Learn that an ArrayList contains a simple list of values and that an  ArrayList implements the interface using an array so we can very easily we can add , insert , delete , view etc.
  • Learn it is very flexible because we can add without any size information , that is, it will grow dynamically and also shrink .
  • Introduce the List structure (an optimized ArrayList)
  • List<T> is a generic class. It supports storing values of a specific type without casting to or from object

In the Lecture we will

  • Discuss the difference between Hashtable and Dictionary
    • Hashtable and Dictionary are collection of data structures to hold data as key-value pairs.
    • Dictionary is generic type, hash table is not a generic type.
    • The Hashtable is a weakly typed data structure, so you can add keys and values of any Object Type to the Hashtable.
    • The Dictionary class is  strongly typed < T Key, T Value > and you must specify the data types for both the key and value.

In this Lecture we will

  • See that the Stack is a powerful and simple last-in-first-out data structure.
  • Learn that this structure can help you develop parsers quickly and also replace complex recursive algorithms.
  • Learn about the Push command . Usually the first action you need to do on Stack is Push elements into it. The word Push is a computer science term that means "add to the top."
  • Learn about the Pop command. This command receives an element from the stack
  • Look at two simple applications ... a Text Parser and a Decimal to Binary Converter


In this Lecture we will

  • Learn that the Queue works like FIFO system , a first-in, first-out collection of Objects.
  • Learn that objects stored in a Queue are inserted at one end and removed from the other.
  • Learn that the Queue provide additional insertion, extraction, and inspection operations. We can Enqueue (add) items in Queue and we can Dequeue (remove from Queue ) or we can Peek (that is we will get the reference of first item ) item from Queue.
  • Create a simple queuing program for a dance
5 questions

A recap of  a the data structures: ArrayList , List, Hash Tables, Dictionaries, Stacks and Queues.

Section 13: Graphics

In this Lecture we will

  • Learn about the graphics coordinates of the screen
  • Learn how to access (instantiate) and use the C# graphics class to draw lines,rectangles,ellipses and load images from a file on the form
  • Create a simple dice roll graphical simulation

In this Lecture we will

  • First review the concepts of the previous lecture by using an example which implements a user created Class that draws Faces on the screen
  • Learn how to draw on a Panel control
  • Learn about using the Color.FromArgb(alpha,r,g,b) command
  • Learn how to scroll the contents of a panel

In this Lecture we will

  • Challenge you to create a program that generates an 8x8 red and black checkerboard

In this Lecture we will

  • Learn about the Mouse Events MouseDown, MouseUp and MouseMove
  • Write several programs that incorporate mouse movement including a drawing program.
    • MouseProblem ... multiple forms
    • UpdatedBlackboard

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Charlie Chiarelli, Experienced Online Educator

Hi, my name is Charlie Chiarelli. I'll be your teacher for this course. I will spend as much time as necessary to help you do the best you can. But, for you to succeed you must be willing to work .

I am a retired High school Computer Science and Mathematics Teacher from Canada. I taught for 35 years, I have a BMath degree from the University of Waterloo.

I was a frequent speaker at educational conferences (ECOO) and seminars . Most recently my talks focused on E-Learning and the future of education (Flipping the Classroom).

I was the school webmaster and served on a number of school board committee , recently advising my school board (Hamilton Wentworth Catholic District School Board) on its online learning direction. I was also the contest coordinator for the Annual Programming Contest for the past 15 years.

For the last 7 years before I retired I was in the unique position of teaching most of my computer science classes entirely online using the D2L LMS. Because of low enrollment and lack of qualified computer science teachers I became the "board" teacher. So my virtual class was made up of students from various schools in the region.

I am not a brilliant software engineer trying to teach programming. I am a high school computer science teacher that has taught teenagers for over 35 years. So I think my perspective and sensibilities are quite different than the typical Udemy instructor. I feel this gives me a greater appreciation for what beginners need to learn and how it should be presented. I hope you agree and find my courses rewarding. 

Ready to start learning?
Take This Course