CPSC 501: Advanced Programming Techniques (Winter 2025)
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.
Announcements
- Course material posted on this course website.
- Community Discussion Boards via discord.com (Invite link in D2L Content)
- Assignment/Grading via D2L
Lectures
- Lectures begin on Monday, January, 13th, 2025
- Last day to drop is Thursday, January 23rd, 2025
- Last day to add is Friday, January 24th, 2025
- Lectures end and last day to withdraw is Friday, April 11th, 2025
- CPSC 501 L01 TueThu 14:00-15:15 SS 109
Tutorials
- Tutorials will begin on Monday, January 20th, 2025
- The main goals of the tutorials will be to help you in more deeply understanding the concepts presented in the lectures (providing more examples) and with your assignments.
- CPSC 501 T01 TueThu 08:00-08:50 MS 160 Ali Al-Khaz'Aly ali.alkhazaly@ucalgary.ca
- CPSC 501 T02 TueThu 09:00-09:50 MS 160 Ali Al-Khaz'Aly ali.alkhazaly@ucalgary.ca
- CPSC 501 T03 TueThu 10:00-10:50 MS 160 Ali Al-Khaz'Aly ali.alkhazaly@ucalgary.ca
Office Hours
- MonTue 13:00-13:50 ICT 712 or setup via email (info in D2L Content)
Important Dates
- Term Break: Sunday-Saturday, February 16-22nd, 2025. (no lectures or tutorials)
- University Closed for Alberta Family Day Monday, February 17th, 2025. (No lecture/office hours)
- Midterm Exam: Thursday, February 27th, 2025. [in-class activity]
- Final Exam: XXX, April XXth, 2025. [registrar schedule during exam block]
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 refactoring.com 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 refactoring.guru
- Other refactoring references sourcemaking.com
- 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
The due dates for the projects, assignments, and exercises can be found in the Assignments sections of this page.
Support Materials
- Course Information Sheet (Outline) - Midterm Amended to Nov 4th
- Topic 1: Course Organization pdf
- Topic 2: Advanced Software Development
- Topic 3: Data Science and Machine Learning
- Midterm Exam: Thursday, February 27th, 2025. [in-class activity]
- Midterm Prep
- Topic 4: Reflection
- Topic 6: Optimization
- Topic 7: Digital Signal Processing
- Topic 6: More Optimization (Flex)
- Final Exam: XXX, April XXth, 2025. [registrar schedule during exam block]
Technology
- Java 17 (labs -> 21.0.4)
- Labs are standardized on Java 21 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 21: Oracle has wanted you to sign in, in the past, but at the moment this seems to work without it Here
- Download Open JDK 21 Here
- Visual Studio Code IDE Here
- IntelliJ IDEA Here (Should be able to use ucalgary email to access Ultimate version as student)
- Apache Netbeans IDE Here
- Eclipse IDE Here
- Python 3 (labs -> 3.12.6)
- Python 3.12.8 we are avoid 3.13 for now as it doesn't support tensorflow the same way...yet Here
- Visual Studio Code IDE Here
- Pycharm IDE Here (Should be able to use ucalgary email to access Professional version as student)
- Eclipse 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
Assignments
- Guidelines for Academic Misconduct
- Guidelines
- Assignment 1
- Due Date: Friday, Febraury 14th, 2025 23:59 (11:59 PM)
- Topics: Advanced Software Development
- Assignment Description
- Assignment 2
- Due Date: Friday, March 14th, 2025 23:59 (11:59 PM)
- Topics: Machine Learning
- Assignment Description
- Assignment 3
- Due Date: Friday, March 28th, 2025 23:59 (11:59 PM)
- Topics: Reflection/Serialization
- Assignment Description
- Assignment 4
- Due Date: Friday, April 11th, 2025 23:59 (11:59 PM)
- Topics: Serialization, JSON, Reflection, Sockets, XML
- Assignment Description