SENG 475 — Advanced Programming Techniques for Robust and Efficient Computing (With C++)

NOTE: Please be sure to use the "refresh" button in your web browser to ensure that you are viewing the most recent version of this web document.

Table of Contents

  1. What is the Course About?
  2. When is the Course Offered?
  3. Accessing Course Materials
  4. Instructor
  5. Office Hours
  6. Course Outline
  7. Course-Materials Bug-Bounty Program (CMBBP)
  8. Feedback on Course/Teaching
  9. Important Dates
  10. Required Texts/Materials
  11. Optional Texts/Materials
  12. Assignments
  13. Project
  14. Final Exam
  15. Miscellaneous Handouts and Documents
  16. Signal Processing Library (SPL)
  17. Datasets

What is the Course About?

The course SENG 475 studies advanced programming techniques for robust and efficient computing using the C++ programming language. Some additional information regarding the objectives of the course can be found in the document that initially proposed this course:

In order to accommodate graduate students, SENG 475 is also planned to be offered as a graduate-level course, most likely as a selected-topics course, such as ELEC 569A (Selected Topics in Computer Engineering) and/or CSC 589A/B/C/D (General Topics in Computer Science). The particular selected-topics course to be used is still to be determined.

When is the Course Offerred?

The course (i.e., SENG 475) was approved by the Faculty of Engineering (on November 1, 2016) for inclusion in the University Calendar that takes effect in May 2017. So, the earliest that this course could be offered is May 2017. Since the course is new and will take considerable effort to develop, it is not feasible to offer the course in 2017. The current plan is to first offer the course in the Summer 2018 term, but this is contingent upon all of the course materials being ready at that time. Please check this section periodically for updates since this plan could possibly change. Incidentally, if this course is not offerred in a time frame that is feasible for you to take it, you might find the course ELEC 486/586 to be of interest.

Accessing Course Materials

Some of the downloadable course materials associated with this web page may be stored in a private (i.e., secure/protected) area. Two levels of security are imposed on this area:

  1. First, this area is password protected.
  2. Second, this area is only accessible from machines on the university campus network.
Typically, links to password protected parts of the web site are marked by a padlock. Password Protected

In order to access the private area, you will need to know the appropriate username and password to use (for the web server). If you are taking this course, you should know the correct username and password (which were announced during the first lecture). Note that this username and password are not the ones for your Netlink account. If you would like to access the private area from outside the university campus network, this can be accomplished by using the UVic VPN.


Michael Adams
E-Mail: mdadams (append "" for the complete address)
Office: EOW 311

For more sordid details about the instructor look here.

Office Hours

My office hours will be posted here as determined sometime during the first few lectures.

Course Outline

The course outline is still in preparation.

Course-Materials Bug-Bounty Program (CMBBP)

By participating in the Course-Materials Bug-Bounty Program (CMBBP), you can earn extra marks in the course. If you are interested in obtaining extra marks, then read the following document on the CMBBP:

The following document lists all bugs reported to date as part of the CMBBP:

Feedback on Course/Teaching

Feedback on the course and teaching is always most welcome! The instructor will never hold any of your comments against you, but please be constructive in your criticism.

Several options are available for providing feedback. You can provide feedback through:

Important Dates

The following important dates should be noted, which include submission deadlines for (regular and programming) assignments and the project (proposal and software):

Required Texts/Materials

The required texts/materials for the course are listed on the course outline handout. All of these items are available from the University Bookstore.

A copy of the lecture slides are available from here.


Since there is no one correct solution to the programming assignment problems that involve writing a program, solutions to such problems are not posted. If you would like to see the instructor's solution to any of the problems on the programming assignments, the instructor would be more than willing to show his solution to you (and explain how it works). He will not provide a copy of his code, however.

The following documents are available regarding programming-assignment grading and partial solutions:


The project is a component of the course only for students who are registered in the graduate version of the course. Students who are registered in the undergraduate version of the course do not do a project!

The following handouts are available for the project:

Final Exam

Information about the final exam will be made available here later in the term. Stay tuned.

Miscellaneous Handouts and Documents

The following handouts were associated with the first lecture in the course:

Signal Processing Library (SPL)

The following documents relate to the Signal Processing Library (SPL):


Several images, audio signals, and polygon meshes are provided below for use in the course. Some of these are needed for assignments, while others are not used in any assignments, but may be useful for the course project.

The following images are available:

The following audio signals are available:

The following polygon meshes are available: