C# Programming a Practical Applications Approach
4.6 (80 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.
531 students enrolled
Wishlisted Wishlist

Please confirm that you want to add C# Programming a Practical Applications Approach to your Wishlist.

Add to Wishlist

C# Programming a Practical Applications Approach

Introducing Teens and Beginners to Programming. More videos and practice exercises than any Intro course
4.6 (80 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.
531 students enrolled
Created by Charlie Chiarelli
Last updated 9/2017
Current price: $10 Original price: $40 Discount: 75% off
5 hours left at this price!
30-Day Money-Back Guarantee
  • 18 hours on-demand video
  • 24 Articles
  • 138 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
What Will I Learn?
  • 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, and Methods
  • Understand the intermediate concepts of Object Oriented Programming, String Handling, Arrays (One, Two Dimensional), Random Numbers, Graphics, and Animation
  • Apply the programming skills learned to create meaningful computer applications from the world of business, science , math and gaming. These solutions will incorporate the software design life cycle of problem definition,analysis, design, implementation, testing and maintenance
  • Create Business applications which simulate a computerized cash register for a cafeteria, and a sign in system for a doctors office
  • Create Science applications which create charts that convert from Fahrenheit to Celsius
  • Create applications which track student marks and determine averages, and highest and lowest marks
  • Create applications which determine credit card eligibility for applicants based on a scoring system
  • Create applications which check the validity of a credit card using String manipulation techniques
  • Create a program that plays the card game War
  • Create a Math program which displays a bar chart of sales over a period of years
  • Create a Graphics program which simulates an "Etch-A-Sketch" drawing program
  • Create a simple object animation then use it as the basis for a car race game
  • Create a slot machine game
  • Create a falling objects games ... where you move an object around with the keyboard and catch objects falling from the sky for points
  • Create a Space shooter game
  • Fully appreciate the wide range of applications that the study of Computer Science provides.
  • * NEW * Extend the idea of coding and computational thinking by solving a series of advanced problems from a wide variety of disciplines.
View Curriculum
  • 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)

Students will learn to create their own computer programs and video games using the C# programming language. No prior programming experience is assumed. This is a course for REAL BEGINNERS. We will introduce all the required programming skills from the ground up.This programming course is meant for ANYONE WHO WANTS TO LEARN TO CODE. We cover C# syntax but more importantly we introduce the PROBLEM SOLVING SKILLS necessary  to convert practical problems to solutions in code.

I walk you carefully through every possible feature you can imagine, and I use hundreds of existing projects you can learn from, or expand on to make your own project. It's worth sifting through a dozen mediocre Udemy courses to find a gem like this. It's pretty close to a one stop shop for taking you from knowing nothing about WinForms, to building your own whole applications.

This course has more hours of video instruction (18 + hours) , lectures (90 ) and exercises and supplemental resources (132)  than virtually any other Introductory C# course offered on Udemy.  All for one low price.

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  home,school and  workplace. They address a wide spectrum of  interests including business, science, math,art,music, and especially ANIMATION and GAMES ...(1/4 of the lectures).

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.

Who is the target audience?
  • This C# programming course is meant for ANYONE WHO WANTS TO LEARN TO CODE . We cover C# syntax but more importantly we introduce the problem solving skills necessary to convert practical problems to solutions in code. No prior programming knowledge is needed.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
93 Lectures
Course Information
3 Lectures 19:15

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.

Preview 01:55

Here's what you need: 

Visual Studio Express 2015
Course Demos

Course Specifics Part 1 ... What You Need

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

  • create a computerized cash register for a cafeteria
  • create a computerized sign in system for a doctors office
  • create a chart that converts Fahrenheit to Celsius
  • create a program to accept student marks and determine the overall class average and the highest and lowest marks
  • create a program that sorts numbers/names in order
  • create a program which determines whether a person is eligible for a credit card based on a scoring system
  • create a program that determines whether a credit card is valid or not
  • create a program that plays the card game War
  • create a program which displays a bar chart of sales over a period of years
  • create a "etch a sketch" type blackboard drawing program
  • create a simple object animation then use that as the basis for a car race game
  • create a slot machine game
  • create a falling objects game ... move an object around with the keyboard and catch objects falling from the sky for points.
  • create a space shooter game
  • ...... Now its your turn !
Preview 11:06
The Basics
16 Lectures 04:28:51

In this Lecture we will

  • Become acquainted with the Visual Studio C# Express environment
Introduction to C# Creating Your First App Part 1 ... The VS 2015 Enviroment

In this Lecture we will

Create your first Windows Applications using various user interface controls

  • labels
  • textboxes
  • buttons
  • pictureboxes
Preview 17:28

In this Lecture we will

  • Become acquainted with naming conventions for the interface controls
  • Use radiobuttons in a simple application
User Interface Controls and Events Part 1 ... Using Radio Buttons

In this Lecture we will

  • Use Scroll Bars and the NumericUpDown control
  • Use the menu control
  • Work with multiple forms
User Interface Controls and Events Part 2 ... Using Scroll Bars and Menu Control

A recap of some of the concepts covered in creating your first app and using a number of the key controls like the text box , command button and picturebox.

User Interface Quiz
8 questions

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
Entering and Outputting Data Part 1 ... The Concept of Computer Storage

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

Entering and Outputting Data Part 2 ... Math Operators

In the Lecture we will

  • 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)
Entering and Outputting Data Part 3 ... Mathematical Applications

In this Lecture we will

  • Create a practical applications "Venus Motor Sales"
  • Learn to display numbers in currency format
Entering and Outputting Data Part 4 ... Business Applications

In this Lecture we will

  • Practice what you have learned by trying the MathAppProblem (located in resources)
Entering and Outputting Data Part 5 ... Your Turn

This quiz recaps variables, assignment statements and mathematical programming

Entering and Outputting Data Quiz
10 questions

In this Lecture we will

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

Selection Part 1 ... The IF statement and 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.
Preview 15:26

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.
User Defined Dialogs

In this Lecture we will

  • Look at the concept of repetition (another name for loops) and its use in practical applications.
  • Look at the use of the While Loop
  • Look at user controlled repetition
  • Look at counter controlled repetition
Repetition Part 1 ... The While Loop

In this Lecture we will

  • work through counter controlled repetition problems
  • work through user controlled repetition problems
  • work through for loop problems
Repetition Part 2 ... User and Counter Controlled Repetition Problems

In this Lecture we will

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

Repetition Part 3 ... Counters and Accumulators

In this Lecture we will

  • Look at the Combo box control
  • Look at the List box control
Repetition Part 4 ... The Combo and List Box Controls

A recap of "if" statements and loops (while,for) and combo boxes

Selection - Repetition Quiz
11 questions
Problem Solving
7 Lectures 01:28:30

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
The Software Life Cycle ... The 5 Steps

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
Error Handling and Debugging

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 with a program
Methods Part 1 ... Why use ?

In this Lecture we will

  • Practice using Methods to solve a number of practical problems
Methods Part 2 ... Solving Practical Problems

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
  • Look at some simple applications that uses a data file
Introduction to Files

In this Lecture we will

  • Look at how to create a program using what we have learned during this entire section. This will include submitting all the required documentation and code which encompasses the 5 step model of problem solving.
  • Give you a chance to try the 5 step model by solving the Forensic problem.
Summative Programming Problem ... The Forensic Problem

A recap of the software life cycle, methods, and data files.

Problem Solving Quiz
7 questions
Object Oriented Programming
2 Lectures 36:28

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
Introduction to OOP ... Creating Classes and Objects

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
  • Look at method overloading
  • Look at the concept of inheritance
Intermediate OOP ... Encapsulation and Inheritance

A recap of beginner OOP concepts

Object Orient Programming Quiz
12 questions
4 Lectures 01:03:58

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
Introduction to String Functions

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
String Accumulators and Concatentation

In this Lecture we will

  • Introduce you to a practical application of Strings called code validations (in this case business product codes a pre-cursor to Cryptogaphy
Code Validations Part 1 ... The Check Digit

In this Lecture we will

  • Challenge you to create a program which will validate a credit card number
Code Validations Part 2 ... The Credit Card Validation Problem

A recap of C# String Functions and their applications

Strings Quiz
5 questions
8 Lectures 02:22:56

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 , calculate and display the contents of an array structure.
Introduction to One Dimensional Arrays Part 1 ... Why Use ?

In this Lecture we will

  • Practice the One Dimensional Arrays concepts we learned in the previous lecture
Introduction to One Dimensional Arrays Part 2 ... Theory to Practice

In this Lecture we will

  • Create a one-dimensional array application involving student marks that will determine the average mark and highest/lowest marks
One Dimensional Array Applications ... Class Statistics (Averages/Hi/Lo Marks)

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 bubble sort.
Sorting ... The Bubble Sort

In this Lecture we will

  • Introduced to the concept of array counters and why they are used.
  • Code a simple application which uses array counters
Advanced One Dimensional Array Concepts ... Array Counters

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, display the contents on screen and perform row and column calculations.
Introduction to Two Dimensional Arrays ... Why Use ?

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.
Two Dimensional Array Applications Part 1 ... Quiz Score Analysis

In this Lecture we will

  • Give you a chance to test out your skills with a practical problem to try ... "The Supermarket Problem"
Two Dimensional Array Applications Part 2 ... The Supermarket Problem

A recap of One Dimensional and Two Dimensional Arrays

Arrays Quiz
7 questions
Probabilistic Simulations
7 Lectures 01:45:42

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

  • Introduced to the concept of random numbers
  • Discuss where random numbers are used
  • Write some simple application programs to demonstrate the concept.
Introduction to Random Numbers Part 1 ... What are Probabilistic Simulations

In this Lecture we will

  • Use our knowledge of Random Numbers to simulate (model) a number of random event problems
Introduction to Random Numbers Part 2 ... Modelling Simple Random Events

In this Lecture we will

  • Review and extend our knowledge of Random numbers
  • Look at a coin toss problem
  • Look at a dice simulation
Introduction to Random Numbers Part 3 ... Review and Extension

In this Lecture we will

  • Create a simple Math Game simulation
  • Create the game Card Wars
  • Create an simple probabilistic simulation of a pinball game (similar to the plinko game on the Price is Right).
Applications of Random Numbers Part 1 ... Plinko Game Simulation

In this Lecture we will

  • Practice what we have learned using random numbers and simulate a Shooting Gallery Game.
Applications of Random Numbers Part 2 ... Shooting Gallery Simulation

In this Lecture we will

  • Introduce to the concept of random selection without duplication. This involves games where repetition of winners is not allowed.
  • Create an application (prizes) which utilizes the concept
Random Selection Without Duplication ... Casino Roulette Game

In this Lecture we will

  • Introduce to the concept of building discrete random distributions
  • Create an application which utilizes the concept
Discrete Random Distributions ... Dartboard Problem

A recap of random numbers and their applications to game simulations

Probabilistic Simulations Quiz
4 questions
21 Lectures 05:37:52

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
  • Create a simple dice roll graphical simulation
Introduction to Graphics Part 1 ... The Graphics Class

In this Lecture we will

  • Learn how to draw on a Panel control
  • Learn how to create any color using Color.FromArgb
Introduction to Graphics Part 2 ... Drawing on a Panel

In this Lecture we will

  • use our knowledge of graphics and arrays to create a bar chart.
  • Learn about the concept of scaling
Creating Bar Charts Part 1 ... The Concept of Scaling

In this Lecture we will

  • put to use our knowledge of scaling and bar chart creation to display a histogram of an event involving rolling dice.
Creating Bar Charts Part 2 ... Dice Roller Histogram Problem

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.
Mouse Events ... Creating an Etch A Sketch Program

A recap of C# Graphics Basics, specifically using the Graphics Class

Graphics Intro Quiz
7 questions

In this Lecture we will

  • Learn what timers are and how to use them
  • Learn how to use an array of images
    • using images placed in pictureboxes on the form
    • using images stored in an external files
Animations Part 1 ... Timers and Image Arrays

In this Lecture we will

  • Learn how to extract frames of images from animated gifs that can be used in your animations
  • Learn to create (draw) your own images that will become the individual frames of your animation
Animations Part 2 ... Creating Your Own Animations

In this Lecture we will

  • Look at two applications of in place computer animation
  • Look at the Dice Roll Game
  • Look at the Slot Machine Game
Animations Part 3 ... Sample Application - Slot Machine Game

In this Lecture we will

  • Make our objects move across the screen using the .Top and .Left properties
  • Discover how to check for the screen edges (top,bottom,left and right)
  • Discover how to make an object bounce off the wall or reappear around the other side

Animations Part 4 ... Moving Object Across the Screen using .Left and .Top

In this Lecture we will

  • Give you the challenge to create a simple two car race ... with some hints (help) of course !
Preview 13:55

In this Lecture we will

  • Learn about another way to move objects across the screen using the DrawImage command

Animations Part 6A ... Using the DrawImage command

In this Lecture we will

  • Learn how to create transparent gifs/png
Animation Part 6B ... Adding Transparency to Images

In this Lecture we will

  • Learn about the 4 requirements for collision
  • Learn how to detect keyboard events using the KeyDown Event
  • Create a simple application to implement both of these concepts
Animations Part 7 ... Collision Detection and Keyboard Events

In this Lecture we will

  • Learn how to animate without using pictureboxes
  • Learn that everything is an image object including the background
  • Learn that instead of wiping the screen with the backcolor we now redraw the background graphic over the current state of the animation
Animation Part 8 ... No Picture Boxes just Image Files

In this Lecture we will

  • Learn how to incorporate sound into a C# program
  • Learn how to use two techniques to create sound , the System.Media technique and using the Windows Media Player
Animation Part 9 ... Sounds Effects using System.Media and Media Player

In this Lecture we will

  • Learn how to create a simple Falling Objects game
  • Learn how to incorporate image arrays for the falling objects to reduce coding
  • Leave you with the challenge to create your own falling objects game
Animation Part 10 ... Falling Objects Game

In the Lecture we will

  • Learn to use some advanced animation techniques including using "double buffering" to reduce screen flicker during game creation
  • Create some simple animations incorporating double buffering
Advanced Animations Part 1 ... Double Buffering

In this Lecture we will

  • Learn to use the mouse with double buffering
  • Learn about double buffering on a panel
Advanced Animations Part 2 ... The Mouse , Panels and Double Buffering

In this Lecture we will

  • Learn about the basic game loop
    • While (game is runing)
      • check for input (keyboard/mouse)
      • update all objects in the game (position)
      • draw all the objects in the game
      • refresh the screen (force a repaint)
  • Work through several sample games making incremental improvements as we go along
Advanced Animations Part 3 ... Creating a Game - The Basic Game Loop

In this Lecture we will

  • Create a Space Shooter Game
  • Leave you with the challenge to create your own game
Advanced Animations Part 4 ... The Space Shooter Game ... Now Your Turn

Our final recap covers basic animation with timers and arrays right through to double buffering (back buffering).

Animation and Game Development Quiz
10 questions

This test/assignment serves as a nice overall review many of the key concepts covered in the course.
The Final Exam
1 question

In this Lecture we will

  • Recap course content
  • Discuss appropriate content for future learning
The Wrap Up ... Where do you go from here ?
Programming Challenges
25 Lectures 07:46

In this Lecture we will:

  • Introduce the format of the Programming Challenges 
    • A problem is posed from a variety of disciplines
    • Each problem involves loading in a data file which will be used in the solution to the problem. The name of the required text file is clearly indicated in each question
    • Some sample data and corresponding output is provided as a guide
    • Two more complicated data sets are also provided to make sure the solution works
Preview 07:30

In the Lecture we will challenge you with the: "Four In A Row" Problem


Given a positive integer, tell whether it is equal to the sum of four consecutive integers.

Challenge 1

In the Lecture we will challenge you with the: "Anything you can do , I can do better"  Problem


You have a colleague that is extremely competitive and always tries to “top” one of your stories. If you say your car is fast, your colleague will say his or her car is faster. If you say your car is faster, your colleague will say his or her car is fastest. After a few such conversations, you realize that you can always predict what your colleague will say next.

To demonstrate how annoying this is, you decide to write a program that can accurately predict the responses of your colleague. Your task is to write this program. Specifically, given any adjective, your program will return its comparative form by appending “er” to it. Note that if the adjective already ends in “e”, you should only append “r”. If your program is given an adjective already in its comparative form, your program should return the superlative form of the adjective created by simply replacing the “er” with “est”. Your program should consider any string that ends in “er” to be an adjective in comparative form.

Challenge 2

In the Lecture we will challenge you with the: "Crashing Words" Problem


Two words of the same length, which have the same letter in the same position are said to crash. For example, the words CRUSH and BURST have length five and have S in the fourth position. Write a program to read two words at a time from a data file called words.txt. You may assume the words are the same length and are in upper case. If the words do not crash, a message is printed out in the top left hand corner of the screen. If, however, the words crash, the word, which comes first in alphabetical order, will be printed vertically starting on the first row of the screen and the other word will be printed horizontally starting in the first column of the screen so that the words intersect at the first crash location.

Challenge 3

In the Lecture we will challenge you with the: "Add Times" Problem


In this problem we are going to represent time in the format days hours minutes. So, using a 24hr clock , 3 15 45 would mean 3 days 15 hours and 45 minutes.
You are to write a program that reads in pairs of times in this format then outputs the sum of the times. 

For example: Let's say the first time is 3 15 45 and the second time is 2 12 35. Then the required sum is 6 4 20 ( 6 days 4 hours 20 minutes).

Challenge 4

In the Lecture we will challenge you with the: "Waiting Long" Problem


Do you ever get tired of waiting for something to happen? The Gotta-Have-It Gadget Company thinks there is a market for a small device that can tell you how long you have been waiting. In its normal mode, it simply counts the minutes from start to stop. In the advanced mode, you can enter a start time and a stop time and it will tell you how many minutes have elapsed.

The Gotta-Have-It Gadget Company has hired you to program the advanced option. You are to write a program that will accept two times and determine how much time has transpired between them. Times will be entered in a 24-hour format. The first time will always be before the second time (but it may be larger - from 21:01 to 7:11 is 590 minutes). Your input will be the times in hours and minutes (HHMM - 21:01 would be 2101 for input). Your program should stop when the start time is 0. One minute after midnight would be represented as 1 (0 hours).

Challenge 5

In the Lecture we will challenge you with the: "It's All Good " Problem


Jimmie Flowers, known as Agent 13 is back!. However, he has a secret that until now nobody has noticed (although we aren't sure how we missed it!). Jimmie can't stand to have objects that are not properly aligned. If any object is slanted, he feels compelled to adjust that object.

Jimmie needs your help, though! He wants you to take bricks (which we will represent by just one of their edges) and determine if they are slanted or not. 

The Problem:
Given two unique points on a line, determine if the line is a horizontal or vertical line.

Challenge 6

In the Lecture we will challenge you with the: "Primitive Typewriters" Problem

Challenge 7

In the Lecture we will challenge you with the "Tipping Point" Problem


You are given a common die sitting on a table in a specific orientation. It sits on the table in front of you with a 1 showing on its top face, a 2 showing on its front face, and a 3 showing on its right face. Because the die is ordinary you should know that the total of the numbers on opposite sides of the die add up to 7. Thus the die has a 4 on its left face, a 5 on its back face, and a 6 hidden on its bottom face resting on the table. The die can tip over to reveal a new number based upon the direction of tipping. You can tip the die AWAY, TOWARD, LEFT or RIGHT. 

Given the initial die configuration and a sequence of tip instructions, you must determine the number that remains on the top face of the die after all tips have been completed.

Challenge 8

In the Lecture we will challenge you with the "Square The Word"  Problem


Read a word and create a square pattern as follows:
a) From the top left corner the word reads left to right
b) From the top left corner the word reads top to bottom
c) From the bottom right corner the word reads from bottom to top
d) From the bottom right corner the word reads right to left

Challenge 9

In the Lecture we will challenge you with the Credit Card  Problem


The Luhn algorithm, also known as the "modulus 10" or "mod 10" algorithm, is a simple checksum formula used to validate a variety of identification numbers, such as credit card numbers. The formula verifies a number using its included check digit, which is usually appended to a partial account number to generate the full account number. This account number must pass the following test:

1. Counting from the rightmost digit (which is the check digit) and moving left, double the value of every even-positioned digit (note: The first position/digit is considered in
position 0 a even position) . For any digits that are doubled and become 10 or more, take the two numbers and add them together. For example, 1111 becomes 2121, while 8763 becomes 7733 (from 2×6=12 → 1+2=3 and 2×8=16 → 1+6=7).

2. Add all these digits together. For example, if 1111 becomes 2121, then 2+1+2+1 is 6; and 8763 becomes 7733, so 7+7+3+3 is 20.

3. If the total ends in 0 (put another way, if the total modulus 10 is congruent to 0), then the number is valid according to the Luhn formula; else it is not valid. So, 1111 is not valid (as shown above, it comes out to 6), while 8763 is valid (as shown above, it comes out to 20).

Create a program that takes its input from a data file called credit.txt which will consist of a list of credit card numbers. Determine if the number is correct according to the Luhn algorithm.

Challenge 10

In this Lecture we will challenge you with the  Time Clock Problem


You need to compute the total time a worker has worked on a single calendar day given two time stamps of the form “HH:MM”. The numbers MM can be in the range of “00” to “59” while HH is in the range “01” through “12”. This is an archaic time stamp clock that doesn’t even record AM or PM values. The system has worked well in the past because no-one has ever worked longer than an 8 hour shift.

You can be assured that the two times are different and represent an employee checking in to work (on a calendar day) and checking out from work later on the exact same calendar day. You are to output the total time as “HH:MM”. If the accumulated work time is greater than 8 hours (in other words, 481 minutes or longer), then you are ordered to output “08:00” because this is the maximum time that the employee would be paid.
For example, given time stamps of “09:13” and “04:42” the total reported working time is reported as “07:29”.

Challenge 11

In this Lecture we will challenge you with the  QWERTY Problem


The Dvorak Simplified Keyboard is a keyboard layout patented in 1936 by Dr. August Dvorak, an educational psychologist and professor of education at the University of Washington in Seattle as an alternative to the more common QWERTY layout.

If someone was to have Dvorak enabled on their computer, and a guest was to start typing, expecting the standard QWERTY layout - text will come out as nonsense. You are to write a program to de-scramble any such message.

Challenge 12

In this Lecture we will challenge you with the  iProfit Problem


Having decided to capitalize on your awesome programming skills, you've set out to create and sell a mobile application at $0.99 per copy. Since the application is hosted and distributed through a managed platform, the store gets to keep 30% from each sale.

Given that you have an idea of how much profit you want to make off your hard work, at least how many 1000s of copies must be sold? (That is, the answer is rounded to the next 1000).

Challenge 13

In this Lecture we will challenge you with the  Craps Game Problem


The game of craps uses a standard pair of dice, with the rules: The user rolls the dice. They win if the total
value of their first roll is 7 or 11. They lose if the value is 2, 3, or 12. If they neither win nor lose, the value of their first roll is called the point. They continue rolling until they get another roll matching the point (they win), or a 7 appears (they lose)

Some over-zealous players like to roll the dice and ignore whether the game is over (at which point security is called to escort the player from the premises). Your program is to determine if the player has won the game or not, in addition to determining whether or not they have continued to roll after the game is over. There are five possibilities:
• The player stopped exactly when the game was over, and they won.
• The player stopped exactly when the game was over, and they lost.
• The player continued rolling after they won.
• The player continued rolling after they lost.
• The player stopped rolling when the game was not finished.

Challenge 14

In this Lecture we will challenge you with the  Decoding Problem


People have used letters, digits, and other punctuation symbols to represent information for hundreds, if not thousands, of years.  To transmit such symbols via a computer line, however, we must encode the symbols using a binary (two-symbol) code, since computers only process information represented by strings of zeroes and ones. 

A code is a set of binary strings.  In the program you are to write for this problem the letters a, b, d, e, h, l, o, r and w will be encoded as follows:  

a -> 1

b -> 01

d -> 001

e -> 0001

h -> 00001

l -> 000001

o -> 0000001

r -> 00000001

w -> 000000001

For example, the word "bed" will be encoded as 010001001.  Your program must decode binary messages that have been encoded using the above code. The input file decode.txt will contain several words encoded as above, one per line.  The first line will contain a single positive integer indicating the number of encoded lines to follow.  

The output will consist of one decoded word per line, with each decoded word corresponding to an encoded word in the input file.

Challenge 15

In this Lecture we will challenge you with the  Palindrome Problem


Your program is to read a data file (palindromes.txt) consisting of single lines of text and output
whether that text is a palindrome or not.
A palindrome is a string that read from left to right or right to left looks the same. For instance
"abcba" is identical whether we read it from left to right or from right to left.
Your program is expected to be case-sensitive.
On top of this definition we will consider the following pairs of characters to be reversible:
( ) , [ ] , { } , < >
This means that when reading from left to right we encounter the character '(' we should
encounter instead the character ')' when reading from right to left.
For instance the string "ab(c)ba" will be considered to be a palindrome while "ab(c(ba" will not.

Here are some examples of palindromes:
( )

and some examples of non-palindromes:

Sample Input (palidromes.txt)

Sample Output
This is not a palindrome.
This is a palindrome.

Challenge 16

In this Lecture we will challenge you with the Alphabetic Average Problem


 A numerologist might compute a number from a word as follows: assign the letter A a value of 1, the letter B a value of 2, …, and the letter Z has a value of 26. Now sum up the values of each letter in a word. For example, the word CAB has three letters and its numerological total is 3+1+2 = 6.

However, instead of computing the sum, what if you were asked to compute the Alphabetic Average. That is, compute the sum as shown above, then divide by the total number of letters in the word. Since this average might not be a proper integer, you need to round it to the nearest integer, whose value (as before) determines a letter, which is the alphabetic average of the original word.


When rounding use the following rule:


 To round to the nearest integer a positive number x whose fractional value is 0.5 or higher, choose the smallest integer greater than x, otherwise choose the largest integer smaller than x


For example, 1.4999 rounds (down) to the integer 1, while 13.5 rounds (up) to 14.


For CAB, the average (3+1+2)/3 = 2 which corresponds to B being the alphabetic average. 

Challenge 17

In this Lecture we will challenge you with the Title Problem.


 A software company has hired you to write software to help grade school children learn grammar. Your first project, and the objective of this problem, is to ensure that a title is presented in its proper case. As you may recall, the first word of a title always begins with a capital letter, and all other words begin with a capital, except “small words”. For this program, the set of small words are restricted to:

a an and the or for on is of

For example the title

“the rise and fall of western civilization” 

should have the first letter of the first word capitalized, in addition to all other words that are not small. 

Thus, the proper title should be: 

“The Rise and Fall of Western Civilization”. 

Write a program to convert a title into its proper case.

Challenge 18

In this Lecture we will challenge you with the Parity Bit Problem.


A parity bit is a binary digit that is added to ensure that the number of bits with value of 1 in a given set of bits is always even or odd. Parity bits are used as a simple validation code, for example to test that all the data has arrived correctly in a transmission. For this question we'll be using even parity bit -- that is, we want to add a bit (1 or 0) so that the total number of high bits (1) is even.

For example, consider integer 13. Binary representation of 13 is 1101. Number of high bits in 1101 is 3, which is odd. To make it even, the parity bit must also be high, so 1.

Challenge 19

In this Lecture we will challenge you with the Digital Key Problem


My Shiny Digital Key
A house key, is essentially a physical encoding of a digital key, where different heights of teeth represent different digits. If one could read this digital equivalent (lets say from a to-scale photograph), then the physical key itself is not needed to create a copy. Lets
imagine that we are not lock-picking our way into some place we shouldn't be at, but instead are running a legitimate locksmith business, maintaining a machine that cuts new copies of keys. We need to write some software that will scan the image of a key, and extract the heights of the teeth.

The input file digitalkey.txt will contain 2 sets of input. Each line is 5 characters long, and there are 7 lines per set. There is an additional whitespace line separating each set. Dot . will be the empty space character in the "image", number sign # is a part of the key. Each set of #s is continuous, but there could be a line of input with no #s at all.

The output contain 2 lines, each a 7 digit number, where each digit matches the height of the tooth on the corresponding line in the key. The top-most line of input is the leftmost digit in the output. There are no spaces between the digits, and each digit is in the 0-5 range.

Note: Make sure to print any leading zeros, if such are present.

Sample Input :

Sample Output:

Challenge 20

In this Lecture we will challenge you with the Enraged Fowl Problem.


Brandon is playing the latest game sensation, Enraged Fowl! His favorite fowl to use in this game is the one that “flies” in a straight line and then drops a bomb straight down on a target. Unfortunately, he is not very good at dropping the bomb so he wants to practice outside of the game. He wants you to help him! For his practice, he will consider only games where the target is in the same place (at the same height) as himself. He will provide you the distance that the target is from his position, the straight-line distance that he will fling his fowl through the air and the distance the bomb will drop. You need to determine whether that combination will work and hit the target!

The Problem:
Given three values representing the target distance, the flying distance, and the bomb drop
length, determine whether Brandon can hit the target.

Challenge 21

In this Lecture we will challenge you with the Penny Lane Problem.


Given a dollar amount between $0.01 and $9.99 you are to compute the fewest number of standard American coins needed to produce that sum. The standard coins are:
• dollar ($1.00)
• half-dollar ($0.50)
• quarter ($0.25)
• dime ($0.10)
• nickel ($0.05)
• penny ($0.01)

You must output the number of coins in descending order of value, being careful to use plurals when a specific coin is represented more than once. Note that the plural of “penny” is “pennies”.

Sample Results
1 dollar
1 quarter
2 dimes
2 pennies

Challenge 22

In this Lecture we will challenge you with the Rectangle Problem.


You are to write a program to determine if two rectangles overlap, one surrounds the other, or they have no overlap at all. One rectangle surrounds another if the other rectangle lies entirely inside the first (their edges may lie on top of each other). Rectangles are said to overlap if both rectangles have some area in common and some are not in common. Lastly, two rectangles have no overlap if they do not share any area in common

Challenge 23

In this Lecture we will challenge you with the Card Shark Problem.


A new card game is sweeping the nation. It has become the game of choice with weekly card games being held at the Arts Centre. This game is similar to Poker, but no attention is paid to suits, and we don’t care about straights. The idea is that the person with the worst hand wins. Therefore you do not want any pairs. David is a very conservative player. He only wants to bet if he is really sure that he will win. So you are to write a program to tell him if he has the worst hand possible. Each hand, seven cards are dealt to each player. They may then discard 2 cards. A guaranteed winning hand will have no pairs, and the lowest possible “high” card.

Challenge 24
About the Instructor
Charlie Chiarelli
4.6 Average rating
232 Reviews
1,423 Students
2 Courses
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. 

The next big blue-collar job category is already here—and it’s programming. What if we regarded code not as a high-stakes, sexy affair, but the equivalent of skilled work at a manufacturing plant? I believe we should spend less time urging kids to do expensive four-year computer-­science degrees and instead introduce more code at the vocational level in high school and  community colleges. Mid career people can learn coding online at sites like Udemy. I put forth the belief that  we should focus less on the wunderkinds and more on the average individual.

I hope you agree and find my courses rewarding.