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