ELEC 486 and ELEC 586 — 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.


Table of Contents

  1. What Is The Course About?
  2. Demonstrations
  3. Accessing Course Materials
  4. Instructor
  5. Office Hours
  6. Tutorial/Marker Teaching Assistants (TAs)
  7. Course Outline
  8. Course-Materials Bug-Bounty Program (CMBBP)
  9. Feedback on Course/Teaching
  10. Important Dates
  11. Required Texts/Materials
  12. Optional Texts/Materials
  13. Video Lectures
  14. Regular Assignments
  15. Programming Exercises
  16. Programming Assignments
  17. Project
  18. Final Exam
  19. Miscellaneous Handouts and Documents
  20. Signal Processing Library (SPL)
  21. Datasets
  22. Additional References

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

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.





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.


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.


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.


Office Hours

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


Tutorial/Marker Teaching Assistants (TAs)

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


Course Outline

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


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:

The following download is available for the course feedback questionnaire:


Important Dates

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.

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

Tutorial Schedule

The tutorial schedule for the course is as follows:

Other Dates (Excluding Those Mentioned Above)

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


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:


Optional Texts/Materials

The optional textbook for this course is the following: It is critical to obtain the fourth edition as earlier editions do not have coverage of C++11 features.

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:


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:


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:


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:


Project

The project is a component of the course only for students who are registered in ELEC 586. Students who are registered in ELEC 486 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:


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: The following documents are relevant to some of the programming assignments and tutorial exercises:

Signal Processing Library (SPL)

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


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:


Additional References

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

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.

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

Boost Library

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

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:

Miscellany

Some other potentially useful web sites include: