At the beginning of February, Oxford University revealed details of a new BA degree in Computer Science and Philosophy. Its rationale for the course is based on a broad focus that the two disciplines share; representation of information and rational inference, common interests in algorithms, cognition, intelligence, language, models, proof and verification.
It’s a bold and interesting venture and one of the predicates is that some of the greatest thinkers of the past dreamed of automating reasoning and what this might lead to. Today computers are actually delivering this, hence the melding of the two disciplines.
In the first year, students are taught Haskell, because its value as a ‘purely functional’ language lies in making it simpler to reason mathematically about programs. This is followed by Oberon and Java training as well as other languages.
I called the university to find out if parallel programming was part of the course and it confirmed that concurrent programming is offered to all BA and MSc students. Within the context of the computing and philosophy course “concurrency looks at more abstract parallel systems (and has some interesting links with philosophy).” Sounds interesting.
This got me thinking about the courses already out there on parallel programming so I had a quick trawl to see what I could come up with it. The University of Cambridge offers three hour sessions that provide an overview of using parallelism, covering both shared memory and distributed memory designs.
A bit further north in the blustery city of Edinburgh, the university’s School of Informatics offers a raft of courses ranging from practical exercises to tutorials on Pthreads.
And a bit more 21st century, the Google Code University has a list of interesting looking courses but, as is to be expected, many are in the States. That said, there are some useful videos, tools and resources.
Another useful series of videos at FreeVideoLectures covers various aspects of parallel programming in C, C++, and Fortran on multicore and multiprocessor systems.
Intel also provides a deep well of information on parallel programming through its online Parallel Programming Community. There’s also the extremely useful Parallel Programming Talk which to date has produced 100 videos each on a different aspect of parallel programming, using all sorts of languages and covering many different contexts.
I guess Oxford University’s course vindicates the importance of computing, implicitly acknowledging the central role of parallel programming in moving computer science forward. I’m just keenly awaiting the development of a parallel program dedicated to the philosophical pursuit of rational inference.
Fusing the mighty processing power of today’s multicore CPUs with rational inference parallelised software dedicated to solving the issues of consciousness proposed by quantum theory might just conclude that we and this world don’t really exist. Now that would be fun.