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 developingtraditional software. Programming a game requires integration of sophisticatedconcepts and software technologies from computer graphics, artificialintelligence, networking, and other disciplines into a highly usable, highlyinteractive 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 oneor more games, and the development of game logic that runs on top of thisengine, providing the specifics of a particular game.
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 computermemory and transmission time than that needed for plain text.
To be able to handle, efficiently, the huge amount of data associated withimages, compression schemes are needed. Image compression is a processintended to yield a compact representation of an image, hence, reducingthe image storage/transmission requirements.
Over the last few decades, many good image compression schemes have beendeveloped. These schemes are currently used in commercial compression products/systems, e.g., JPEG and GIF.The performance of these schemes varies from low to highcompression ratios with low to high levels of degradation of thedecompressed images.
This course provides students with a solid understanding of the fundamentalsand the principles of various digital still-image compression schemes.
Upon completion of the course, the students will be equipped with thefundamental knowledge that will help them understand various compressiontechniques in such a way as to optimize their use for a particularapplication.
Course Description:
Principles and practice of cryptography and network security: classicalsystems, symmetric block ciphers (DES, AES, other contemporary symmetricciphers), linear and differential cryptanalysis, perfect secrecy, public-keycryptography (RSA, discrete logarithms), algorithms for factoring and discretelogarithms, cryptographic protocols, hash functions, authentication, key management, key exchange, signature schemes, security.
Course Description:
This course studies the fundamental aspects ofbuilding distributed systems and developing distributedapplications. Emphasis is placed on client-server application designusing sockets and remote procedure calls and developing reliableapplications through the use of replication, group membership protocols,clock synchronization and logical timestamps. Students will have theopportunity to develop reliable distributed applications.
Course Description:
Students will study advanced database topics. As eachtopic is covered, we will review traditional (relational) databases, andthen apply and extend the ideas to distributed and object-oriented databases.The topics covered are database system architecture, data modeling and databasedesign, design of query languages, query execution techniques, indexing andquery optimization, transactions, concurrency control, recovery, anddatabase security. As well, XML data models and XQuery will be brieflycovered.
Course Description:
This course is a continuation of Foundations of ComputerScience I (CS9 331). It covers some more advanced topicsin the foundations of computer science. Topics includeminimization of deterministic finite automata, decidabilityand undecidability, context-sensitive languages, decisionproblems for context-free grammars, and topics ondeterministic context-free languages.
Course Description:
The video game market is a multi-billion dollar a year globalindustry, with more units of video game software distributed each yearthan virtually any other software product. In 2000, for the thirdconsecutive year, an astonishing 35% of all Americans identifiedcomputer and video games as the most fun entertainment activity(according to the latest survey results released by IDSA, theInteractive Digital Software Association). A distant second waswatching television (18%), surfing the Internet (15%), reading books(13%), and going out to the movies (11%). As such, the video gameindustry 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 intellectuallychallenging field of Computer Science in the world." This courseprovides an in-depth examination of video game design andimplementation to study the many concepts and issues that bring aboutthese challenges. Topics include: the history of video games; the gamedevelopment process; principles of game design, game play, andbalance; 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); ethicalissues in video games and the gaming industry; and the future ofgaming. The course will culminate with a significant group projectfocused on the design and development of an innovative video game.
The website from last year's offering of the course is also still upand 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 beupdated, but things should otherwise stay quite similar.
Course Description:
The course is a survey of the models, techniques and architecturesfor knowledge based systems used in Artificial Intelligence. The coursegives an introduction to knowledge based systems in AI. It discussesmathematical logic and the logic of partial information, and its linkswith the reasoning activity in general, as well as with tentative,approximate and uncertain reasoning, and with fuzzy sets.It proceeds with a study of the problem of time in reasoning,hypothetical, qualitative, classification based and analogy based reasoning.It ends with an overview of multi-agent based reasoning and the blackboardmodel.
Course Description:
This course is an introduction to semantics of programming languages, with an emphasis ontopics 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.
Course Description:
This course focuses on advanced techniques for the design and analysis ofalgorithms. Among the topics covered are: approximation algorithms, randomizedalgorithms, on-line algorithms, zero-knowledge proofs, parallel algorithms,computational geometry, and distributed algorithms.
Course Description:
This course provides an in-depth examination of advanced concepts in computernetworks and data communications. General topics include mobile and wirelessdata communications, multimedia networking, network security, networkmanagement, and data communications modeling and simulation. Additionaltopics in this area may be covered as time permits.
Course Description:
Software design immediately follows the requirements engineering phasein a software process. A software requirements specification tells us"what" a system does (or is to do), and becomes input to the designprocess. The resultant software design tells us "how" a software systemworks (or is to be implemented). A high-level view of the system,depicting processing elements, data elements, and connecting elementsthat hold the pieces together is called an "architecture".
This course focuses on software architectures though someconsideration is given to software design.The learning objectives are to become familiar with: the notionof software architectures, different types of architectures, and withthe role they play in software systems and in software development.Concepts presented in lectures are complemented by practical assignments and a project.
Course Description:
As software becomes more important in more ways to more people,the quality of the software that we depend upon becomes moreimportant. Software Quality Assurance (SQA) is the set oftechniques that we use to help our software become high quality.
In this course, students will learn the most important conceptsand techniques of SQA, including: software testing; inspections;formal specification; proofs of properties of programs; metrics;and software quality standards.About half of the time will be spent on the most importantSQA technique in industry, software testing. Assignments andexams emphasize ability to apply the techniques learned, andability to discuss opinions on the basic issues.
Course Description:
Requirements engineering (RE) covers all the activities involved indiscovering, analyzing, documenting and maintaining a set ofrequirements for a computer-based system. The use of the term"engineering" implies that systematic and repeatable techniques shouldbe used to ensure that system requirements are complete, consistent,relevant, etc. RE is a front-end part of a software development processwhich enables software engineers to define what a software system isrequired to do and the circumstances under which it shall operate.
In this course, students will:
Course Description:
This course provides an overview of a number of areas in human-computerinteraction (HCI). Broadly speaking, HCI is a discipline concerned with thedesign, evaluation and implementation of interactive computing systems forhuman use and with the study of major phenomena surrounding them. HCI addressesany interaction with computers by humans, as developers or as users, asindividuals or as groups. On completion of the course, students are expected tohave theoretical knowledge of and practical experience in the fundamentalaspects of designing, implementing and evaluating interactive systems that areuseful and usable. It is expected that students will become familiar with someof the literature in HCI and develop sufficient background in HCI issues totake more advanced courses or begin research projects at the master's ordoctoral levels in the topics covered by this course.
Research into the design of usable technology draws extensively on knowledge ofinformatics, cognition, communication, representation and computation. HCIprofessionals seek to identify the nature and parameters of human cognition atthe interface so as to design forms of representation that support humaninterpretation and use as well as to reliably and validly test new technologiesfor usability and acceptability.
Course Description:
Symbolic computations manipulate numbers by using their mathematical definitions rather than using floating pointapproximations. Consequently, their results are exact, completeand can be made canonical. However, they can be huge!Moreover, intermediate expressions may be much bigger thanthe input and output.
One of the main successes of the Computer Algebra communityin the last 30 years is the discovery of algorithms, called modularmethods, that allow to keep the swell of the intermediate expressionsunder control. Even better: these methods fit almost each of theintermediate values in a machine word. Without these methods,many applications of Computer Algebra would not be possible and theimpact of Computer Algebra in the scientific community would beseverely reduced.
Today, modular computations are well-developed, especially forunivariate 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
Course Description:
Bioinformatics studies biological problems usingbiological, computational, and mathematical methods. Computational biologystudies computational techniques that can solve biological problemsefficiently. This course emphasizes the design, analysis and implementationof algorithms for problems motivated from molecular biology research.
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.
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.
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.
Course Description:
This course will consider 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.
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:
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
if MatLab (which will be taught in class).
Course Description:
This graduate course examines the foundational techniques in the field ofcomputer vision. Vision is one of our senses that allow us to build a powerfulinternal representation of the world. In this sense, machines that interpretvisual data have an extended capability to interact with the world and humans.Such interactions include visually guided autonomous navigation, industrialinspection, cooperative robotics, facial recognition, and automated spatialmissions.
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.
Course Description:
Realistic image synthesis is a central goal of computer graphics.Movies like Jurassic Park or Star Wars demonstrate thrillingpossibilities - graphical models that look and move sorealistically that they integrate seamlessly with live action footage.Yet, creating such effects currently requires great artistry and painstakingmanual labor. Motivated by these difficulties, many in the computer graphicscommunity are turning to the field of computer vision as a means forcapturing the real world directly from photographs and video. Beyondproviding a rich source of input for computer graphics, computer vision hasthe 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 producerscould benefit from vision-assisted tools that simplify editing images andvideo. Rendering architectures could take advantage of image-basedrepresentations to render complex scenes more efficiently.
In this course we will survey many of the computer vision techniques thathave 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 willbe covered in addition to the algorithms themselves.
Prerequisites: a prior course in computer graphics OR computer vision ORimage processing.
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.
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.
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.
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 becovered. The main focus will be on inductive learning from examples.
Some knowledge of knowledge representation, logic, reasoning,and probability theory would be helpful.
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.
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.
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.
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.
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.
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:
Course Description:
This course examines concepts in modern computer programming languagesand various strategies for implementing them. Some topics are applicableto broad classes of programming languages in widespread use, e.g. loopoptimization and method-call optimization. Other topics relate to specificfeatures of more specialized programming languages, e.g. lazy evaluation,or types as first-class values. The course involves lectures, study ofa topic from the literature, and a programming project.
The subjects presented in class will be selected from: