ase

Lecture 1 Introduction to Python

An introduction to Python

Lecture 1 Introduction to C++

Simple C++ 11 / 14 /17

Lecture 2 Modern C++

Examples from C++ 11 / 14 /17

Lecture 2 Basic Python

An introduction to the basic python language syntax

Lecture 3 Test Driven Development

Introduction to TDD

Lecture 3 Files and Data

This lectures introduces the concept of file I/O and data processing

Lecture 4 Memory and Pointers in C++

Memory and Pointers

Lecture 4 Introduction to OO in Python

This lecture will introduce Object Oriented concepts and Classes in python

Lecture 5 Introduction to Classes

classes in C++

Lecture 5 Test Driven Development

This lecture will demonstrate the use of Test Driven development and design in python

Lecture 6 Design Patterns

Design Patterns in C++

Lecture 7 Operator Overloading and STL

Operator Overloading and STL

Lecture 8 Introduction to Qt

Introduction to Qt

Lecture 9 Introduction to Modern OpenGL

Three part lecture series introducing Modern OpenGL

Lab 1 Python Setup and Install

Aims The aim of this lab is to help setup and install python and various other tools Using PyEnv for installation of python versions Using Pip to install packages Setup VSCode to edit and run python files Why do I need PyEnv?

Lab 1 The Software build process

Aims The aim of this lab is to introduce the C++ software build process, this will include. Single file software build Using external libraries and package managers (vcpkg) Build Tools (make,cmake) Getting Started We will start this project in a new folder

Lab 2 Functions and Modules

Aims The aim of this lab is to setup a simple python project using the Turtle module and experiment with writing code and functions. By the end of the Lab we should be able to

Lab 2 Test Driven Development

Aims The aim of this lab is to introduce the process of TDD and develop some simple tests. Multi File Build and Project Setup Build Tools (cmake and make test) Using gtest and git Test Driven Design of a Simple RGBA structure Getting Started To start this project we are going to build a typical software project setup.

Lab 3 Test Driven Development

Aims The aim of this lab is to introduce the process of test driven development (TDD) and develop some simple tests, we will use the following steps. Project Setup Test Setup Test Driven Design of a Simple RGBA class using Version control Storing Pixels It is common to store image pixel data using a single unsigned int32_t data type.

Lab 3 An Image Class

Aims The aim of this lab is to continue our exploration of TDD in C++ by developing an Image Class Configure GitHub for labs. Developing a Simple Image Class Writing Images with OpenImageIO Some simple Image Algorithms.

Lab 4 Diffusion Limited Aggregation

Aims The aim of this lab is to continue our exploration of TDD in C++ by developing a simulation of diffusion limited aggregation Introduction to DLA simulations Understand C++ 11 Random number classes #include Creating Image Sequences Using Command Line Arguments Introduction to DLA Diffusion-limited aggregation (DLA) is the process whereby particles undergoing a random walk due to Brownian motion cluster together to form aggregates of such particles.

Lab 5 Introduction to Particle Systems

Aims The aim of this lab is to develop a simple particle system and write data to various file formats. We will then visualize the data using 3rd party tools

Lab 6 NGL Installation

Aims The Aim of this lab is to install NGL and try some demos programs Introduction to NGL Building NGL Building Demo Other Operating Systems Introduction to NGL NGL is the NCCA Graphics Library which has been used for teaching programming and graphics since 2003.

Gnuplot Lab

gnuplot gnuplot is a tool that allows us to very quickly visualise data, it can be very useful for testing program output without having to generate complex graphical interface code, the following labs is going to use gnuplot to help visualise the output of several sample programs.

Blogs and Links

The Clean Code Blog by Robert C. Martin (Uncle Bob) Hacker News The OpenGL Wiki Latency Numbers Every Programmer Should Know

Blogs and Links

The Clean Code Blog by Robert C. Martin (Uncle Bob) Hacker News The OpenGL Wiki Latency Numbers Every Programmer Should Know awesome modern c++

Computational Thinking

What is Computational Thinking? The idea of computational thinking is allow us to look at problems and determine the best way for a computer to solve this (and related problems).

Setup Python for Machine Learning and AI

Introduction In Lab1 we introduced the PyEnv tool to allow us to install various versions of python either locally or globally. In the following examples we will explore how we can setup and install specific ML libraries into a Virtual Environment using the global PyEnv python.

Type Hinting

Type Hints were added to python 3.5 as a way of adding support for linters and 3rd party tools to check code for possible errors. These have no effect of the running of the code and are not mandatory, however they are good software engineering practice and we encourage their use throughout your code.

Type Hints

Aims We will investigate some modern python features and concepts by developing some small programs. Type Hinting Type hints were added to python 3.5 as a way of adding support for linters and 3rd party tools to check code for possible errors.

Assignment Brief

Introduction This assignment is designed to be a continual software development project using Test Driven Design / Development techniques to produce a substantial software artefact. Sample project ideas can be found here https://nccastaff.

Sample Assignment Project Ideas

Sample Assignment Project Ideas