You may download a brochure of this course at the bottom of this page.
To book please click here
Duration and pricing:
5 days full-time (R6995 excl VAT)
5 weeks part-time (2 nights per week, 3 hour sessions) (R9995 excl Vat)
5 Saturdays, 6 hour sessions) (R9995 excl Vat)
On the calender on this page below.
This course is for anyone who want to learn how to program in C# using the .NET framework
You should be at the minimum of Introduction to Programming level.
It contains introductory as well as advanced topics, making it applicable for both beginners and intermediate programmers.
If in doubt, you must be able to pass this test in a programming language of your choice, before attempting this course.
For beginner, intermediate and advanced students
Together, the Beginner and Advanced C#.NET are on the same level as Microsoft : 10266A . View the MCPD Course Schedules
1. Upon completion of this course we will issue you with attendance certificate to certify your attendance
and / or completion of the prescribed minimum examples.
2. You have the option to get the competency certificate if you also :
- hand in a project (pre-approved) covering most of the topics in the book
The project is useful for unemployed students who want to enter the job market.
This project and certificate can be used to show employers your abilities.
Get Productive with C#: Visual Applications
- Why you should learn C#
- C# and the Visual Studio IDE make lots of things easy
- Help the CEO go paperless
- Get to know your users’ needs before you start building your
- Here’s what you’re going to build
- What you do in Visual Studio...
- What Visual Studio does for you...
- Develop the user interface
- Visual Studio, behind the scenes
- Add to the auto-generated code
- You can already run your application
- Where are my files?
- Here’s what we’ve done so far
- We need a database to store our information
- The IDE created a database
- SQL is its own language
- Creating the table for the Contact List
- The blanks on the contact card are columns in our People
- Finish building the table
- Insert your card data into the database
- Connect your form to your database objects with a data
- Add database-driven controls to your form
- Good programs are intuitive to use
- Test drive
- How to turn YOUR application into EVERYONE’S application
- Give your users the application
- You’re NOT done: test your installation
- You’ve built a complete data-driven application
It’s All Just Code: Under the hood
- When you’re doing this...
- ...the IDE does this
- Where programs come from
- The IDE helps you code
- When you change things in the IDE, you’re also changing your
- Anatomy of a program
- Your program knows where to start
- You can change your program’s entry point
- Two classes can be in the same namespace
- Your programs use variables to work with data
- C# uses familiar math symbols
- Use the debugger to see your variables change
- Loops perform an action over and over
- Time to start coding
- if/else statements make decisions
- Set up conditions and see if they’re true
Objects: Get Oriented!: Making code make sense
- How Mike thinks about his problems
- How Mike’s car navigation system thinks about his problems
- Mike’s Navigator class has methods to set and modify routes
- Use what you’ve learned to build a program that uses a class
- Mike gets an idea
- Mike can use objects to solve his problem
- You use a class to build an object
- When you create a new object from a class, it’s called an instance of that class
- A better solution...brought to you by objects!
- An instance uses fields to keep track of things
- Let’s create some instances!
- Thanks for the memory
- What’s on your program’s mind
- You can use class and method names to make your code intuitive
- Give your classes a natural structure
- Class diagrams help you organize your classes so they make sense
- Build a class to work with some guys
- Create a project for your guys
- Build a form to interact with the guys
- There’s an easier way to initialize objects
Types and References: It’s 10:00. Do you know where your data is?
- The variable’s type determines what kind of data it can store
- A variable is like a data to-go cup
- 10 pounds of data in a 5 pound bag
- Even when a number is the right size, you can’t just assign it to any variable
- When you cast a value that’s too big, C# will adjust it automatically
- C# does some casting automatically
- When you call a method, the arguments must be compatible with the types of the parameters
- Combining = with an operator
- Objects use variables, too
- Refer to your objects with reference variables
- References are like labels for your object
- If there aren’t any more references, your object gets garbage-collected
- Multiple references and their side effects
- Two references means TWO ways to change an object’s data
- A special case: arrays
- Arrays can contain a bunch of reference variables, too
- Welcome to Sloppy Joe’s Budget House o’ Discount Sandwiches!
- Objects use references to talk to each other
- Where no object has gone before
- Build a typing game
- C# Lab: A Day at the Race
Encapsulation: Keep your privates... private
- Kathleen is an event planner
- What does the estimator do?
- Kathleen’s Test Drive
- Each option should be calculated individually
- It’s easy to accidentally misuse your objects
- Encapsulation means keeping some of the data in a class
- Use encapsulation to control access to your class’s methods
- But is the realName field REALLY protected?
- Private fields and methods can only be accessed from inside
- Encapsulation keeps your data pristine
- Properties make encapsulation easier
- Build an application to test the Farmer class
- Use automatic properties to finish the class
- What if we want to change the feed multiplier?
- Use a constructor to initialize private fields
Inheritance: Your object’s family tree
- Kathleen does birthday parties, too
- We need a BirthdayParty class
- Build the Party Planner version 2.0
- One more thing...can you add a $100 fee for parties over 12?
- When your classes use inheritance, you only need to write your code once
- Build up your class model by starting general and getting more specific
- How would you design a zoo simulator?
- Use inheritance to avoid duplicate code in subclasses
- Different animals make different noises
- Think about how to group the animals
- Create the class hierarchy
- Every subclass extends its base class
- Use a colon to inherit from a base class
- We know that inheritance adds the base class fields, properties, and methods to the subclass...
- A subclass can override methods to change or replace methods it inherited
- Any place where you can use a base class, you can use one of its subclasses instead
- A subclass can hide methods in the superclass
- Use the override and virtual keywords to inherit behavior
- A subclass can access its base class using the base keyword
- When a base class has a constructor, your subclass needs one, too
- Now you’re ready to finish the job for Kathleen!
- Build a beehive management system
- First you’ll build the basic system
- Use inheritance to extend the bee management system
Interfaces and Abstract Classes: Making classes keep their
- Let’s get back to bee-sics
- We can use inheritance to create classes for different types
- An interface tells a class that it must implement certain
methods and properties
- Use the interface keyword to define an interface
- Now you can create an instance of NectarStinger that does
- Classes that implement interfaces have to include ALL of the
- Get a little practice using interfaces
- You can’t instantiate an interface, but you can reference an
- Interface references work just like object references
- You can find out if a class implements a certain interface
- Interfaces can inherit from other interfaces
- The RoboBee 4000 can do a worker bee’s job without using
- is tells you what an object implements, as tells the
compiler how to treat your object
- A CoffeeMaker is also an Appliance
- Upcasting works with both objects and interfaces
- Downcasting lets you turn your appliance back into a coffee
- Upcasting and downcasting work with interfaces, too
- There’s more than just public and private
- Access modifiers change visibility
- Some classes should never be instantiated
- An abstract class is like a cross between a class and an
- Like we said, some classes should never be instantiated
- An abstract method doesn’t have a body
- Polymorphism means that one object can take many different
Enums and Collections; Storing lots of data
- Strings don’t always work for storing categories of data
- Enums let you work with a set of valid values
- Enums let you represent numbers with names
- We could use an array to create a deck of cards...
- Arrays are hard to work with
- Lists make it easy to store collections of...anything
- Lists are more flexible than arrays
- Lists shrink and grow dynamically
- Generics can store any type
- Collection initializers work just like object initializers
- Let’s create a List of Ducks
- Lists are easy, but SORTING can be tricky
- IComparable<Duck> helps your list sort its ducks
- Use IComparer to tell your List how to sort
- Create an instance of your comparer object
- IComparer can do complex comparisons
- Overriding a ToString() method lets an object describe itself
- Update your foreach loops to let your Ducks and Cards print themselves
- You can upcast an entire list using IEnumerable
- You can build your own overloaded methods
- Use a dictionary to store keys and values
- The Dictionary Functionality Rundown
- Build a program that uses a Dictionary
- And yet MORE collection types...
- A queue is FIFO—First In, First Out
- A stack is LIFO—Last In, First Out
If your browser doesn't display the calendar below, please click on this link or
try using Google Chrome, alternatively please enquire via our 'Contact Us' page.