CISC 810 - Fundamentals of Computational Science
PREREQUISITE: Permission of the Instructor for students not 
registered in the CSE Master's specialization.
                                                                                
The purpose of this course is to provide a solid foundation in 
computational methods for students interested in computational science and 
engineering, and is a preparatory course for QCSE 811 "High Performance 
Computing". Methods and tools will be provided to enable progress on 
numerical projects within the students own discipline. Topics to be 
covered include, computer architecture, data structures, principles of 
software "carpentry", code profiling and basic optimization, visualization 
and simulation, numerical mathematics. 
                                                                                
Syllabus:
                                                                                
1. Fundamentals of computer architecture, Flynn's Taxonomy
                                                                                
2. Binary representations, floating point arithmetic, including 
extended precision libraries
3. Fundamentals of data structures and comparison of 
languages/paradigms
4. Scripting languages & symbolic computation packages (e.g.
Maple)
                                                                                
5. Programming & software "carpentry" (engineering), including
symbolic debuggers, optimization, efficient UNIX shell scripting
                                                                            
6. Introduction to simulation and numerical techniques, including 
linear algebra and Monte-Carlo methods
7. Visualization of numerical data (Opendx, VTK)