Intro to Programming


Matric with no previous training in computer programming. If you cannot pass the Intro to Programming Test, you should be doing this course before attempting Beginner Java, Beginner C#, Beginner PHP etc.

Intended Audience

This course is for complete beginners, we cover the basics of Computer Programming Languages not focusing on OO, but on the fundamentals of programming like variables, arrays, data structures. Program flow and decision making with if, else etc. Also re-usability by using functions and methods. We also build a complete shopping cart system without Object-oriented programming – that will be covered in the beginner Java / C# / PHP etc.

After this course you should be able to

  • Have a good understanding of programming and the building blocks of a programming language.
  • Write useful programs using variables, arrays, loops, subroutines, functions (methods)

Further Training

Beginner Java, Beginner C#, Beginner PHP

Course Material

We give you an original copy of the book: Head First Programming (by O’Reilly Press) as we use this mainly, but we also cover additional examples where it falls short.

Course Contents

Day 1

  • Programming lets you do more
  • How to run your code
  • Create a new program file
  • Prepare  and run your code
  • A program is more than a list of commands
  • Your program is like a network of roads
  • Branches are code intersections
  • If/else branches
  • The Python code needs interconnecting paths
  • Python uses indents to connect paths
  • Loops let you run the same piece of code over   and over again
  • Python’s while loop
  • Your new gig at Starbuzz Coffee
  • Here’s the current Starbuzz code
  • The cost is embedded in the HTML
  • A string is a series of characters
  • Find characters inside the text
  • But how do you get at more than one character?
  • The String Exposed
  • Beans’R’Us is rewarding loyal customers
  • Searching is complex
  • Python data is smart
  • Strings and numbers are different
  • The program has overloaded the Beans’R’Us Server
  • Time… if only you had more of it
  • You’re already using library code
  • Order is restored

 Day 3

  • Who won the surfing contest?
  • Associate the name with the score
  • Associate a key with a value using a hash
  • Iterate hash data with for
  • The data isn’t sorted
  • When data gets complex
  • Return a data structure from a function
  • The code remains the same; it’s the function that changes
  • TVN’s data is on the money!
  • Head First Health Club is upgrading some systems
  • The program needs to create a transaction file
  • Use strings to format strings
  • The Format String Exposed
  • A late night email ruins your day
  • $50,000… for a donut?!
  • Only the sales from your program were rejected
  • The new bank uses a new format
  • Your coffee bar program still uses the old format
  • Don’t just update your copy
  • So how do you create a module…?
  • The transaction file is working great, too
  • The health club has a new requirement
  • The Starbuzz code
  • The two discount functions have the same name
  • Fully Qualified Names (FQNs) prevent your programs from getting confused

Day 5

  • What’s that smell?
  • Someone changed the file permissions
  • When it couldn’t write to the file, the program threw an exception
  • Catch the exception
  • Watch for exceptions with try/except
  • There’s an issue with the exception handler
  • A message box demands attention
  • Creating message boxes in Python
  • Time to mix it up
  • The music just kept on playing…
  • Not all events are generated by button clicks
  • Capturing the protocol event isn’t enough
  • Two buttons, or not two buttons? That is the question…
  • The checkbox is an on/off, flip/flop toggle
  • Working with checkboxes in tkinter
  • Model a slider on a scale
  • Use pygame to set the volume
  • Use tkinter for everything else
  • The DJ wants to play more than one track
  • Create code for each track as a function
  • The new function contains other functions
  • Your new function needs to create widgets and event handlers
  • The DJ is confused
  • Group widgets together
  • A frame widget contains other widgets
  • A class is a machine for creating objects
  • A class has methods that define behavior
  • But how does an object call a method?
  • The SoundPanel class looks a lot like the create gui() function
  • class = methods + data
  • The Class Exposed
  • The DJ has an entire directory of tracks
Day 2

  • Starbuzz is out of beans!
  • What does the new program need to do?
  • Don’t duplicate your code…
  • …Reuse your code instead
  • Reuse code with functions
  • Always get things in the right order
  • Return data with the return command
  • Use the Web, Luke
  • The function always sends the same message
  • Use parameters to avoid duplicating functions
  • Someone decided to mess with your code
  • The rest of the program can’t see the password variable
  • When you call a function, the computer creates a  fresh list of variables
  • When you leave a function, its variables get thrown away
  • Starbuzz is fully stocked!
  • Surf’s up in Codeville
  • Find the highest score in the results file
  • Iterate through the file with the open, for, close pattern
  • The file contains more than numbers…
  • Split each line as you read it
  • The split() method cuts the string
  • But you need more than one top score
  • Keeping track of 3 scores makes the code more complex
  • An ordered list makes code much simpler
  • Sorting is easier in memory
  • You can’t use a separate variable for each line of data
  • An array lets you manage a whole train of data
  • Python gives you arrays with lists
  • Sort the array before displaying the results
  • Sort the scores from highest to lowest

 Day 4

  • Head First TVN now produces game shows
  • pygame is cross platform
  • pygame Exposed
  • 0… 2… 1… 9… blast off!
  • tkinter gives you the event loop for free
  • tkinter is packed with options
  • The GUI works, but doesn’t do anything
  • Connect code to your button events
  • The GUI program’s now ready for a screentest
  • But TVN is still not happy
  • Label it
  • Head-Ex needs a new delivery system
  • They’ve already designed the interface
  • Read data from the GUI
  • The Entry and Text widgets let you enter text data into your GUI
  • Read and write data to text fields
  • Large Text fields are harder to handle
  • One of the Head-Ex deliveries went astray
  • Users can enter anything in the fields
  • Radio buttons force users to choose a valid depot
  • Creating radio buttons in tkinter
  • The radio buttons should work together
  • The radio buttons can share a model
  • The system tells the other widgets when the model changes
  • So how do you use models in tkinter?
  • Head-Ex’s business is expanding
  • There are too many depots on the GUI
  • An OptionMenu lets you have as many options as needed
  • The model stays the same
  • Things are going great at Head-Ex

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)
  • Part-time over 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.


On the calender on this page below.
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


You may download a pdf copy of this page by clicking here.


Please email us