Western University Computer ScienceWestern Science

    Grad Course Descriptions

     
    CS9511: Game Engine Development
    Instructor: Mark Daley

    Course Description:
    Before it is anything else, a video game is a piece of software. Consequently, programming lies at the heart of game development. Programming a video game, however, raises several interesting challenges not found in developing traditional software. Programming a game requires integration of sophisticated concepts and software technologies from computer graphics, artificial intelligence, networking, and other disciplines into a highly usable, highly interactive package with serious real-time performance constraints. Increasingly, game programming is split into two separate and important tasks: the development of a game engine, providing core functionality to support one or more games, and the development of game logic that runs on top of this engine, providing the specifics of a particular game.

    top
    CS9534: Cryptography and Security
    Instructor: Lucian Ilie

    Course Description:
    Principles and practice of cryptography and network security: classical systems, symmetric block ciphers (DES, AES, other contemporary symmetric ciphers), linear and differential cryptanalysis, perfect secrecy, public-key cryptography (RSA, discrete logarithms), algorithms for factoring and discrete logarithms, cryptographic protocols, hash functions, authentication, key management, key exchange, signature schemes, security.

    top
    CS9535: Distributed and Parallel Systems
    Instructor: Ali Hamou

    Course Description:
    This course studies the fundamental aspects of building distributed systems and developing distributed applications. Emphasis is placed on client-server application design using sockets and remote procedure calls and developing reliable applications through the use of replication, group membership protocols, clock synchronization and logical timestamps. Students will have the opportunity to develop reliable distributed applications.

    top
    CS9538: Databases II
    Instructor: Sylvia Osborn

    Course Description:
    Students will study advanced database topics. As each topic is covered, we will review traditional (relational) databases, and then apply and extend the ideas to distributed and object-oriented databases. The topics covered are database system architecture, data modeling and database design, design of query languages, query execution techniques, indexing and query optimization, transactions, concurrency control, recovery, and database security. As well, XML data models and XQuery will be briefly covered.

    top
    CS9540: Foundations of Computer Science II
    Instructor: Areski Nait-Abdallah

    Course Description:
    This course is a continuation of Foundations of Computer Science I (CS9331). It covers some more advanced topics in the foundations of computer science. Topics include minimization of deterministic finite automata, decidability and undecidability, context-sensitive languages, decision problems for context-free grammars, and topics on deterministic context-free languages.

    top
    CS9541: Game Design
    Instructor: Michael Katchabaw TBA

    Course Description:
    The video game market is a multi-billion dollar a year global industry, with more units of video game software distributed each year than virtually any other software product. In 2000, for the third consecutive year, an astonishing 35% of all Americans identified computer and video games as the most fun entertainment activity (according to the latest survey results released by IDSA, the Interactive Digital Software Association). A distant second was watching television (18%), surfing the Internet (15%), reading books (13%), and going out to the movies (11%). As such, the video game industry is a significant and important industry.
    Building a high quality game is a surprisingly difficult and challenging process; to quote Andre LaMothe, CEO of Xtreme GamesLLC: "Game programming is without a doubt the most intellectually challenging field of Computer Science in the world." This course provides an in-depth examination of video game design and implementation to study the many concepts and issues that bring about these challenges. Topics include: the history of video games; the game development process; principles of game design, game play, and balance; game genres and genre-specific design issues; plot, story, and level design; technical foundations from computing (graphics, artificial intelligence, networking, software engineering, and so on), and elsewhere (physics, anatomy, language studies, and so on); ethical issues in video games and the gaming industry; and the future of gaming. The course will culminate with a significant group project focused on the design and development of an innovative video game.
    The website from last year's offering of the course is also still up and available at: http://www.csd.uwo.ca/courses/CS9641b Students can go there and see last year's outline, notes, and so on. The grading methods may change this time, and material will be updated, but things should otherwise stay quite similar.

    top
    CS9542: Artificial Intelligence II
    Instructor: Olga Veksler

    Course Description:
    This course is a continuation of CS3346, Artificial Intelligence I. A broad range of areas falls into the field of Artificial Intelligence. In this course we give a brief introduction to three very active areas of Artificial Intellegence: machine learning, natural language processing, and computer vision. The programming assignments will be done in Matlab (short intro to Matlab will be given), and the empthasis of the assignments will be on developing practical applications, such as SPAM detector in email, text categorization, object tracking in videos. Planned topics (subject to change) are:

    top
    CS9543: Semantics of Programming Languages
    Instructor: Areski Nait-Abdallah

    Course Description:
    This course is an introduction to semantics of programming languages, with an emphasis on topics that arise from current research and practice in the area. Topics covered may include (not necessarily in this order): Operational semantics, Denotational semantics, lambda-calculus, Type theory, Program verification, Program extraction, Computer proof assistants and software certification for safety critical programs.

    top
    CS9544: Analysis of Algorithms II
    Instructor: Roberto Solis-Oba

    Course Description:
    This course focuses on advanced techniques for the design and analysis of algorithms. Among the topics covered are: approximation algorithms, randomized algorithms, on-line algorithms, zero-knowledge proofs, parallel algorithms, computational geometry, and distributed algorithms.

    top
    CS9546: Computer Networks II
    Instructor: Michael Bauer

    Course Description:
    This course provides an in-depth examination of advanced concepts in computer networks and data communications. General topics include mobile and wireless data communications, multimedia networking, network security, network management, and data communications modeling and simulation. Additional topics in this area may be covered as time permits.

    top
    CS9549: Software Design & Architecture
    Instructor: Nazim H. Madhavji

    Course Description:
    Software design immediately follows the requirements engineering phase in a software process. A software requirements specification tells us "what" a system does (or is to do), and becomes input to the design process. The resultant software design tells us "how" a software system works (or is to be implemented). A high-level view of the system, depicting processing elements, data elements, and connecting elements that hold the pieces together is called an "architecture".
    This course focuses on software architectures though some consideration is given to software design. The learning objectives are to become familiar with: the notion of software architectures, different types of architectures, and with the role they play in software systems and in software development. Concepts presented in lectures are complemented by practical assignments and a project.

    top
    CS9550: Specification, Testing and Quality Assurance
    Instructor: Robert Webber

    Course Description:
    The course is interested in established and promising methodologies for improving the quality of programming projects in particular and computer science undertakings in general, with particular interest in approaches being taken in industry. This includes: behavioral and test driven development, pair programming, code reviews, refactoring legacy code to improve testability, automated testing tools, web application frameworks like Ruby on Rails, formal specifications, deriving test data from specifications, reducing testing by proving properties of programs, random testing, and mutation testing. Specifications being tested against could include usability, security, and performance constraints. See the course web site for a current schedule of material to be covered as well as grading policies for undergraduate and graduate students (as this is a cross-listed course wth CS4472).

    top
    CS9551: Requirements Analysis
    Instructor: Nazim H. Madhavji

    Course Description:
    Requirements engineering (RE) covers all the activities involved in discovering, analyzing, documenting and maintaining a set of requirements for a computer-based system. The use of the term "engineering" implies that systematic and repeatable techniques should be used to ensure that system requirements are complete, consistent, relevant, etc. RE is a front-end part of a software development process which enables software engineers to define what a software system is required to do and the circumstances under which it shall operate.
    In this course, students will:

    Students will also carry out projects and assignments in requirements engineering related to the concepts taught in the lectures, and a minor research study (term paper). There shall be teamwork as well as individual work.

     

    top
    CS9552: Human-Computer Interaction
    Instructor: Kamran Sedig

    Course Description:
    This course provides an overview of a number of areas in human-computer interaction (HCI). Broadly speaking, HCI is a discipline concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. HCI addresses any interaction with computers by humans, as developers or as users, as individuals or as groups. On completion of the course, students are expected to have theoretical knowledge of and practical experience in the fundamental aspects of designing, implementing and evaluating interactive systems that are useful and usable. It is expected that students will become familiar with some of the literature in HCI and develop sufficient background in HCI issues to take more advanced courses or begin research projects at the master's or doctoral levels in the topics covered by this course.
    Research into the design of usable technology draws extensively on knowledge of informatics, cognition, communication, representation and computation. HCI professionals seek to identify the nature and parameters of human cognition at the interface so as to design forms of representation that support human interpretation and use as well as to reliably and validly test new technologies for usability and acceptability.

    top
    CS9556: Foundations of computational algebra
    Instructor: Eric Schost

    Course Description:
    Symbolic computations manipulate numbers by using their mathematical definitions rather than using floating point approximations. Consequently, their results are exact, complete and can be made canonical. However, they can be huge! Moreover, intermediate expressions may be much bigger than the input and output.
    One of the main successes of the Computer Algebra community in the last 30 years is the discovery of algorithms, called modular methods, that allow to keep the swell of the intermediate expressions under control. Even better: these methods fit almost each of the intermediate values in a machine word. Without these methods, many applications of Computer Algebra would not be possible and the impact of Computer Algebra in the scientific community would be severely reduced.
    Today, modular computations are well-developed, especially for univariate and bivariate polynomial arithmetic and for linear algebra. They form the foundation for all modern algorithms in Computer ALgebra. This will be the main topic of this course. In particular, we will discuss
    o Fast multiplication algorithms (FFT, Karatsuba, Strassen)
    o Chinese remaindering algorithm
    o Newton's iteration and Hensel lifting
    o Fast Linear Algebra and the LLL algorithm
    o Polynomial gcds and resultants
    o Factorization of Univariate Polynomials

    top
    CS9563: Computational Biology
    Instructor: Kaizhong Zhang

    Course Description:
    Bioinformatics studies biological problems using biological, computational, and mathematical methods. Computational biology studies computational techniques that can solve biological problems efficiently. This course emphasizes the design, analysis and implementation of algorithms for problems motivated from molecular biology research.

    top
     CS9587: Algorithms for Image Analysis
    Instructor: Yuri Boykov

    Course Description:
    This course has two components. On the one hand, it is an introduction to digital image analysis presenting selected fundamental problems in medical image analysis, computer vision, photo/video editing, and graphics. We cover such basic concepts as image segmentation, registration, object recognition/matching, tracking, texture, etc. On the other hand, this is an applied course on standard computer science algorithms where students develop practical understanding of dynamic programming, graph based algorithms, computational geometry methods, etc. In fact, image analysis provides a stimulating environment for studying algorithms as their outputs can be intuitively visualized. Students with previous background in algorithms will be exposed to applications in image analysis, while students already familiar with problems in imaging will learn efficient methods based on standard CS algorithms. The course emphasizes the design, analysis, and implementation of algorithms in the context of 2D/3D medical images, photo and video data.

    top
     CS9601: Biological Sequence Analysis
    Instructor: Lucian Ilie

    Course Description:
    Introduction to techniques used for analyzing biological sequences. Topics include: sequence alignment, dynamic programming, BLAST, spaced seeds, suffix trees, suffix arrays, Markov chains and hidden Markov models, profile HMMs for sequence families, multiple sequence alignment methods, building phylogenetic trees, etc.

    top
     CS9613: Automated Software Testing
    Instructor: Jamie Andrews

    Course Description:
    The automation of software testing tasks. Automated test input construction from formal models and from code. Automated production of test oracles. Randomized testing. Automated support for fault localization. Automated support for regression testing.

    top
    CS9616: Database Security and Privacy
    Instructor: Sylvia Osborn

    Course Description:
    This course considers access control as it relates to databases. Different access control models will be discussed, as well as how they apply to different database models: relational, object-oriented and XML databases for example. Statistical database querying issues will be covered. Privacy of data in a database will also be examined.

    top
    CS9624: High Perf. Computing with a focus on Hardware Acceleration Technologies
    Instructor: Marc Moreno Maza

    Course Description:
    Current hardware improvements focus on increasing the number of computations that can be performed in parallel rather than on increasing clock speed alone. This change has brought multi-processor workstations to the desktop, expanding interest in parallel algorithms and software capable of exploiting these computing resources. At the same time, these new hardware acceleration technologies stress the need of a deeper understanding of performance issues in software design.
    The aim of this course is to introduce you to the design and analysis of algorithms and software programs capable of taking advantage of these new computing resources. The following concepts will guide our quest for high performance: parallelism, scalability, granularity, locality, cache complexity, synchronization, scheduling and load balancing.
    Out of the course, you are anticipated to have an in depth understanding of the following subjects:


    A quarter part of the course will give an overview of other hot topics in high performance computing, including the following ones:

     

    top
    CS9628: Image Compression
    Instructor: Mahmoud El-Sakka

    Course Description:
    It is widely believed that a picture is worth more than a thousand words. However, dealing with digital pictures (images) requires far more computer memory and transmission time than that needed for plain text.
    To be able to handle, efficiently, the huge amount of data associated with images, compression schemes are needed. Image compression is a process intended to yield a compact representation of an image, hence, reducing the image storage/transmission requirements.
    Over the last few decades, many good image compression schemes have been developed. These schemes are currently used in commercial compression products/systems, e.g., JPEG and GIF. The performance of these schemes varies from low to high compression ratios with low to high levels of degradation of the decompressed images.
    This course provides students with a solid understanding of the fundamentals and the principles of various digital still-image compression schemes.
    Upon completion of the course, the students will be equipped with the fundamental knowledge that will help them understand various compression techniques in such a way as to optimize their use for a particular application.

    top
    CS9630: Image Processing and Analysis
    Instructor: John Barron

    Course Description:
    We cover basic image processing techniques, filtering in the spatial and frequency domains (lowpass, highpass and bandpass filters), edge detection, region growing, mrphorological operations, histogramming, segmentation, fourier transform and sampling, etc. The programming language is MatLab (which will be taught in class).

    top
     CS9645: Introduction to Computer Vision Techniques
    Instructor: Steven Beauchemin

    Course Description:
    This graduate course examines the foundational techniques in the field of computer vision. Vision is one of our senses that allow us to build a powerful internal representation of the world. In this sense, machines that interpret visual data have an extended capability to interact with the world and humans. Such interactions include visually guided autonomous navigation, industrial inspection, cooperative robotics, facial recognition, and automated spatial missions.

    top
    CS9660: Computational Linguistics
    Instructor: Robert Mercer

    Course Description:
    Modern computational linguistics uses a variety of techniques to process human language. In this graduate level introduction to this subject we will investigate a number of these techniques. They include finite state automata and finite state transducers applied to words; n-grams and part of speech tagging to connect words to grammar; grammars to describe the syntactical structure of sentences; parsers that use these grammars to generate the structure; the semantics of words and sentences; and discourse.

    top
     CS9668: Internet Algorithmics
    Instructor: Roberto Solis-Oba

    Course Description:
    This course focuses on the study of algorithms used for solving problems that arise from the design and use of wide-area networks, such as the Internet. Among the topics that we might cover are: Distributed algorithms for network problems, Searching for information on the Web and Web crawling, Caching and prefetching, Routing, Service placement and clustering, Peer-to-peer systems, Load balancing.

    top
      CS9837: Vision for Graphics
    Instructor: Yuri Boykov

    Course Description:
    Realistic image synthesis is a central goal of computer graphics. Movies like Jurassic Park or Star Wars demonstrate thrilling possibilities - graphical models that look and move so realistically that they integrate seamlessly with live action footage. Yet, creating such effects currently requires great artistry and painstaking manual labor. Motivated by these difficulties, many in the computer graphics community are turning to the field of computer vision as a means for capturing the real world directly from photographs and video. Beyond providing a rich source of input for computer graphics, computer vision has the potential to impact computer graphics at a variety of levels. For example, a camera-equipped PC could interpret your gestures and motions directly, without the need for a mouse or 3D-input device. Artists and media producers could benefit from vision-assisted tools that simplify editing images and video. Rendering architectures could take advantage of image-based representations to render complex scenes more efficiently.
    In this course we will survey many of the computer vision techniques that have applications to the field of computer graphics research and production. The topics covered include image warping, matte extraction, motion estimation, mosaics, camera calibration, match move, shape recovery, texture analysis, and reflectance modeling. No prior background in computer vision is assumed. The fundamental concepts and mathematics that underlie these approaches will be covered in addition to the algorithms themselves.
    Prerequisites: a prior course in computer graphics OR computer vision OR image processing.

    top
     CS9840: Computer Vision and Learning
    Instructor: Olga Veksler

    Course Description:
    Traditionally, researchers in the field of computer vision have been hand-crafting appropriate physical/statistical models of objects/natural scenes for building computer vision systems. Recent advances in imaging and computing technology make it possible to capture and process large amounts of visual data efficiently. This lead to increasing use of machine learning techniques for model learning in computer vision. A model learned from large visual datasets is less likely to be brittle than a model hand-crafted by a designer. In this course, we will explore recent sucessful computer vision methods based on machine learning. The course will be organized as a combination of lectures by the instructor and paper presentation by the students. Each student will have to do one or two paper presentations, as well as a final programming project.

    top
    CS9841: Interfaces to Afford Accessability
    Instructor: Helmut Jürgensen

    Course Description:
    After a brief review of general issues concerning human-machine interfaces, the course will focus on human-machine interfaces for users with special needs: elderly, blind, motorically handicapped etc. In the course we shall discuss legal aspects, analyse the requirements, present current hardware and software solutions and attempt to develop improved solutions.

    top
    CS9842: Advanced Topics in Distributed Systems
    Instructor: Hanan Lutfiyya

    Course Description:
    This course covers new architectures and programming techniques for large scale distributed systems. Students will study state-of-the-art solutions for large scale distributed systems such as those developed by Google, Amazon, Microsoft, Yahoo, etc. Students will also explore novel ideas that may be important in the future.

    top
    CS9860: Advanced Machine Learning
    Instructor: Charles Ling

    Course Description:
    The course will provide a comprehensive introduction to machine learning, one of the most active and important areas in AI (Artificial Intelligence). Various learning paradigms, methodologies and theories will be covered. The main focus will be on inductive learning from examples.
    Some knowledge of knowledge representation, logic, reasoning, and probability theory would be helpful.

    top
    CS9862a: Introduction to Modern SAT Solvers: Applications and Algorithms
    Instructor: Robert Webber

    Course Description:
    Although in general solving SAT instances may be slow, many significant SAT instances can be solved efficiently. Thus, the conversion of a difficult optimization problem into the corresponding SAT instances and then exploiting highly efficient modern SAT solvers to solve the problem has become one of the standard computer science methodologies for handling difficult problems. The adoption of this methodology has happened because of significant progress on algorithms for solving SAT problems over the last decade or two. This course covers the basics of these new algorithms as well as how people approach converting their application problems to suitable SAT instances. Some examples where conversion to SAT has proven successful include: tracking down errors in software, software configuration management, test case generation, cryptanalysis, analyzing network security protocols, analyzing gene data (haplotype inference), error correction in data records in preparation for data mining, general planning problems, and common-sense reasoning (with application to natural language understanding and high-level robot perception). Some successfully solved SAT instances have involved millions of variables.

    top
    CS9863: Empirical Research in Software Engineering
    Instructor: Nazim Madhaji

    Course Description:
    This is a course on “research methods” with particular focus on how to conduct empirical research in the field of Software Engineering (SE). We shall also touch base on research methods in Computer Science (CS) and Information Technology (IT). While creativity is central to advancing scientific knowledge, conducting research requires the use of rigorous qualitative and quantitative methods.

    top
    CS9875: Computational Sound and Music
    Instructor: Mark Daley
    What is the physical nature of sound, and how can we best record, store, analyze and produce it using a digital computer?
    Why are modern pop music singers always perfectly on pitch? How can a piece of software make an electric guitar sound like it is being played through an overdriven, vintage, analog amplifier? How do MP3 files achieve such massive rates of compression? What are the physics underlying the sound of a violin? Is there an algorithm that allows us to reproduce the sound of a violin entirely `in silico'? What is the relationship between timbre, tuning and scales?
    This course will begin with fundamental topics in musical acoustics, introducing the student to the nature of analog sound. Building on this foundation, we will move into the world of digital sound covering technical, perceptual and artistic topics along the way. top
    CS9876: State Complexity
    Instructor: Sheng Yu

    Course Description:
    State complexity is one of the fundamental topics in automata and formal language theory. It has been studied since the late 1950's. However, it has been intensively and systematically studied only after the 1990's motivated by the applications of finite automata. Many new and encouraging results have been obtained in recent years. State complexity is a descriptional complexity for regular languages and their sub-families of languages based on the numbers of states of minimal DFAs. In this course, the basic definitions on state complexity and related issues are introduced. The necessary background knowledges are reviewed. The the most recent research results in the area are presented and open problems are discussed in the course.

    top
     CS9880: Topics in Applied Computational Logic and Formally Certified Software
    Instructor: Areski Nait-Abdallah

    Course Description:
    Curry-Howard isomorphism is a major foundational concept in theoretical computer science. In essence, it says that the notion of a program and the notion of a constructive proof are exactly the same thing. Applying the isomorphism has led to some pioneering software tools: Coq, Isabelle, etc. The course is an introduction to Curry-Howard isomorphism via the practical use of some of these tools, namely proof assistants. The course includes a survey of elementary logic, and an introduction to simply typed lambda-calculus. It gives an overview of current proof assistant tools and their applications. Practical applications to the formal specification of programs and automatic extraction of programs from formal proofs are discussed.

    top
     CS9883: Topics in Digital Ink and Handwriting Recognition
    Instructor: Stephen Watt

    Course Description:
    Handwritten input is increasingly important in modern computing. Tablet PCs, iPads, electronic white boards and many telephones today accept hand written or touch-based input. Document analysis systems strive to handle handwritten annotations or entire documents using multiple languages and scripts. Finally, large-scale business applications, such as mail sorting and cheque cashing, rely critically on computer-based handwriting recognition.

    This course examines concepts in digital ink and aspects of computer-based handwriting recognition. The course involves lectures, review and discussion of articles from the research literature, and a programming project.

    The subjects will be selected from:


     

    top
    CS9888: Topics in Programming Languages and Their Implementation
    Instructor: Stephen Watt

    Course Description:
    This course examines concepts in modern computer programming languages and various strategies for implementing them. Some topics are applicable to broad classes of programming languages in widespread use, e.g. loop optimization and method-call optimization. Other topics relate to specific features of more specialized programming languages, e.g. lazy evaluation, or types as first-class values. The course involves lectures, study of a topic from the literature, and a programming project.
    The subjects presented in class will be selected from:

     

    top