Theory and application of advanced programming methods and tools.

Announcements

  • Website has been converted to inactive mode. (some links should no longer be expected to work)
  • More recent offering can be found here.

Lectures

  • Lectures begin on Wednesday, September 9th, 2020
  • Last day to drop is Friday, September 18th, 2020
  • Lectures end and last day to withdraw is Wednesday, December 9th, 2020
  • CPSC 501 L01 Asychronous (lecture recordings hosted in D2L Content via Yuja)

Tutorials

  • Tutorials will begin on Monday/Tuesday September 14th, 2020
  • Zoom through D2L
  • CPSC 501 T01 MW 15:00 - 15:50
  • CPSC 501 T02 MW 16:00 - 16:50
  • CPSC 501 T03 TR 10:00 - 10:50
  • CPSC 501 T04 TR 17:00 - 17:50
  • CPSC 501 T05 MW 09:00 - 09:50

Office Hours

  • MW 11:00-12:50 or setup via email (info in D2L Content)

Important Dates

  • University Closed for Thanksgiving Day Monday, October 12th, 2020.
  • University Closed for Remembrance Day Wednesday, November 11th, 2020.
  • Term Break (no classes): Sunday-Saturday, November 8-14th, 2020.
  • Midterm Exam: Friday, November 6th, 2020.
  • Final Exam: Saturday, December 12, 2020 8:30-10:45 AM. (135 minutes)

Textbook Resources

  • Refactoring: Improving the Design of Existing Code
    • 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
    • Optional: Will be referenced but pdf available for all below.
    • Out of print but archived here

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

Support Materials

  • Course Information Sheet (Outline)
  • Topic 1: Course Organization
  • Topic 2: Refactoring
    • Introduction
    • Version Control
    • SVN
    • GIT
    • Compare
    • JUnit
    • CI/CD
    • Refactoring
    • Example
  • Topic 3: Reflection slides
    • Introduction
    • Java
  • Midterm Exam: Friday, November 6th, 2020.
  • Topic 3: Reflection slides
    • Serialization
    • Proxies
    • Aspects
  • Topic 4: Optimization slides
    • Introduction
    • Code Tuning: Logic
    • Code Tuning: Loops
    • Code Tuning: More
    • Code Tuning: Assembly
    • Java/li>
  • Topic 5: Digital Signal Processing slides
    • Introduction
    • Spectral Analysis
    • Convolution
  • Topic 6: AI Methods slides
    • Introduction
    • Neural Networks
    • TensorFlow (TF)
    • TF Applied
    • TF API
    • TF Linear Regression
    • TF Neural Networks
    • Convolution Neural Networks
    • Dangers
    • Supplemental
      • Machine Learning (Google)
      • AI Snake Oil (Princeton)
      • Genderify Failure (Aukland)
      • Algorithmic Discrimination (MIT)
      • Decolonializing AI (Preprint)
      • Route Recognization (NFL)
  • Final Exam: Saturday, December 12, 2020 8:30-10:45 AM. (135 minutes)

Technology

  • Java 8 (labs -> 1.8.0 u161) [refactoring/reflecion/optimization]
    • Downloads
    • Oracle wants you to sign in to download but this seems to work as a bypass
    • Java 8 code will often compile and run for newer Java jdk/jre versions (ex. Java 11) but labs are still standardixed on Java 8 so this is the required version.
    • Apache Netbeans IDE
    • Eclipse IDE
    • IntelliJ IDEA
  • C++ [optimization material]
  • Python 3 (labs -> 3.6.8) [AI]
    • Python 3.8.5 is most recent and can be found here for home use
    • Install with 'customize' 'environment variable' option.
    • Check installed version with python -V and python3 -V commands in shell.
    • Optional: Jupyter Notebooks through Syzygy
    • Optional: Google Collab: interactive notebooks for python
    • Optional: Pycharm a IDE for python

Assignments

  • Academic misconduct includes, but is not limited to, plagiarism, cheating, tampering or attempts to tamper with examination scripts, class work, grades and/or class records; failure to abide by directions by an instructor regarding the individuality of work handed in; the acquisition, attempted acquisition, possession, and/or distribution of examination materials or information not authorized by the instructor; the impersonation of another student in an examination or other class assignment; the falsification or fabrication of clinical or laboratory reports; the non-authorized tape recording of lectures. Please refer to Sec. K.5 in the University Calendar for complete information.
    If you are involved in an academic misconduct investigation, you will be contacted by the Department of Computer Science to schedule a meeting to discuss the case. Please do not contact your instructor or teaching assistant.

  • Guidelines for Avoiding Plagiarism
  • Assignment 1
    • Due Date: Friday, October 9th, 2020 23:59 (11:59 PM)
    • Topics: Refactoring
    • Assignment Description
  • Assignment 2
    • Due Date: Friday, October 30th, 2020 23:59 (11:59 PM)
    • Topics: Reflection, Introspection, Dynamic Loading
    • Assignment Description
  • Assignment 3
    • Due Date: Friday, November 27th, 2020 23:59 (11:59 PM)
    • Topics: Serialization, JSON, Reflection, Sockets, XML
    • Assignment Description
  • Assignment 4
    • Due Date: Wednesday, December 9th, 2020 23:59 (11:59 PM)
    • Topics: AI, Machine Learing, Neural Networks, TensorFlow
    • Assignment Description