resources

CISC 810 - Fundamentals of Computational Science


Index to lecture notes

CISC 810 notes will appear here as the course is being taught.

Lecture 1: Course outline, supplemental information, von Neumann architecture, buses, memory design

Lecture 2: Flynn's taxonomy, instruction level parallelism, pipelining, CISC vs RISC, VLIW, SMT, multi-core technologies

Lecture 3: Interrupts & exceptions, the memory hierarchy, cache designs and mapping, 32bit versus 64bit memory architectures

Lecture 4: Binary representations, base n arithmetic, two's complement, fixed point representations, floating point representations, IEEE 754

Lecture 5: More on floating point: special values, exceptions. Sources of error, rounding, roundoff error and techniques to reduce the impact

Lecture 6: Brief introduction to assembly language, opcodes, instruction format, benefits of using assembly

Lecture 7: Programming paradigms and high-level languages

Lecture 8: Fundamental concerns about software productivity, Unix shells

Lecture 9: Unix environment variables, regular expressions & version control

Lecture 10: Automated build environments: make

Lecture 11: Introduction to C/FORTRAN programming, style, variable types, basic control flow

Lecture 12: More C/FORTRAN programming: operator precedence, logic, I/O, C functions versus FORTRAN subroutines, pointers, dynamic memory allocation

Lecture 13: Debugging, symbolic debuggers, breakpoints, watchpoints, using gdb, logging, Agans' Rules

Lecture 14: Optimization, algorithms, memory layout, optimizing compilers and loop optimizations

Lecture 15: Software engineering, unit testing, best practices, views on large software developments

Lecture 16: Introduction to MATLAB, basic usage, m-files, graphics

Lecture 17: Introduction to Maple, basic usage, expanding, factor, integration, differentiation

Lecture 18: More on object oriented programming, motivation, definitions, examples in Java

Lecture 19: Data structures, linked lists, stacks, queues

Lecture 20: Data structures II, binary trees, hash tables, graphs

Lecture 21: Overview of the steps in simulation, design, execution and analysis with climate modelling as a case study

Lecture 22: Numerical integration, Newton-Cotes formulae, Romberg integration, Gauss-Legendre quadrature, libraries and packages

Lecture 23: Numerical solutions to ODEs: explicit vs implicit schemes, Runge-Kutta, multistep methods, libraries and packages

Lecture 24: Numerical solutions to PDEs: FTCS, Lax method, example of spectral methods

Lecture 25: Introduction to sorting: computational complexity, Bubble sort, Heapsort, Quicksort, Flashsort

Lecture 26: Random number generators: cryptographics issues, testing randomness, algorithms: LCGs to Mersenne Twister

Lecture 27: Monte Carlo methods: integration, sub-random sequences, simulated annealing

Lecture 28: Introduction to visualization: preattentive processing, colour maps, representation of low and high frequency data, Opendx

Lecture 29: Examples in Opendx, isosurface and volume rendering, making movies using scripting

back