CPSC 501: Advanced Programming Techniques (Fall 2022)
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
- Website has been converted to inactive mode. (some links should no longer be expected to work)
Lectures
- 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
- 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]
TopHat
- 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 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
- 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
- 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
- Introduction pdf
- IPython (Self-Study)pdf
- Numpy pdf
- Pandas pdf
- Matplotlib pdf
- Machine Learning
- Introduction pdf
- Scikit pdf
- Neural Networks pdf
- Tensorflow pdf
- TF Applied pdf
- TF2.ipynb basics (Google Collab)
- TF API (Self-Study)pdf
- TF Linear Regression pdf
- TF2LinRegDS.ipynb (Notebook)
- TF2LinRegKeras.ipynb (Notebook)
- birth_life_2010.txt (data file)
- TF Neural Networks pdf
- TF2MINST.ipynb (Notebook)
- TF CNN pdf
- Dangers pdf
- Supplemental
- Machine Learning (Google)
- Route Recognization (NFL)
- Craiyon
- Midjourney
- DALL-E 2
- Midterm Exam: Friday, November 4th, 2022. [in-class activity]
- Midterm Prep
- Topic 4: Reflection
- Topic 6: Optimization
- Topic 7: Digital Signal Processing
- Topic 6: Optimization (Flex)
- Final Exam: Wednesday, December 14th, 2022. [registrar schedule during exam block]
Technology
- 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
Assignments
- 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