This course is taught by the International Digital Laboratory, WMG. CSC taught-MSc students are entitled to take these for credit.
Comment from student feedback
"This was an excellent module. Very useful training in the fundamentals of computer science - was exactly what I wanted. Excellent coverage of lots of topics. Also great opportunity to work on C++ programming, as CY901 only allows C. The fluid dynamics model in the slides was also interesting!"
Academic Year 2016-17 weeks 4 - 10 (starting Monday 24th October 2016)
Monday: 10:00-12:00 CS CS0.07
Wednesday: 10.00-12.00 Zeeman Building A0.01
The module provides students with a coherent introduction to uni- and shared memory multi-processor data structures with a strong focus on practical scientific computing algorithms and parallel computing. The primary focus of this module will be to educate students on the primary building blocks required to solve problems using modern desktop machines composed of uniprocessors or multicore/multiprocessors.
Teaching and learning methods include lectures and reading material as well as weekly practical computer laboratory sessions.
By the end of the module the student should be able to:
Understand and develop a variety of techniques for designing algorithms both on uni- and multi-processor technology
Design a variety of data structures and algorithms and should be able to use them appropriately to solve problems in scientific computing
Understand some fundamental algorithms used in scientific computing and solve computational problems using these algorithms
Develop new or re-use already existing efficient algorithms to solve problems
Comprehend algorithmic complexity and be able to make educated choices when problem solving
Comprehend the importance of parallelism on modern desktop PCs and understand the pitfalls when designing algorithms for such machines
Support for this course is provided by a web based bulletin board. Please do not email the lecturer directly with questions and requests for help, but submit them to this forum so that everyone can see them (and answer them) and so that we have an archive of questions raised. All submissions to the bulletin board are also emailed to the lecturer so he will see them all.
Part 1 - Practical Uniprocessor Algorithms and Data Structures
- Sorting and searching
- Data structures
- Trees and Heaps
- Complexity and computability (slightly theoretical with practical examples)
- Advanced Algorithmic methods
Part 2 - Practical Multiprocessor Algorithms and Data Structures for Shared Memory Multiprocessors
- Parallel algorithms
- Practical parallel data structures
- Advanced methods
Introduction to Algorithms
T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein.
MIT Press; 2nd edition, 2001 (3rd edition available from 1 Sep 2009)
Algorithmics: The Spirit of Computing
D. Harel, Y. Feldman
Addison Wesley; 3rd edition, 2004
The Art of Multiprocessor Programming
M. Herlihy, N. Shavit
Morgan Kaufmann, 2008