# Course

Description:
Compiler organization, compiler writing tools, use of regular expressions, finite automata and context-free grammars,
scanning and parsing, runtime organization, semantic analysis, implementing the runtime model, storage allocation, code
generation. Theoretical and practical aspects of building modern optimizing compilers. Topics: intermediate representations, basic
blocks and flow graphs, data flow analysis, partial evaluation and redundancy elimination, loop optimizations, register
allocation, instruction scheduling, interprocedural analysis, and memory hierarchy optimizations. Students implement
significant optimizations within the framework of a modern research compiler. (This course is a cross-listing of ECE 540H,
Faculty of Applied Science and Engineering).


Description:
The use, management and theory of databases, especially relational databases. Topics to be selected from the
    following: the relational model: relations, operations on relations, relational algebra and calculi; defining and
    manipulating data: SQL, embedded SQL, Query-by-Forms, database applications programming; query optimization:
    indices, algebraic optimization, hypergraph representation of queries, optimization algorithms; transaction management:
    concurrency, serializability, deadlocks, transaction protocols, time stamps, crash recover; design theory for relational
    databases: functional dependencies, normal forms, decomposition of relations; security and integrity of data; distributed
    databases.


Description:
Design and analysis of algorithms; reasoning about programs, their correctness and efficiency. Modular design, procedural
and data abstraction: subprograms, recursion, data types and data structures, modules. Comparison of several searching and
sorting algorithms. This course assumes programming experience in a language such as Pascal, Turing, C or Fortran to the
level of arrays and procedures. Students without this background should take CSC108H before attempting 148H. Consult the
Computer Science Undergraduate Office for help in assessing your readiness.


Description:
This course surveys the integration of different technologies and software techniques as they appear in the area of office
    systems. Topics include: the interdisciplinary nature of office systems; enabling technologies, workstations, networks,
    distributed systems, object-oriented languages; document management, multimedia data, hypertext, data base mediation;
    office communication; text messaging, multimedia messaging, multimedia messaging, coordination systems, meeting
    management; office work; routine office work, automatic procedures, problem solving, task representation, cooperative
    work; designing office systems; office models, office semantics, integrated systems; impact and evaluation.


Description:
Principles of operating systems. The operating system as a control program and as a resource allocator. The concept of a
process is central: synchronization, mutual exclusion, deadlock. Additional topics include memory management, file
systems, process scheduling, and protection. Some treatment of multiprocessor issues, such as threads and scheduling. Case
studies from systems such as Unix and Mach. Experimentation with a simple operating system using a concurrent
programming language. 
efficient algorithms to perform these operations, and interfaces to transform one type of object to another. Display devices,
display data structures and procedures, graphical input, object modelling, transformations, illumination models, primary and
secondary light effects; graphics packages and systems. Students, individually or in teams, implement graphical algorithms
or entire graphics systems.


Description:
Regular, deterministic, context free, context sensitive, and recursively enumerable languages via generative grammars and
corresponding automata (finite state machines, push down machines, and Turing machines). Topics include complexity
bounds for recognition, language decision problems and operations on languages.


# PersonInGroup

GroupName:
Artificial Intelligence and Symbolic Computation


# ResearchGroup

GroupName:
Artificial Intelligence and Symbolic Computation

Topics:
Knowledge Representation, Logics, Intelligent Tutoring Systems, P-adic Arithmetics


Topics:
Databases and the Web, Data Warehouses, Data Models and Query Languages


Topics:
Algorithms for Graph Drawing, Complexity, Data Structures


