Employing Junior Java Bootcamp Graduates is an Investment in Your Teams Future

Our Java Bootcamp teaches promising students the latest skills and knowledge about programming in Java as well as to pass the international OCP / Java exam.

The government has created various incentives to employ juniors, so is it not a good idea to look at a few promising junior Java Programmers. Any software team needs a long term strategy for growth and sustainability.

Why I studied the Java Bootcamp and would like to recommend it.

Here is my story.
I come from a call centre environment and I was really tired of it, so I wanted to do programming on a full-time basis and had no prior education or experience in any IT field and I did the bootcamp from the 1st of July last year and got my Java international(SCJP 6) on the 10th of December there after took a few weeks to complete my java project. Which was completed at the end of Jan this year, I have to be honest with you I don’t look over my shoulders, I’m thinking its the best decision I have ever made, because shortly there after I got 2 interviews. I currently work as a junior software developer at one of the companies.
If you ask me I would say, “It doesn’t get any better than this”, its the ultimate job satisfaction.
Kind regards,


Java Bootcamp – July – December 2014

Entry Requirements:
  • Matric with Pure Maths (60%) or
  • Good aptitude test results
  • Previous work experience or -training

Course Contents:

The following modules are covered in the Java Bootcamp

(remember, you should be at the Intro to Programming level)

Every student so far who has passed the Java Bootcamp (incl OCP Exam and Java Bootcamp project) has found employment, some have chosen to continue with the Java EE Bootcamp 

Cape Town


We need 6+ people, we will run the full bootcamp in Cape Town. So if you are interested, let us know and we will notify you if we have a group of 6.


Every module (*) is attended in-classroom for 5 full days, with projects to be completed on campus and / or at home with video conferencing support over the internet over the following week. The lecturing portion duration span 3 months and another 3 months can be added to hand in practical projects, making the total duration up to 6 months. Weekly / bi-weekly project progress sessions are held to support students.

Every module is presented as 8 evening classes during the week. The full course duration is one year
The full price for part-time is R59 995.

Bursaries / Sponsorships:

Please read our application procedure 


  • July 2014
  • January 2015
  • July 2015
Course Price :  R46 970 excl  Vat
Oracle Certified Associate Java Exam : R1460 excl Vat
Oracle Certified Professional Java Exam : R1460 excl Vat


You can download the course registration form on our home page or by clicking here 

Any questions? Please click here


Saturday Classes Java OCBCD/EJB 3.1 Certification Workshop – Aug 2014

Java / J2EE Business Component Developer for ORACLE Certification (OCBCD) 

You should be at the Advanced Java Programmer level.
Intended Audience
This course covers EJB 3.0 required to use on a practical Java project and also to pass the SUN exam. We not only try to help you to pass the exam, but teach it in a way you can use it in the real world.
After this course you should be able to Pass the Sun Certified Business Component Developer Exam and also be able to use EJB’s in the way it was intended for your projects at work.
Further Training
Further Java Certification courses.
Course Material
Included in the course price.

Course Info

The EJB 3.0 Standard

1. Introduction

  • The Problem Domain
  • Breaking Up Responsibilities
  • Code Smart, Not Hard
  • The Enterprise JavaBeans™ 3.1 Specification

2. Component Types

  • Server-Side Component Types
  • Session Beans
  • Message-Driven Beans (MDBs)
  • Entity Beans
  • The Java Persistence Model
  • The Model Isn’t Everything

3. Container Services

  • Dependency Injection (DI)
  • Concurrency
  • Instance Pooling/Caching
  • Transactions
  • Security
  • Timers
  • Naming and Object Stores
  • Interoperability
  • Lifecycle Callbacks
  • Interceptors
  • Platform Integration
  • Bringing It Together

4. Developing Your First EJBs

  • Step 1: Preparation
  • Definitions
  • Naming Conventions
  • Conventions for the Examples
  • Step 2: Coding the EJB
  • The Contract
  • The Bean Implementation Class
  • Out-of-Container Testing
  • Integration Testing

5. The Stateless Session Bean

  • The XML Deployment Descriptor
  • SessionContext
  • EJBContext
  • The Lifecycle of a Stateless Session Bean
  • The Does Not Exist State
  • The Method-Ready Pool
  • Example: The EncryptionEJB
  • The Contract: Business Interfaces
  • Application Exceptions
  • Bean Implementation Class
  • Accessing Environment Properties (Injection and Lookup)
  • Asynchronous Methods

6. The Stateful Session Bean

  • The Lifecycle of a Stateful Session Bean
  • The Does Not Exist State
  • The Method-Ready State
  • The Passivated State
  • Example: The FileTransferEJB
  • The Contract: Business Interfaces
  • Exceptions
  • Bean Implementation Class
  • POJO Testing Outside the Container
  • Integration Testing

7. The Singleton Session Bean

  • Concurrency
  • Shared Mutable Access
  • Container-Managed Concurrency
  • Bean-Managed Concurrency
  • Lifecycle
  • Explicit Startup
  • Example: The RSSCacheEJB
  • Value Objects
  • The Contract: Business Interfaces
  • Bean Implementation Class

8. Message-Driven Beans

  • JMS and Message-Driven Beans
  • JMS as a Resource
  • JMS Is Asynchronous
  • JMS Messaging Models
  • Learning More About JMS
  • JMS-Based Message-Driven Beans
  • @MessageDriven
  • The Lifecycle of a Message-Driven Bean
  • The Does Not Exist State
  • The Method-Ready Pool
  • Connector-Based Message-Driven Beans
  • Message Linking
  • Session Beans Should Not Receive Messages
  • The JMS APIs
  • Example: The StatusUpdateEJBs

9. Persistence: EntityManager

  • Entities Are POJOs
  • Managed Versus Unmanaged Entities
  • Persistence Context
  • Packaging a Persistence Unit
  • The Persistence Unit Class Set
  • Obtaining an EntityManager
  • EntityManagerFactory
  • Obtaining a Persistence Context
  • Interacting with an EntityManager
  • Example: A Persistent Employee Registry
  • A Transactional Abstraction
  • Persisting Entities
  • Finding and Updating Entities
  • Removing Entities
  • refresh()
  • contains() and clear()
  • flush() and FlushModeType
  • Locking
  • unwrap() and getDelegate()

10. Mapping Persistent Objects

  • The Programming Model
  • The Employee Entity
  • The Bean Class
  • XML Mapping File
  • Basic Relational Mapping
  • Elementary Schema Mappings
  • Primary Keys
  • @Id
  • Table Generators
  • Sequence Generators
  • Primary-Key Classes and Composite Keys
  • Property Mappings
  • @Transient
  • @Basic and FetchType
  • @Lob
  • @Temporal
  • @Enumerated
  • @Embedded Objects

11. Entity Relationships

  • The Seven Relationship Types
  • One-to-One Unidirectional Relationship
  • One-to-One Bidirectional Relationship
  • One-to-Many Unidirectional Relationship
  • Many-to-One Unidirectional Relationship
  • One-to-Many Bidirectional Relationship
  • Many-to-Many Bidirectional Relationship
  • Many-to-Many Unidirectional Relationship
  • Mapping Collection-Based Relationships
  • Ordered List-Based Relationship
  • Map-Based Relationship
  • Detached Entities and FetchType
  • Cascading
  • ALL
  • When to Use Cascading

12. Entity Inheritance

  • Single Table per Class Hierarchy
  • Advantages
  • Disadvantages
  • Table per Concrete Class
  • Advantages
  • Disadvantages
  • Table per Subclass
  • Advantages
  • Disadvantages
  • Mixing Strategies
  • Nonentity Base Classes
 13. Queries, the Criteria API, and JPA QL

  • Query API
  • Parameters
  • Date Parameters
  • Paging Results
  • Hints
  • FlushMode
  • JPA QL
  • Abstract Schema Names
  • Simple Queries
  • Selecting Entity and Relationship Properties
  • Constructor Expressions
  • The IN Operator and INNER JOIN
  • Fetch Joins
  • Using DISTINCT
  • The WHERE Clause and Literals
  • The WHERE Clause and Operator Precedence
  • The WHERE Clause and Arithmetic Operators
  • The WHERE Clause and Logical Operators
  • The WHERE Clause and Comparison Symbols
  • The WHERE Clause and Equality Semantics
  • The WHERE Clause and BETWEEN
  • The WHERE Clause and IN
  • The WHERE Clause and IS NULL
  • The WHERE Clause and IS EMPTY
  • The WHERE Clause and MEMBER OF
  • The WHERE Clause and LIKE
  • Functional Expressions
  • The ORDER BY Clause
  • Bulk UPDATE and DELETE
  • Native Queries
  • Scalar Native Queries
  • Simple Entity Native Queries
  • Complex Native Queries
  • Named Queries
  • Named Native Queries

14. Entity Callbacks and Listeners

  • Callback Events
  • Callbacks on Entity Classes
  • Entity Listeners
  • Default Entity Listeners
  • Inheritance and Listeners

15. Security 

  • Authentication and Identity
  • Authorization
  • Example: A Secured School
  • The Business Interface
  • Assigning Method Permissions
  • Programmatic Security
  • The RunAs Security Identity

16. JNDI, the ENC, and Injection

  • Global JNDI
  • The JNDI ENC
  • What Can Be Registered in the JNDI ENC?
  • How Is the JNDI ENC Populated?
  • How Are Things Referenced from the ENC?
  • Reference and Injection Types
  • EJB References
  • EntityManagerFactory References
  • EntityManager References
  • Resource References
  • Resource Environment and Administered Objects
  • Environment Entries
  • Message Destination References

17. Transactions

  • ACID Transactions
  • Example: The BlackjackEJB
  • Helper EJBs for Testing Transactions
  • Is the BlackjackEJB Atomic?
  • Is the BlackjackEJB Consistent?
  • Is the BlackjackEJB Isolated?
  • Is the BlackjackEJB Durable?
  • Declarative Transaction Management
  • Transaction Scope
  • Transaction Attributes
  • Transaction Propagation
  • Isolation and Database Locking
  • Dirty, Repeatable, and Phantom Reads
  • Database Locks
  • Transaction Isolation Levels
  • Balancing Performance Against Consistency
  • Optimistic Locking
  • Programmatic Locking
  • Nontransactional EJBs
  • Explicit Transaction Management
  • Transaction Propagation in Bean-Managed Transactions
  • Heuristic Decisions
  • UserTransaction
  • Status
  • EJBContext Rollback Methods
  • Exceptions and Transactions
  • Application Exceptions Versus System Exceptions
  • Transactional Stateful Session Beans
  • The Transactional Method-Ready State
  • Conversational Persistence Contexts

18. Interceptors

  • Intercepting Methods
  • Interceptor Class
  • Applying Interceptors
  • Interceptors and Injection
  • Intercepting Lifecycle Events
  • Custom Injection Annotations
  • Exception Handling
  • Aborting a Method Invocation
  • Catch and Rethrow Exceptions
  • Interceptor Lifecycle
  • Bean Class @AroundInvoke Methods

19. Timer Service

  • Example: A Batch Credit Card Processing System
  • The Business Interface
  • javax.ejb.ScheduleExpression and @javax.ejb.Schedule
  • The Bean Implementation Class
  • The TimerService
  • The Timer
  • Transactions
  • Stateless Session Bean Timers
  • Message-Driven Bean Timers

20. EJB 3.1: Web Services Standards

  • Web Services Overview
  • XML Schema and XML Namespaces
  • XML Schema
  • XML Namespaces
  • SOAP 1.1
  • Web Services Styles
  • Exchanging SOAP Messages with HTTP
  • Now You See It, Now You Don’t
  • WSDL 1.1
  • The <definitions> Element
  • The <portType> and <message> Elements
  • The <types> Element
  • The <binding> and <service> Elements
  • UDDI 2.0
  • From Standards to Implementation

21. EJB 3.1 and Web Services

  • Accessing Web Services with JAX-RPC
  • Generating JAX-RPC Artifacts from WSDL
  • Calling a Service from an EJB
  • The <service-ref> Deployment Element
  • The JAX-RPC Mapping File
  • Defining a Web Service with JAX-RPC
  • The WSDL Document
  • The Service Endpoint Interface
  • The Stateless Bean Class
  • The Deployment Files
  • Using JAX-WS
  • The @WebService Annotation
  • The @WebMethod Annotation
  • The @SOAPBinding Annotation
  • The @WebParam Annotation
  • The @WebResult Annotation
  • The @OneWay Annotation
  • Separating the Web Services Contract
  • The Service Class
  • The Service Endpoint Interface
  • The @WebServiceRef Annotation
  • Other Annotations and APIs
  • JAXB
  • Taking JAXB Further
  • Conclusion


SCBCD Example

Open SCBCD Example


Duration and pricing
  • Full-time over 5 days (R8995 excl VAT)
  • Part-time over 4 weeks (2 nights per week, 3 hour sessions) (R11995 excl Vat) or 8 Saturdays, 3 hour sessions) (R11995 excl Vat)
  • Distance-learning over up to 6 months (R9995 excl Vat)


Upon successfully completion of this course we will issue you with an attendance certificate.
You may write our Mock exam which, if you pass will qualify you for the competency certificate.


On the calender on this page below. This course is repeated approximately once every 6 weeks, unless a customised specific booking is requested via email.
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.



You can download the course registration form on our home page or by clicking here


Saturday Classes Java Web Services Starting On 28 June


You should be at or beyond the Java Servlets level

Intended Audience

Java Web Developers who want to improve/consolidate their skills in web services

After this course you should be able to

Develop REST-style and SOAP-based web services and clients with this quick and thorough introduction. 
This hands-on course delivers a clear, pragmatic approach to web services by providing an architectural overview, complete working code examples, and short yet precise instructions for compiling and deploying.
Further Training

Various Java EE courses

Course Material

We give you an original copy of the book: Java Web Services: Up and Running, 2nd Edition (Martin Kalin) as we use this mainly, but we also give additional examples where it falls short.

Course Contents
Day 1
Web Services Quickstart
  • Web Service Miscellany
  • What Good Are Web Services?
  • Web Services and Service-Oriented Architecture
  • A Very Short History of Web Services
  • What Is REST?
  • Review of HTTP Requests and Responses
  • HTTP as an API
  • A First RESTful Example
  • Why Use Servlets for RESTful Web Services?
Day 2
RESTful Web Services: The Service Side
  • A RESTful Service as an HttpServlet
  • A RESTful Web Service as a JAX-RS Resource
  • A RESTful Web Service as Restlet Resources
  • A RESTful Service as a @WebServiceProvider
RESTful Web Services: The Client Side
  • A Perl Client Against a Java RESTful Web Service
  • A Client Against the Amazon E-Commerce Service
  • A Standalone JAX-B Example
  • Another Client Against the Amazon E-Commerce Service
  • The CTA Bus-Tracker Services
  • RESTful Clients and WADL Documents
  • The JAX-RS Client API
  • JSON for JavaScript Clients
Day 3
SOAP-Based Web Services
  • A SOAP-Based Web Service
  • The RandService in Two Files
  • Clients Against the RandService
  • The WSDL Service Contract in Detail
  • SOAP-Based Clients Against Amazon’s E-Commerce Service
SOAP Handlers and Faults
  • The Handler Level in SOAP-Based Services and Clients
  • Handlers and Faults in the predictionsSOAP Service
  • A Handler Chain with Two Handlers
  • SOAP-Based Web Services and Binary Data
  • The Transport Level
  • Axis2
Day 4
Web Services Security
  • Wire-Level Security
  • A Very Lightweight HTTPS Server and Client
  • HTTPS in a Production-Grade Web Server
  • Container-Managed Security
  • WS-Security
Day 5
Web Services and Java Application Servers
  • The Web Container
  • Toward a Lightweight JAS
  • GlassFish Basics
  • Servlet-Based Web Services Under GlassFish
  • An Interactive Website and a SOAP-Based Web Service
  • A @WebService as a @Stateless Session EJB
  • TomEE: Tomcat with Java EE Extensions
  • Where Is the Best Place to Be in Java Web Services?
Duration and pricing
  • Part-time 4-8 Saturdays, 3-6 hour sessions (R10995 excl Vat)


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  / academic certificate if you :
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.


Have a look at the calendar below or click here or email to info@getcertified.co.za


You can download the course registration form on our home page or by clicking here


Beginner C# Evening Classes starting 24 June

If you would like to join, please book here now


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

Intended Audience

This course is for anyone who want to learn how to program in C# using the .NET framework

After this course you should be able to

Create a fun arcade game and build games and other projects

Further Training


 Together, the Beginner and Advanced C#.NET are on the same level as Microsoft : 10266A . View the MCPD Course Schedules
Course Material:
We give you an original copy of the book: Head First C# (by O’Reilly Press) as we use this mainly,
but we also give additional examples where it falls short.

Course info 
Day 1

Start Building With c#: Build something cool, fast!

  • Why you should learn C#
  • C# and the Visual Studio IDE make lots of things easy
  • What you do in Visual Studio…
  • What Visual Studio does for you…
  • Aliens attack!
  • Only you can help save the Earth
  • Here’s what you’re going to build
  • Start with a blank application
  • Set up the grid for your page
  • Add controls to your grid
  • Use properties to change how the controls look
  • Controls make the game work
  • You’ve set the stage for the game
  • What you’ll do next
  • Add a method that does something
  • Fill in the code for your method
  • Finish the method and run your program
  • Here’s what you’ve done so far
  • Add timers to manage the gameplay
  • Make the Start button work
  • Run the program to see your progress
  • Add code to make your controls interact with the player
  • Dragging humans onto enemies ends the game
  • Your game is now playable
  • Make your enemies look like aliens
  • Add a splash screen and a tile
  • Publish your app
  • Use the Remote Debugger to sideload your app
  • Start remote debugging
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
  • Anatomy of a program
  • 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
  • if/else statements make decisions
  • Build an app from the ground up
  • Make each button do something
  • Set up conditions and see if they’re true
  • Windows Desktop apps are easy to build
  • Rebuild your app for Windows Desktop
  • Your desktop app knows where to start
  • You can change your program’s entry point
  • When you change things in the IDE, you’re also changing your code
Day 2
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
  • A few ideas for designing intuitive classes
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
  • Debug the mileage calculator
  • 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
  • Controls are objects, just like any other object
  • Chapter C# Lab A Day at the Races
  • The Spec: Build a Racetrack Simulator
  • You’ll need three classes and a form
  • Here’s your application architecture
  • Here’s what your GUI should look like
  • The Finished Product
Day 3

Encapsulation: Keep your privates… private

  • Kathleen is an event planner
  • What does the estimator do?
  • You’re going to build a program for Kathleen
  • 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 private
  • Use encapsulation to control access to your class’s methods and fields
  • But is the RealName field REALLY protected?
  • Private fields and methods can only be accessed from inside the class
  • A few ideas for encapsulating classes
  • 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
  • How you’ll build the beehive management system
  • Use inheritance to extend the bee management system
Day 4
Interfaces and Abstract Classes: Making classes keep their promises

  • Let’s get back to bee-sics
  • We can use inheritance to create classes for different types of bees
  • 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 both jobs
  • Classes that implement interfaces have to include ALL of the interface’s methods
  • Get a little practice using interfaces
  • You can’t instantiate an interface, but you can reference an interface
  • Interface references work just like object references
  • You can find out if a class implements a certain interface with “is”
  • Interfaces can inherit from other interfaces
  • The RoboBee 4000 can do a worker bee’s job without using valuable honey
  • 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 maker
  • 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 interface
  • Like we said, some classes should never be instantiated
  • An abstract method doesn’t have a body
  • The Deadly Diamond of Death!
  • Polymorphism means that one object can take many different forms
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 are similar to 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
Day 5
Reading and Writing Files: Save the last byte for me!

  • .NET uses streams to read and write data
  • Different streams read and write different things
  • A FileStream reads and writes bytes to a file
  • Write text to a file in three simple steps
  • The Swindler launches another diabolical plan
  • Reading and writing using two objects
  • Data can go through more than one stream
  • Use built-in objects to pop up standard dialog boxes
  • Dialog boxes are just another WinForms control
  • Dialog boxes are objects, too
  • Use the built-in File and Directory classes to work with files and directories
  • Use file dialogs to open and save files (all with just a few lines of code)
  • IDisposable makes sure your objects are disposed of properly
  • Avoid filesystem errors with using statements
  • Trouble at work
  • Writing files usually involves making a lot of decisions
  • Use a switch statement to choose the right option
  • Use a switch statement to let your deck of cards read from a file or write itself out to one
  • Add an overloaded Deck() constructor that reads a deck of cards in from a file
  • What happens to an object when it’s serialized?
  • But what exactly IS an object’s state? What needs to be saved?
  • When an object is serialized, all of the objects it refers to get serialized, too…
  • Serialization lets you read or write a whole object graph all at once
  • If you want your class to be serializable, mark it with the [Serializable] attribute
  • Let’s serialize and deserialize a deck of cards
  • .NET uses Unicode to store characters and text
  • C# can use byte arrays to move data around
  • Use a BinaryWriter to write binary data
  • You can read and write serialized files manually, too
  • Find where the files differ, and use that information to alter them
  • Working with binary files can be tricky
  • Use file streams to build a hex dumper
  • StreamReader and StreamWriter will do just fine (for now)
  • Use Stream.Read() to read bytes from a stream
Duration and pricing
  • Full-time over 5 days (R7995 excl VAT)
  • Part-time over 4 weeks (2 nights per week, 3 hour sessions) (R9995 excl Vat) or 8 Saturdays, 3 hour sessions) (R9995 excl Vat)
  • Distance-learning over up to 3 months (R6995 excl Vat)


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  / academic certificate if you :
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.

Advanced PHP Evening Classes Starting 27 May 2014

Advanced PHP


You should be at the Beginner PHP course level

Intended Audience
This course is for beginner PHP programmers who want to take their skills   to the next level of building database-driven sites using PHP and MySQL.
Further Training
If you do not know SQL, you should seriously consider doing the SQL course – this is a must  for any IT professional nowadays.

Course Material
If you had done our PHP Beginner, we gave you an original copy of the book: Head First PHP & MySQL (by O’Reilly Press)
as we use this mainly, but we also give additional examples where it falls short. If you had not done it with us,  you will have to purchase the book separately.

Course Info

Day 1
  • Building personalized web apps
  • Prepping the database for log-ins
  • Constructing a log-in user interface
  • Encrypt passwords with SHA()
  • Comparing passwords
  • Authorizing users with HTTP
  • Logging In Users with HTTP Authentication
  • A form for signing up new users
  • Use cookies with PHP
  • A cookie-powered log-in
  • Logging out means deleting cookies
  • Sessions aren’t dependent on the client
  • Keeping up with session data
  • Log out with sessions
  • Complete the session transformation
  • Sessions + Cookies = Superior log-in persistence
  • Eliminate duplicate code
  • Using templates
  • Control your data, control your world
  • Model a database with a schema
  • Wire together multiple tables
  • Foreign keys in action
  • Tables can match row for row
  • One row leads to many
  • Matching rows many-to-many
  • Build a questionnaire
  • Get responses into the database
  • We can drive a form with data
  • Generate the questionnaire form
  • Strive for a bit of normalcy
  • When normalizing, think in atoms
  • Three steps to a normal database
  • Altering the database
  • A query within a query within a query…
  • Let’s all join tables
  • Connect with dots
  • Surely we can do more with inner joins
  • Nicknames for tables and columns
  • Joins to the rescue
  • Five steps to a successful mismatch
  • All we need is a FOR loop
Day 2
  • String and custom functions
  • The search leaves no margin for error
  • SQL queries can be flexible with LIKE
  • Explode a string into individual words
  • implode() builds a string from substrings
  • Preprocess the search string
  • Replace unwanted search characters
  • The query needs legit search terms
  • Copy non-empty elements to a new array
  • Extract substrings from either end
  • Multiple queries can sort our results
  • Functions let you reuse code
  • Build a query with a custom function
  • Custom functions: how custom are they really?
  • SWITCH makes far more decisions than IF
  • Give build_query() the ability to sort
  • We can paginate our results
  • Get only the rows you need with LIMIT
  • Control page links with LIMIT
  • Keep track of the pagination data
  • Set up the pagination variables
  • Revise the query for paginated results
  • Generate the page navigation links
  • Putting together the complete Search script
Day 3
  • Regular expressions
  • Decide what your data should look like
  • Formulate a pattern for phone numbers
  • Match patterns with regular expressions
  • Build patterns using metacharacters
  • Fine-tune patterns with character classes
  • Check for patterns with preg_match()
  • Standardize the phone number data
  • Get rid of the unwanted characters
  • Matching email addresses can be tricky
  • Domain suffixes are everywhere
  • Use PHP to check the domain
  • Email validation: putting it all together
  • Visualizing your data… and more!
  • No input form is safe
  • We need to separate man from machine
  • We can defeat automation with automation
  • Generate the CAPTCHA pass-phrase text
  • Visualizing the CAPTCHA image
  • Inside the GD graphics functions
  • Drawing text with a font
  • Generate a random CAPTCHA image
  • Add CAPTCHA to the Add Score script
  • Five degrees of opposability
  • Storing bar graph data
  • From one array to another
  • Formulating a bar graphing plan
  • Crunching categories
  • Doing the category math
  • Bar graphing basics
  • Draw and display the bar graph image
  • Individual bar graph images for all
  • Leftovers, Set up a Development Environment, Extend your PHP
Day 4
  • Syndication and web services
  • RSS pushes web content to the people
  • RSS is really XML
  • From database to newsreader
  • Visualizing RSS
  • Dynamically generate an RSS feed
  • Link to the RSS feed
  • A video is worth a million words
  • Pulling web content from others
  • Syndicating YouTube videos
  • Make a YouTube video request
  • REST request
  • YouTube speaks XML
  • Deconstruct a YouTube XML response
  • Visualize the XML video data
  • Access XML data with objects
  • From XML elements to PHP objects
  • Drill intoXML data with objects
  • Not without a namespace!
  • Lay out videos for viewing
  • Format video data for display
Day 5
  • What Is a Function?
  • Why Functions Are Useful
  • Calling Functions
  • Working with Variable Functions
  • Writing Your Own Functions
  • Working with References
  • What Is Object-Oriented Programming?
  • Advantages of OOP
  • Understanding Basic OOP Concepts
  • Creating Classes and Objects in PHP
  • Creating and Using Properties
  • Working with Methods
  • Object Overloading with _get(), _set(),
  • and _call()
  • Using Inheritance to Extend the Power of Objects
  • Constructors and Destructors
  • Automatically Loading Class Files
  • Storing Objects as Strings
  • Determining an Object’s Class
  • Handling HTML Forms with PHP
  • Preserving State With Query Strings, Cookies, and Sessions
  • Making Your Job Easier with PEAR
  • String Matching with Regular Expressions
Duration and pricing
  • Full-time over 5 days (R7995 excl VAT)
  • Part-time over 4 weeks (2 nights per week, 3 hour sessions) (R9995 excl Vat) or 8 Saturdays, 3 hour sessions) (R9995 excl Vat)
  • Distance-learning over up to 6 months (R6995 excl Vat)


1. Upon completion of this course we will issue you with an attendance certificate to certify your attendance and / or completion of the prescribed minimum examples.
2. You have the option to get the competency  / academic certificate if you :
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.



Advanced Java Servlets Done!

Well done Java Bootcamp Students by completing the Advanced Java Servlets module. I am eagerly awaiting your website projects in which you will demonstrate the skills that you have acquired. Skills to build robust web-based Java applications using Servlets and JSP’s. Employers – take note – these skills are hard to come by.

My WordPress Blog