Skip to content

1. ECE486 and ECE586 — Multiresolution Signal and Geometry Processing 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.

1.1 What is the Course About?

The course consists of three main components:

  1. multirate signal processing, wavelet systems, and applications (signal processing involving multiple sampling rates)
  2. subdivision surfaces, subdivision wavelets, and applications (multirate signal processing generalized to geometric objects)
  3. C++ programming (classes, templates, generic programming), including industry-standard libraries such as the Open Graphics Library (OpenGL) and Computational Geometry Algorithms Library (CGAL)

The material covered in this course has applications in many diverse areas, including (but not limited to):

  • signal processing
  • communication systems
  • biomedical systems
  • computer graphics, animation, gaming, geometric modelling
  • audio/image/video processing
  • data compression

Subdivision surfaces are essentially multirate signal processing concepts generalized to geometric objects. If you want some basic idea of what subdivision surfaces are and how they can be used, the videos below might prove enlightening.


1.2 Demonstrations

Are you wondering what application programs you will be able to write after having taken the course? This section shows some demonstrations of programs that students need to write for assignments in the course.

The video below gives a brief demonstration of the triMeshView application program.

The video below gives a brief demonstration of the simple3 application program. Note: The functionality of the "r" and "R" keys may be reversed in this video from what is described on the assignment handout.

1.3 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.

1.4 Instructor

Michael Adams
E-Mail: mdadams (append "@ece.uvic.ca" for the complete address)
Office: EOW 311

For more sordid details about the instructor look here.

1.5 Office Hours

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

1.6 Tutorial/Marker Teaching Assistants (TAs)

The teaching assistants (TAs) for the course will be posted as soon as they are known.

1.7 Course Outline

The course outline is distributed in hardcopy form during the first lecture. The course outline is also available via the following link:

1.8 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:

1.9 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:

  • if applicable, your class representative (who will be happy to pass on any concerns/complaints to me)
  • normal e-mail
  • in person
  • anonymous e-mail (e.g., through a Hotmail or Yahoo account)
  • Rate My Professors web site (follow this link for my most recent ratings)

The following download is available for the course feedback questionnaire:

1.10 Important Dates

1.10.1 Submission Deadlines for Video-Lecture Feedback Questionnaire Forms

The submission deadlines for video-lecture feedback questionnaire forms are determined by the tutorial schedule for the course as follows. Each tutorial is associated with a particular unit in the video lectures. Each student is responsible for watching all of the video lectures in a particular unit prior to the tutorial that is associated with that unit. Furthermore, each student is required to complete a video-lecture feedback questionnaire for each of the individual videos in the unit. (Note that a separate form is required for each video in the unit. So, if a unit consists of N videos, the student needs to submit N forms.) The completed questionnaires must be submitted to the tutorial TA at the start of the tutorial session (for the tutorial section in which the student is registered). Late video-lecture feedback questionnaire forms will not be accepted and will receive a mark of zero. The rationale for the above submission deadline is to ensure that students are adequately prepared to attempt the programming exercises/assignments associated with a particular tutorial session. The correspondence between tutorial sessions and video-lecture units is as specified in the Tutorial Schedule section.

1.10.2 Submission Deadlines for Programming Assignments P0, P1, P2, P3, and P4

The submission deadline for each of Assignments P0, P1, P2, P3, and P4 is determined by the tutorial schedule for the course as follows. Each of Assignments P0, P1, P2, P3, and P4 is associated with a particular unit in the video lectures, which is in turn associated with a particular tutorial session. Each of these assignments must be submitted to GitHub Classroom prior to the start of the tutorial session following the one in which the unit associated with the assignment is covered. So, for example, Assignment P0 is associated with the Software Development Tools Unit, which is associated with Tutorial 1. Therefore, Assignment P0 must be submitted prior to the start of Tutorial 2 (i.e., the next tutorial after Tutorial 1). Note that the submission deadline is associated with the tutorial session for the tutorial section in which the student is registered. As explained on the Programming-Assignment General Information handout, programming assignments that are either late or fail to pass the validation step of the assignment_precheck command will not be graded and will receive a mark of zero. (All of the programming assignments other than Assignment P0 are graded. Although Assignment P0 is not graded, it is a requirement of the course that students complete this assignment.)

1.10.3 Tutorial Schedule

The tutorial schedule for the course is as follows:

  • Fri May 5
    • Tutorial 1, which covers Unit 1 (Software Development Tools)
  • Fri May 12
    • Tutorial 2, which covers Unit 2 (Basics)
  • Fri May 19
    • Tutorial 3, which covers Unit 3 (Classes)
  • Fri May 26
    • Tutorial 4, which covers Unit 4 (Templates)
  • Fri Jun 2
    • Tutorial 5, which covers Unit 5 (Standard Library)
  • Fri Jun 9
    • Tutorial 6, which covers Unit 6 (Signal Processing Library [SPL])
  • Fri Jun 16
    • Tutorial 7, which covers Unit 7 (Computational Geometry Algorithms Library [CGAL])
  • Fri Jun 23
    • Tutorial 8, which covers Unit 8 (Open Graphics Library [OpenGL])
    • OpenGL video feedback questionnaires not due in this tutorial, due to extension of deadline
  • Fri Jul 7
    • Tutorial 9, which is for extra help
    • OpenGL video feedback questionnaires due in this tutorial

1.10.4 Other Dates (Excluding Those Mentioned Above)

Other important dates excluding those already mentioned above are as follows:

  • Assignment R1:
    • Due Tue May 23 at 17:00 in the dropbox.
  • Assignment R2:
    • Due Tue May 30 at 17:00 in the dropbox.
  • Assignment P5:
    • Due Fri Jun 30 at 15:00 (for all tutorial sections) in the student's GitHub Classroom Git repository.
  • Project Proposal (ECE586 Only):
    • Due Wed Jul 5 at 12:00 noon to be submitted by email to the course instructor.
  • Assignment R3:
    • Due Fri Jul 7 at 17:00 in the dropbox.
  • Assignment R4:
    • Due Fri Jul 7 at 17:00 in the dropbox.
  • Assignment P6:
    • Due Fri Jul 21 at 16:00 (for all tutorial sections) in the student's GitHub Classroom Git repository.
  • Bonus lecture time slots:
    • first lecture time slot after (non-bonus) course material is completed (approximately sometime in late June) to third last lecture time slot (inclusive).
    • These lecture time slots are reserved for the bonus (i.e., extra credit) material that I mentioned at the start of the course. These lectures are not officially part of the course. Attendance is optional and students are not responsible for any material from these bonus lectures.
  • Assignment Infinity (Course Feedback Questionnaire):
    • Due Tuesday July 25 at 14:30 either as a scanned document by email or a hardcopy document in the ECE486/586 dropbox
    • Note: This assignment is for extra credit and is optional.
  • Course feedback session (an open discussion on ideas for improving the course):
    • second last lecture time slot.
  • Discussion of final exam and completion of official UVic course evaluations:
    • last lecture time slot.
  • Project Software (ECE586 Only):
      Due in the GitHub Classroom repository for the project before the start of the ECE486 final exam. (See the final exam schedule for the specific date/time for the ECE486 final exam.)

1.11 Required Texts/Materials

The required texts/materials for the course are listed on the course outline handout, and consist of a textbook, textbook lecture slides, and C++ lecture slides. All of these items are available from the University Bookstore.

The following handouts are related to the textbook and lecture slides:

The textbook used in the course has a web site, which can be found at:

The preceding web site contains resources that are potentially of interest to students in this course. In particular, the web site provides several versions of the textbook (including the most recent version) as e-books in PDF format. Also, the web site has a Google-Groups mailing list that students can join in order to receive announcements regarding new editions of the textbook. All students are encouraged to join the Google Group for the textbook.

The set of lecture slides for C++ used in the course has a web site, which can be found at:

1.12 Optional Texts/Materials

The optional textbook for this course is the following:

  • B. Stroustrup The C++ Programming Language (4th Edition), Addison-Wesley, 4th Edition, 2013; ISBN 978-0-321-56384-2. Link to book on Amazon.

It is critical to obtain the fourth edition as earlier editions do not have coverage of C++11 features.

1.13 Video Lectures

Some of the core course content is delivered via video lecture. The video-lecture material is partitioned into several major units (e.g., software tools, basics, classes, templates, etc.). During each tutorial the material for one or more units will be covered through exercises and work on assignments.

The following handouts are available for the video lectures:

1.14 Regular Assignments (i.e., "R" Series Assignments)

Note: The "R" series of assignments (e.g., R1, R2, R3, and so on) are regular (i.e., non-programming) assignments, while the "P" series of assignments (e.g., P1, P2, P3, and so on) are programming assignments.

Marking Issues. If you have any concerns about the marking of a regular assignment, please directly contact the TA who marked the assignment. For a list of which TAs marked which regular assignments, please refer to the following document:

The contact information for TAs can be found in the Tutorial/Marker Teaching Assistants section.

Handouts. The following downloads are available for regular assignments:

Solutions. The following documents are available regarding regular assignment grading and solutions:

1.15 Programming Exercises

The programming exercises in this section are intended to provide a means to test your understanding of the programming-related material covered in the course. It is highly recommended that you work through these exercises as you cover the corresponding material from the video lectures. By doing this, you will greatly strengthen your understanding of the material in the video lectures, which will greatly reduce the amount of pain and suffering required to complete the programming assignments in the course. Although you are not required to submit your solutions to these programming exercises, you are responsible for completing them. Material from these exercises is considered fair game for questions on the final exam.

The following documents are available for the programming exercises:

1.16 Programming Assignments (i.e., "P" Series Assignments)

Marking Issues. If you have any concerns about the marking of a programming assignment, please directly contact the TA who marked the assignment. For a list of which TAs marked which programming assignments, please refer to the following document:

The contact information for TAs can be found in the Tutorial/Marker Teaching Assistants section.

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

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.

Handouts and Related Information. The following downloads are available for programming assignments:

1.17 Project

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

The following handouts are available for the project:

The projects that involve implementing a subdivision method in CGAL, the following document might be helpful:

1.18 Final Exam

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

1.19 Miscellaneous Handouts and Documents

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

The following documents are relevant to some of the programming assignments and tutorial exercises:

1.20 Signal Processing Library (SPL)

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

1.21 Datasets

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:

1.22 Additional References

1.22.1 C++ Programming Language

  1. P. Deitel and H. Deitel, C++ How to Program, Eighth Edition, Prentice Hall, 2011. Link to e-book accessible via UVic Library. Link to e-book accessible from UVic Network only.
  2. M. Gregoire, N. A. Solter, S. J. Kleper, Professional C++, Second Edition, Wrox, 2011. Link to e-book accessible via UVic Library. Link to e-book accessible from UVic Network only.
  3. S. Prata. C++ Primer Plus, Sixth Edition, Addison-Wesley Professional, 2011. Link to e-book accessible from UVic Library. Link to e-book accessible from UVic Network only.
  4. The cplusplus.com website.
  5. C. Morano. An Introduction to the Standard Template Library (STL), Part 1.
  6. C. Morano. An Introduction to the Standard Template Library (STL), Part 2.
  7. V. A. Punathambekar, "How to interpret complex C/C++ declarations" from The Code Project, 2004. Cached copy of document.
  8. "Why is using namespace::std bad?" from Stackoverflow, 2013. Cached copy of document.
  9. Geosoft C++ Programming Style Guidelines.
  10. C declaration parser
  11. D. Saks, Placing const in Declarations, Embedded Systems Programming, 1998. Cached copy (in PDF format).
  12. D. Saks, What const Really Means, Embedded Systems Programming, 1998. Cached copy (in PDF format).
  13. D. Saks, const T vs. T const, Embedded Systems Programming, 1999. Cached copy (in PDF format).
  14. D. Saks, Top-Level cv-Qualifiers in Function Parameters, Embedded Systems Programming, 2000. Cached copy (in PDF format).

1.22.2 Computational Geometry Algorithms Library (CGAL)

  1. CGAL Home Page
  2. CGAL User and Reference Manual: All Parts, Release 3.6.1, 2010-06-29.
  3. CGAL User and Reference Manual: All Parts, Release 3.7, 2010-10-14.
  4. A Tutorial on CGAL Polyhedron for Subdivision Algorithms.

1.22.3 Open Graphics Library (OpenGL)

  1. OpenGL Reference Pages in the OpenGL Software Development Kit (from the OpenGL web site).
  2. OpenGL Software Development Kit (from the OpenGL web site).
  3. R. S. Wright, Jr., N. Haemel, G. Sellers, and B. Lipchak, OpenGL SuperBible: Comprehensive Tutorial and Reference, Fifth Edition, Addison-Wesley, 2010. Link to e-book accessible from UVic Library. Link to e-book accessible from UVic Network only.
  4. OpenGL Home Page
  5. The OpenGL Graphics System, A Specification, Version 4.1
  6. The OpenGL Utility Toolkit (GLUT) Programming Interface, Version 3
  7. OpenGL 4.1 API Quick Reference Card.
  8. D. Shreiner, E. Angel, and V. Shreiner. An Interactive Introduction To OpenGL Programming, SIGGRAPH, 2004.
  9. OpenGL Transformation Demonstrations (from here). matrixModelView.zip, matrixModelView.exe, matrixProjection.zip, and matrixProjection.exe

1.22.4 Boost Library

  1. Boost Library Home Page
  2. BOOST Generic Image Processing Library (GIL)

1.22.5 Wavelets

Some good books related to wavelets include:

  1. M. Vetterli and J. Kovacevic, Wavelets and Subband Coding, Prentice Hall, Upper Saddle River, NJ, USA, 1995
  2. S. Mallat, A Wavelet Tour of Signal Processing, Academic Press, San Diego, CA, USA, 1999.
  3. G. Strang and T. Nguyen, Wavelets and Filter Banks, Wellesley-Cambridge Press, Wellesley, MA, USA, 1996.
  4. C. S. Burrus, R. A. Gopinath, and H. Guo, Introduction to Wavelets and Wavelet Transforms: A Primer, Prentice Hall, Upper Saddle River, NJ, USA, 1998.
  5. P. P. Vaidyanathan, Multirate Systems and Filter Banks, Prentice Hall, Upper Saddle River, NJ, USA, 1993.
  6. I. Daubechies, Ten Lectures on Wavelets, SIAM, Philadelphia, PA, USA, 1992.
  7. E. J. Stollnitz, T. D. DeRose, and D. H. Salesin, Wavelets for Computer Graphics, Morgan Kaufmann, San Francisco, CA, USA, 1996.

Some web site related to wavelets include:

1.22.6 Miscellany

Some other potentially useful web sites include: