CSCI-2300 Data Structures and Algorithms or equivalent. Note: the prerequisite listed in the Class Hour Schedule is incorrect.
The main background needed is programming experience and familiarity with data structures and algorithms. Programming will be done primarily in C++. The CORBA Interface Definition Language (IDL) is covered in the textbook and will be discussed in class. It relates closely to the C++ features that support object-oriented programming--classes, encapsulation, inheritance, dynamic polymorphism (using class derivation and virtual functions). If you are unfamiliar with the purpose and use of those features of C++, you will need to learn or review the basic ideas on your own (there are dozens of C++ books that emphasize object-oriented programming). But we will deal with some of the nitty-gritty details in this course as we look at examples using CORBA. One nice aspect of learning IDL is that it presents a simpler view of O-O design issues than does C++ or most any programming language. In any case, although programming distributed computing systems using CORBA is obviously most closely related to the O-O programming paradigm, one major goal of this course is to examine to what extent another paradigm--generic programming, sometimes known also as algorithm-oriented programming--can be used.
So how much knowledge of generic programming principles is assumed? Let's discuss this ....
Familiarity with network hardware or software protocols would be useful to some extent (mainly to better understand what kinds of errors can be encountered when distributing a computation over a network), but it is not essential. (Maybe we'll draw upon the experience of some of the students who do have such background.)