CSCI 511 Software
Engineering.
The objective of the course is two-fold: i) to discuss the theory,
principles and practice of software engineering and ii) to provide
students with the software engineering basis that they will need for
the other courses of the program. Different software process models are
presented, including waterfall, incremental and spiral. The
requirements, specification, design, implementation, integration and
maintenance phases of the software production cycle are examined,
pointing out difficulties and recommended practices. With the use of
references to real cases and the analysis of a major case study
theoretical knowledge is consolidated and transferred to the applied
field.
CSCI 512 Data Structures
and Algorithms.
The course reviews basic notions on data structures and algorithms one
is assumed to have been taught at the undergraduate level and then
further continues the discussion on these topics in order to meet the
depth expected at the graduate level. As far as data structures are
concerned, the course starts with a review of array and dynamic memory
implementations of FIFO and LIFO structures and continues to discuss
more complex data structures such as AVL trees, B trees, sparse
representation solutions and so on. When it comes to algorithms, the
course discusses sorting, searching, searching in text, complexity,
algorithm design as well as NP-complete problems and their practical
applications.
CSCI 513 Distributed
Operating Systems.
Basic notions of uni-processor operating systems are reviewed before
moving on to multiprocessor and multi-computer operating systems as
well as on to distributed systems. Topics covered include basic
definitions, communication, processes, naming, synchronization,
consistency and replication, fault tolerance, security, and distributed
file systems, as well as specific implementations.
CSCI 514 Multimedia
Systems. The course aims to introduce students to the coding and
processing aspects of multimedia systems. The course starts by
presenting the enabling technologies for multimedia and continues to
address issues such as audio technology, graphics and images, video
technology, multimedia compression and optical storage media, not
leaving out more advanced topics such as content analysis and semantic
annotation.
CSCI 521 Databases.
Both introductory and advanced issues in database theory are discussed.
Topics covered include various data models such as entity-relationship,
relational, object oriented and XML, relational algebra, single- and
multi-dimensional indexing, storage and operational disaster recovery
and concurrency control. References to multimedia databases and data
warehouses are also made.
CSCI 522 Object Oriented
and Network Programming.
The course builds upon students' previously acquired programming skills
in order to introduce concepts of advanced programming. These include
sockets, RMI, distributed computing, multithreading, advanced file
management and I/O, multithreading and interfacing to databases. The
programming environment utilized will be Java or an equivalent.
CSCI 523 Artificial
Intelligence.
The objective of this course is to introduce students to the field of
AI. Once initial definitions have been provided the course will
progress to cover a variety of AI components. Specific topics include
intelligent agents, blind searching, heuristics and heuristic
algorithms, adversarial searching and game programming, reasoning,
knowledge representation, uncertainty and learning. The course is not
limited to the theory of AI; students develop working models of their
own as part of the course requirements.
*The University reserves the right to make changes to the content of
courses.