Tutorial letter 102/2020
Advanced Programming
COS3711
Semesters 1 and 2
School of Computing
IMPORTANT INFORMATION:
This document contains material from the online lessons
from myUnisa.
, CONTENTS
Page
1 Introduction 3
2 Home page 3
3 Lesson Orientation 5
4 Unit 1 – Libraries 10
5 Unit 2 – Meta Objects, Properties and Reflective Programming 12
6 Unit 3 – Models and Views 14
7 Unit 4 – Validation and Regular Expressions 16
8 Assignment 1 17
9 Unit 5 – Parsing XML 19
10 Unit 6 – More Design Patterns 25
11 Unit 7 – Concurrency 32
12 Unit 8 – Networking and Cloud Computing 35
13 Assignment 2 37
2
, COS3711/102/2020
1 Introduction
Dear student
As noted in tutorial letter 101, this is a blended module, and therefore much of your module is available
on myUnisa. However, in order to support you in your learning process, we also provide this study
material in printed format.
Below you will find all the material that is available on the COS3711 site on myUnisa.
2 Home page
COS3711 - Advanced Programming
Welcome to COS3711 – a module on advanced programming concepts – from your lecturer, Mr Colin
Pilkington.
Major concepts
The major concepts you will learn include:
Using libraries
Understanding and implementing design patterns (there are many design patterns,
and you will focus on only a few this year)
XML parsing
Validating input
Reflective programming
Concurrency using threads and processes
Network programming
Cloud computing
Assumed background knowledge
It is assumed that you are proficient in the following skills (which you should have gained in your
previous studies):
C++: creating classes and objects, inheritance and polymorphism, pointers, templates, reading
from and writing to files, .h and .cpp file usage, and the use of public/protected/private
Qt: console and GUI applications, signals and slots, Qt container classes
Understanding UML diagrams
Design patterns: understanding of some design patterns such as Composite, Observer,
Serializer, Flyweight, Monostate, and Command
Assessment
You will be assessed in various ways in this module. The 2 assignments are practical assignments, and
you will have to design, code, compile, and run applications in preparation for submission. The exam,
however, is a written exam (with no practical component), and you will be expected to understand the
theory behind what you are doing, as well as writing code to implement concepts.
You will continue using the Qt framework that was used in COS2614.
We trust that you will enjoy this semester as you extend your C++ skills.
Your responsibility
A quick note about your responsibility as a student: you need to work through the prescribed textbook,
tutorial letters and lesson units, do all the exercises, and also do all the assignments – both the parts that
are submitted for marking and the self-assessment parts. This will not guarantee success, but without it,
it will be very difficult to pass.
3
, Checking in with the technology
In order to get started on this journey together, we need to make sure that you know what tools we will
be using throughout the semester:
Home page: This is the page you are currently on, and you will always start on this landing page
of the myUnisa site.
Announcements are added regularly, so please keep checking these.
Discussions: This page is provided for you to discuss module-related topics with each other.
Additional Resources: Here you will find further tutorial letters, videos, and supplementary
material needed for the module.
Official Study Material is where you will find past exams and some official tutorial letters.
The Calendar will remind you of important current events and information.
Lessons and Units: This is where you will find all the work for this semester, including what has
to be studied and extra notes.
Contacting us
Please feel free to contact me if you need help, and I look forward to guiding you through your studies
this semester. Please also check on my availability on the Osprey server
(http://osprey.unisa.ac.za/reg.htm).
Take a look at the comic strip below that provides some guidelines when contacting me. Our equivalent
of a T.A. is an e-tutor.
"Piled Higher and Deeper" by Jorge Cham
www.phdcomics.com
Colin Pilkington
Science campus, Florida Park
GJ Gerwel building, 04-015
011-471-2130
Contact times: Monday to Friday, from 8:00 till 14:00
4