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