Theory and application of advanced programming methods and tools. Recent issues as well as those of an enduring nature will be discussed. Topics may include the Fourier transform; wavelets; functional programming; genetic algorithms, simulated annealing and neural networks; parallel and distributed programming; images and graphics user interface programming.


  • Website has been converted to inactive mode. (some links should no longer be expected to work)


  • Lectures begin on Tuesday, September 6th, 2022
  • Last day to drop is Tuesday, September 15th, 2022
  • Lectures end and last day to withdraw is Wednesday, December 7th, 2022
  • CPSC 501 L01 MonWedFri 13:00-13:50


  • Tutorials will begin on Monday/Tuesday September 12/13th, 2022
  • CPSC 501 T01 MonWed 15:00-15:50
  • CPSC 501 T02 MonWed 16:00-16:50
  • CPSC 501 T03 TueThu 10:00-10:50
  • CPSC 501 T04 TueThu 17:00-17:50
  • CPSC 501 T05 MonWed 09:00-09:50
  • CPSC 501 T06 MonWed 17:00-17:50

Office Hours

  • MonWed 14:00-14:50 or setup via email (info in D2L Content)

Important Dates

  • Term Break: Sunday-Saturday, November 6-12th, 2022. (no lectures or tutorials)
  • University Closed for Truth and Reconciliation Day Friday, September 30th, 2022. (no L01)
  • University Closed for Thanksgiving Day Monday, October 10th, 2022. (no L01, no T01/T02/T05/T06, office hours)
  • University Closed for Remembrance Day Friday, November 11th, 2022. (during term break)
  • Midterm Exam: Friday, November 4th, 2022. [in-class activity]
  • Final Exam: Wednesday, December 14th, 2022. [registrar schedule during exam block]


  • Join Code: XXXXXX
  • Use your UofC Account to access Tophat, not a computer science, former institution, or prior high school account.

Textbook Resources

  • Git - Book
    • Author: Scott Chacon, Ben Straub
    • Optional: Reference for Git.
    • Open Text Webpage Here
  • The Docker Handbook
    • Author: Farhan Hasin Chowdhury
    • Optional: Reference for Docker.
    • Open Text Webpage Here
  • The Docker Guide
    • Optional: Reference for Docker.
    • Open Webpage Here
  • Refactoring: Improving the Design of Existing Code 1e
    • Author: Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
    • ISBN: 9780201485677
    • Optional: for those that want hard copy resource.
    • 1e reccommended but is not longer inprint. Number of people have archived the pdf online (github or university hosted pages) to maintain a Java reference.
    • 2e not reccommended. Javascript language is used so this may be less clear to some.
    • Alternate resource is also in javascript but recommended reference if you don't get text.
    • Technically language version doesn't matter for conceptual idea.
    • Other refactoring references
    • Other refactoring references
  • Java Reflection in Action
    • Author: Ira R. Forman, Nate Forman
    • ISBN: 9781932394184
    • Optional: Will be referenced but pdf available for all below.
    • Out of print but archived here
  • Python Data Science Handbook [open]
    • Author: Jake VanderPlas
    • ISBN: 9781491912058
    • Optional: Reference for Data Science skillset for machine learning.
    • Open Text Webpage Here
  • Tensorflow Book
    • Author: Nishant Shukla
    • Optional: Reference for Tensorflow.
    • Open Text Webpage Here

The due dates for the projects, assignments, and exercises can be found in the Assignments sections of this page.

Support Materials


  • Java 17 (labs -> 17.0.4)
    • Labs are standardized on Java 17 so this is the required version. Higher versions of Java are only allowed if you receive TA approval that they are prepared to grade a higher version.
    • Download Oracle JDK 18: Oracle has wanted you to sign in, in the past, but at the moment this seems to work without it Here
    • Download Open JDK 18 Here
    • IntelliJ IDEA Here (Should be able to use ucalgary email to access Professional version as student)
    • Apache Netbeans IDE Here
    • Eclipse IDE Here
    • Visual Studio Code IDE Here
  • Python 3 (labs -> 3.10.6)
    • Python 3.10.6 or newest version Python 3.10.6 can be found Here
    • Pycharm IDE Here (Should be able to use ucalgary email to access Professional version as student)
    • Eclipse IDE Here
    • Visual Studio Code IDE Here
    • Optional: Google Colab: interactive notebooks for python here
    • Optional: Jupyter IPython Notebooks (can run these in Pycharm or otherwise install on your own system) Here
    • Optional: Jupyter IPython Notebooks through Syzygy Here


  • Guidelines for Academic Misconduct
  • Guidelines
  • Assignment 1
    • Due Date: Friday, October 8th, 2022 23:59 (11:59 PM)
    • Topics: Advanced Software Development
    • Assignment Description
  • Assignment 2
    • Due Date: Monday, November 14th, 2022 23:59 (11:59 PM)
    • Topics: Machine Learning
    • Assignment Description
  • Assignment 3
    • Due Date: Friday, November 25th, 2022 23:59 (11:59 PM)
    • Topics: Reflection/Serialization
    • Assignment Description
  • Assignment 4
    • Due Date: Wednesday, December 9th, 2022 23:59 (11:59 PM)
    • Topics: Serialization, JSON, Reflection, Sockets, XML
    • Assignment Description