About U of O
Prospective Students
News & Events
Alumni & Friends
FrançaisLibrariesMapsKeyword Search and DirectoriesCoursesU of O Home

Current calendars

Faculty calendars

Health Sciences
Law (Civil Law)
Law (Common Law)
Social Sciences


Archived Calendars

See List

Contact Information

Tabaret Hall
75 Laurier Av. E.
Ottawa, ON, Canada
K1N 6N5

Tel: 613-562-5630
Toll-free phone:


Tel: 613-562-5315
Toll-free phone:
1-877-868-8292 (#5315)

Calendars > Courses > COMPUTER SCIENCE


1100 1101 1102 1301 1303 1390 1500 1501 1502 1701
1703 1790 2101 2111 2114 2115 2121 2131 2165 2167
2171 2172 2173 2174 2210 2220 2230 2303 2501 2511
2514 2515 2521 2531 2565 2567 2571 2572 2573 2574
2610 2620 2630 2703 2901 2910 2911 3103 3104 3105
3125 3150 3220 3230 3231 3240 3310 3317 3503 3504
3505 3525 3550 3620 3630 3631 3640 3710 3717 3901
3902 4101 4102 4103 4104 4105 4106 4107 4108 4109
4110 4115 4118 4124 4125 4126 4128 4130 4131 4133
4134 4138 4140 4150 4501 4502 4503 4504 4505 4506
4507 4508 4509 4510 4515 4518 4524 4525 4526 4528
4530 4531 4533 4534 4538 4540 4550 4900 4901 4902

CSI1100 Introduction to Computer Science I (3,0,2) 4 cr.
Problem solving and algorithm design. Fundamental programming constructs: decisions, loops, modules, recursion. Fundamental data structures: arrays, records. Basic principles of software engineering: stepwise refinement, modular programming, documentation, testing. (Lab work will be done in the Java programming language).
The courses CSI1102, CSI1301, CSI1303, CSI1390 cannot be combined for credits.
CSI1101 Introduction to Computer Science II (3,0,2) 4 cr.
Introduction to object-oriented programming. Abstraction principles: information hiding and encapsulation. Linked lists, stacks, and queues. Iterative and recursive processing of data structures. Basic concepts of computer organization: introduction to logic circuits, machine language, representation of data, and assembly language. Virtual machines, interpretation, compilation. (Lab work will be done in the Java programming language).
Prerequisite: CSI1100.
CSI1102 Fundamentals of Software Design (3,0,3) 4 cr.
Software design and pseudocode. Introduction to object-oriented programming. Abstraction principles: virtual machines, information hiding and encapsulation. Simple data structures. Linked lists, stacks, and queues, and their applications. Iterative and recursive processing of data structures. (Lab work will be done in the Java programming language).
Prerequisite: GNG1101 or CSI1100.
CSI1301 Computing Concepts for Business (3,0,2) 4 cr.
This course provides an introduction to computer-based problem solving from the perspective of the business world. Design of algorithms and algorithm description. Introduction to 4th generation languages and methodologies. Structured program development and program testing. Modular programming. Searching, sorting and file processing. Application generators of business oriented software products such as spreadsheets and database packages.
The courses ITI1220, CSI1301, CSI1303, CSI1390 cannot be combined for credits.
CSI1303 Introduction to Computing Concepts (3,0,2) 4 cr.
Introduction to computer based problem solving for scientific applications. Design of algorithms and algorithms descriptions. 4th generation languages. Software packages. Structured program development. Modular and object-oriented programming. Program testing.
Prerequisite: Advanced Functions and Introductory Calculus 4U and Geometry and Discrete Mathematics 4U. The courses ITI1220, CSI1301, CSI1303, CSI1390 cannot be combined for credits
CSI1390 Introduction to Computers (2,0,2) 3 cr.
Computing and computers. Problem solving and algorithm development. Introduction to programming. Use of application, communication, and database software.
The courses ITI1220, ITI1221, CSI1301, CSI1303, CSI1390 cannot be combined for credits.
CSI1500 Introduction à l'informatique I (3,0,2) 4 cr.
Résolution des problèmes et conception des algorithmes. Structures algorithmiques de base: branchement, boucles, modules, récurrence. Structures de données: tableaux, enregistrements. Introduction au génie des logiciels: méthodes de décompositions successives, programmation modulaires, documentation, tests. (Les étudiants utiliseront le langage Java pour les travaux pratiques).
Les cours CSI1502, CSI1701, CSI1703, CSI1790 sont mutuellement exclusifs.
CSI1501 Introduction à l'informatique II (3,0,2) 4 cr.
Introduction à la programmation orientée objet. Abstraction: machines virtuelles, encapsulation et masquage d'information. Listes, piles et files d'attente. Structures de données élémentaires et leur traitement itératif et récursif. Introduction à l'organisation des ordinateurs: circuits logiques, langage machine, représentation des données et assembleur. Les machines virtuelles, interprétation et compilation. (Les étudiants utiliseront le langage Java pour les travaux pratiques).
Préalable : CSI1500.
CSI1502 Principes fondamentaux en conception de logiciels (3,0,3) 4 cr.
Conception des logiciels et pseudocode. Introduction à la programmation orientée objet. Abstaction: machines virtuelles, encapsulation et masquage d'information. Structures de données élémentaires. Listes, piles, files d'attente et leurs applications. Traitement itératif et récursif des structures de données. (Les étudiants utiliseront le langage Java pour les travaux pratiques.)
Préalable : GNG1501 ou CSI1500.
CSI1701 Éléments de programmation pour la gestion (3,0,2) 4 cr.
Introduction aux méthodes de résolution informatisées dans le cadre du monde des affaires. Conception et description des algorithmes. Introduction aux méthodes et langages de 4e génération. Programmation modulaire. Recherches, tris et traitement de fichiers. Logiciels applicables au monde des affaires tels que tableurs et banques de données.
Les cours ITI1620, CSI1701, CSI1703, CSI1790 sont mutuellement exclusifs.
CSI1703 Introduction aux concepts de l'informatique (3,0,2) 4 cr.
Introduction aux méthodes de résolution de problèmes par ordinateur dans le cadre des applications scientifiques. Conception et description des algorithmes. Langages de 4e génération. Logiciels. Développement de programmes modulaires, structurés et orientés objet. Tests de programmes.
Préalables: Fonctions avancées et introduction au calcul différentiel 4U et Géométrie et mathématiques discrètes 4U. Les cours ITI1620, CSI1701, CSI1703, CSI1790 sont mutuellement exclusifs
CSI1790 Introduction aux ordinateurs (2,0,2) 3 cr.
Le traitement de l'information et les ordinateurs. La résolution de problèmes. Développement des algorithmes. Introduction aux concepts de la programmation. Utilisation de logiciels d'application, de communication et de bases de données.
Les cours ITI1620, ITI1621, CSI1701, CSI1703, CSI1790 sont mutuellement exclusifs.
CSI2101 Discrete Structures (3,1.5,0) 3 cr.
Discrete structures as they apply to computer science, algorithm analysis and design. Predicate logic. Review of proof techniques; application of induction to computing problems. Graph theory applications in information technology. Program correctness, preconditions, postconditions and invariants. Analysis of recursive programs using recurrence relations. Properties of integers and basic cryptographical applications.
Prerequisite: MAT11348
CSI2111 Computer Architecture (3,0,1.5) 3 cr.
Review of basic digital design. Organization of a digital computer: CPU structures and components, main memory, input-output module, and data/contral paths. Typical instruction sets of some standard CPU types. Instruction types. Addressing formats. Microarchitecture of control unti. Serial/parallel interfaces.
Prerequisites: CSI1101 or (CSI1102 and GNG1102) This course cannot be combined for credits with CEG2131.
CSI2114 Data Structures (3,0,1.5) 3 cr.
Introduction to abstract data types. Trees, binary search trees, balanced trees. Searching. Sorting. Simple examples of complexity analysis. Graphs, simple graph algorithms: depth-first and breadth-first search, minimum spanning tree, shortest path. (Lab work will be done in the Java programming language).
Prerequisite: CSI1101 or CSI1102.
CSI2115 Concepts in Programming Languages (3,0,0) 3 cr.
Structure and design of block-structured programming languages. Methods of description of programming languages. Variables, references. Control structures. Data structures and data types. Procedures, scoping, principles of implementation of block structure. Principles of data abstraction. Basic concepts in concurrency.
Prerequisite: CSI2114. Corequisite: CSI216X or CSI217X. Cannot be combined for credits with CSI3125.
CSI2121 Principles of Assembly Language Programming (3,0,1.5) 3 cr.
Assembly language fundamentals, addressing modes, number representations, arithmetic and logic instructions, program control instructions, arrayprocessing. Procedures, parameters passing, stack operations and interfacing with high-level language. System functions interrupts, and input/output operations.
Prerequisite: CSI2111. Corequisite: CSI2167.
CSI2131 File Management (3,0,1.5) 3 cr.
Logical and physical view of files. Types of storage. Management of secondary storage. Primary/secondary storage interface. Efficiency of file storage: file compression, internal manipulation and space reallocation. Efficiency of file organization: indexing, B-trees, B+-trees, hashing. Files in multi-user systems: security, reliability, and standard formats for information exchange.
Prerequisite: CSI2114.
CSI2165 Prolog Concepts Laboratory (0,0,4) 2 cr.
Practice in the use of the Prolog language.
Prerequisite: CSI1101 or CSI1102.
CSI2167 C Concepts Laboratory (0,0,4) 2 cr.
Practice in the use of the C language.
Prerequisite: ITI1221. Cannot be combined for credit with GNG1101
CSI2171 Smalltalk Concepts Laboratory (0,0,4) 2 cr.
Practice in the use of the Smalltalk language.
Prerequisite: CSI1101 or CSI1102. Cannot be combined for credits with CSI2172 or CSI2173.
CSI2172 C++ Concepts Laboratory (0,0,4) 2 cr.
Practice in the use of the C++ language.
Prerequisite: CSI1101 or CSI1102. Cannot be combined for credits with CSI2167, CSI2171 or CSI2173.
CSI2173 Java Concepts Laboratory (0,0,4) 2 cr.
Practice in the use of the Java language.
Prerequisite: CSI1101 or CSI1102. Cannot be combined for credits with CSI2167, CSI2171 or CSI2172.
CSI2174 Functional Programming Concepts Laboratory (0,0,4) 2 cr.
Practice in the use of a functional programming language.
Prerequisite: CSI1101 or CSI1102.
CSI2210 Data Structures and Algorithms (3,1.5,1.5) 4 cr.
The concept of abstract data types. Simple methods of complexity analysis. Trees. The search problem: balanced trees, binary-trees, hashing. Sorting. Graphs and simple graph algorithms: traversal, minimum spanning tree. Strings and pattern matching.
Prerequisites: ITI1221, MAT1348
CSI2220 Programming Paradigms (3,1.5,1.5) 4 cr.
Presentation of the major programming paradigms: object-oriented, imperative, logic, functional. Related programming languages, their essential properties and typical applications. Programming in imperative, logic and functional languages. Influence of programming paradigms on problem solving and program design strategies. An overview of other paradigms, such as constraint-based, rule-based and event-driven programming.
Prerequisite: CSI2210.
CSI2230 Databases I (3,1.5,1.5) 4 cr.
Fundamental database concepts. Entity-Relationship modeling. Relational algebra and relational calculus. Relational databases. Database definition and manipulation using SQL. Embedded SQL. Functional dependencies and normalization. Introduction to physical database design. Design and implementation of a database application in a team project.
Prerequisite: CSI2210.
CSI2303 Computing Concepts for Genomics (3,0,2) 4 cr.
Basic concepts of algorithm design and modern programming languages, including object-oriented and scripting languages, with special reference to genomic databases. Laboratory exercises will include designing programs for gene recognition, measuring genetic linkage, and protein sequence analysis.
Prerequisite: BIO2123 This course cannot be combined for credits with ITI1220, CSI1301, CSI1303, CSI1390, GNG1101. The course is not open to students from the Faculty of Engineering.
CSI2501 Structures discrètes (3,1.5,0) 3 cr.
Structures discrètes utilisées en informatique. Analyse et conception des algorithmes. Logique des prédicats. Révision des techniques de preuves. Application de l'induction aux problèmes en informatique. Théorie des graphes. Applications en technologie de l'information. Justesse des programmes correction. Pré, post conditions et invariants. Analyse des programmes récursifs à l'aide des relations de récurrence. Propriétés des entiers et application de base et en cryptographie.
Préalable : MAT1748
CSI2511 Architecture des ordinateurs (3,0,1.5) 3 cr.
Revue des circuits numériques. Organisation d'un ordinateur. Structures et composantes de l'UCT. Mémoire principale, module d'entrée/sortie, chemin des données et signaux de contrôle. Jeux d'instructions typiques de certains processeurs. Types d'insctructions. Types d'adressage. Microarchitecture de l'unité de contrôle. Interfaces série et parallèles.
Préalable : CSI1501 ou (CSI1502 et GNG1502). Ce cours ne peut être combiné pour fins de crédits avec CEG2531.
CSI2514 Structures de données (3,0,1.5) 3 cr.
Introduction aux types abstraits de données. Arbres, arbres binaires et arbres équilibrés. Algorithmes de tris et de recherches. Exemples simples d'analyse de complexité. Algorithmes simples de graphes: recherche en profondeur et recherche en largeur, arbre minimal recouvrant, algorithme du plus court chemin. (Les étudiants utiliseront le langage Java pour les travaux pratiques).
Préalable : CSI1501 ou CSI1502.
CSI2515 Concepts des langages de programmation (3,0,0) 3 cr.
Structures et concepts des langages structurés en blocs. Méthodes de description des langages. Les variables, leurs références. Structures de contrôle. Structure des données et types de données. Procédures, portée, principes d'implantation des langages structurés en blocs. Principes d'abstraction des données. Concepts de base des systèmes concurrents.
Préalable : CSI2514. Concomitant : CSI256X ou CSI257X. Ne peut être combiné avec CSI3525 pour l'obtention de crédits.
CSI2521 Principes de programmation en langage d'assemblage (3,0,1.5) 3 cr.
Fondements du langage d'assemblage, modes d'adressage, représentations numériques, instructions arithmétiques et logiques, instructions de contrôle de l'exécution du programme, traitement des chaînes. Procédures, passage de paramètres, manipulation de la pile, interface avec langages de haut-niveau. Fonctions du système, interruptions et opérations d'entrée/sortie.
Préalable : CSI2511. Concomitant : CSI2567.
CSI2531 Gestion de fichiers (3,0,1.5) 3 cr.
Vue logique et physique des fichiers. Types de stockage. Gestion de la mémoire secondaire. Interface mémoire primaire/mémoire secondaire. Efficacité du stockage: compression de fichier, manipulation interne des fichiers. Efficacité de l'organisation: indexage, arbres-B, arbres-B+, hashage. Fichiers dans les environnements multi-usagers: sécurité, fiabilité et formats standards pour l'échange d'information.
Préalable : CSI2514. Concomitant : CSI2572.
CSI2565 Laboratoire Prolog (0,0,4) 2 cr.
Travaux pratiques en programmation Prolog.
Préalable : CSI1501 ou CSI1502.
CSI2567 Laboratoire C (0,0,4) 2 cr.
Travaux pratiques en programmation C.
Préalable: ITI1621. Ce cours et le cours GNG1501 sont mutuellement exclusifs.
CSI2571 Laboratoire Smalltalk (0,0,4) 2 cr.
Travaux pratiques en programmation Smalltalk.
Préalable : CSI1501 ou CSI1502. Ce cours et les cours CSI2572 ou CSI 2573, pris individuellement, sont mutuellement exclusifs.
CSI2572 Laboratoire C++ (0,0,4) 2 cr.
Travaux pratiques en programmation C++.
Préalable : CSI1501 ou CSI1502. Ce cours et les cours CSI2567, CSI2571 ou CSI2573, pris individuellement, sont mutuellement exclusifs.
CSI2573 Laboratoire Java (0,0,4) 2 cr.
Travaux pratiques en programmation Java.
Préalable : CSI1501 ou CSI1502. Ce cours et les cours CSI2567, CSI2571 ou CSI2572, pris individuellement, sont mutuellement exclusifs.
CSI2574 Laboratoire de programmation fonctionnelle (0,0,4) 2 cr.
Travaux pratiques sur un langage de programmation fonctionnelle.
Préalable : CSI1501 ou CSI1502.
CSI2610 Structures de données et algorithmes (3,1.5,1.5) 4 cr.
Types abstraits de données. Méthodes simples d'analyse de complexité. Arbres. Recherche : arbres binaires, arbres équilibrés et hachage. Tris. Graphes et algorithmes simples pour graphes : parcours, arbre minimal recouvrant. Chaînes, patrons et filtrage.
Préalables : ITI1621, MAT1748
CSI2620 Paradigmes de programmation (3,1.5,1.5) 4 cr.
Présentation des principaux paradigmes de programmation: orienté objet, impératif, logique, fonctionnel. Langages de programmation correspondants, leurs propriétés essentielles et leurs applications typiques. Programmation avec langages impératifs, logiques et fonctionnels. Influence des paradigmes de programmation sur la résolution de problèmes et les stratégies de conception de programmes. Survol d'autres paradigmes tels que les programmations orientées contraintes, à base de règles, et événementielle.
Préalable : CSI2610.
CSI2630 Bases de données I (3,1.5,1.5) 4 cr.
Concepts fondamentaux des bases de données. Modèle entité relation. Algèbre et calcul relationnels. Bases de données relationnelles. Définition de bases de données et manipulation à l'aide de SQL embarqué. Dépendances fonctionnelles et normalisation. Introduction à la conception physique des bases de données. Conception et implantation d'une application avec base de données (projet d'équipe)
Préalable : CSI 2610.
CSI2703 Concepts de programmation pour la génomique (3,0,2) 4 cr.
Concepts de base de conception d'algorithmes et des languages de programmation modernes, orientée objet et scriptage, avec des références particulières aux bases de données génomiques. Parmi les exercices en laboratoire, il y aura des exemples de programmes pour la recherche de gènes, l'analyse de liaisons génétiques, et l'analyse des séquences protéiques.
Préalable : BIO2523. Ce cours ne peut être combiné pour fins de crédits avec ITI1620, CSI1701, CSI1703, CSI1790, GNG1501. Ce cours n'est pas ouvert aux étudiants de la Faculté de génie.
CSI2901 Rapport de stage coop I / Co-op Work Term Report I 3 cr.
CSI2910 Professional Practice in Computing / Pratique professionnelle de l'informatique (1,0,0) 1 cr.
Professionalism in Computer Science. Ethical practice. Intellectual property rights. Social impact of computing. Privacy and legal issues. // Professionalisme en informatique. Pratique éthique Propriété intellectuelle. Répercussions sociales de l'informatique. Confidentialité et aspects légaux.
CSI2911 Professional Practice in Computing / Pratique professionnelle de l'informatique (3,0,0) 3 cr.
Professionalism in Computer Science. Ethical practice. Intellectual property rights. Social impact of computing. Privacy and legal issues. // Professionnalisme en informatique. Pratique éthique. Propriété intellectuelle. Répercussions sociales de l'informatique. Confidentialité et aspects légaux.
CSI3103 Data Transmission and Computer Networks (3,0,0) 3 cr.
Fundamental concepts of data transmission and computer networks. Overview of layered protocol hierachies. The physical, link and network layers. Error control, flow control, routing algorithms. Packet switching and local area networks.
Prerequisite: MAT2375 or MAT2377 or CVG3170.
CSI3104 Introduction to Formal Languages (3,0,0) 3 cr.
Regular languages, finite automata, transition graphs Kleene's theorem. Finite automata with output. Context-free languages, derivation trees, normal form grammars, pumping lemma, pushdown automata, determinism. Decidability. Recursively enumerable languages, Turing machines, the halting problem.
Prerequisites: MAT1361, (MAT2343 or MAT2143).
CSI3105 Design and Analysis of Algorithms I (3,0,0) 3 cr.
Analysis of algorithms: worst-case and average-case analysis, complexity analysis, asymptotic notations and basic complexity classes. Algorithm design techniques: brute force, divide and conquer, dynamic programming, greedy, backtracking. Computational complexity of problems: lower bound arguments, the classes P, NP, NP-complete, dealing with NP-complete problems.
Prerequisites: CSI2210 and CSI2101 or (for honors mathematics students only: CSI2210, MAT2141 or MAT2143).
CSI3125 Concepts of Programming Languages (3,0,2) 4 cr.
Classification of programming languages. Syntactic description of programming languages. Imperative programming languages: data objects, data types, control structures, sub-programs, principles of implementation. Logic programming languages. Functional programming languages. Object-oriented programming languages. Modules.
Prerequisites: CSI2114, two programming language labs selected among CSI2165, (CSI2171 or CSI2172 or CSI2173) and CSI2174. Cannot be combined for credits with CSI2115.
CSI3150 Computational Methods for Numerical Problems (3,0,0) 3 cr.
Introductory course in the application of numerical methods using computer oriented algorithms such as finding roots, solving systems of equations differentiation, integration and optimization.
Prerequisites: (CSI1101 or CSI1102), MAT1322, MAT2341. Cannot be combined for credits with MAT3380.
CSI3220 Programming Language Concepts (3,1.5,1.5)
Design and evaluation criteria for programming languages. Introduction to syntactic and semantic description of programming languages. Basics of programming language implementation. Scripting languages. A comparison of design choices across programming paradigms: data objects, data types, control structures, sub-programs. Basics of concurrency.
Prerequisite: CSI2101, CSI2220,
CSI3230 Databases II (3,1.5,1.5)
Advanced physical database design. Access right, privacy and security. Query processing and optimization. Transaction processing, concurrency control and recovery. Object-oriented databases. Distributed and multi-databases. Data warehousing. Data integration. Design and implementation of a database component in a team project.
Prerequisite: CSI2230
CSI3231 Operating Systems (3,1.5,1.5)
Principles of operating systems. Operating systems design issues. Process management, process scheduling, concurrency issues. CPU scheduling. Memory management. Virtual memory. Mass storage systems. Input/Output system. File system. Security and protection. Examples of operating systems.
Prerequisites: CEG2131, CSI2210.
CSI3240 WWW Structures, Techniques and Standards (3,1.5,1.5)
Basic infrastructure of the Web. Servers and browsers. Examples of protocols. Internet and viruses. Search engine architecture. WWW Contents and presentation. Web pages, their structuring and interpretation. HTML, XML and their derivatives. Web interfaces to software and databases. Cookies and privacy issues. Semantic Web and ontologies. Web services.
Prerequisites: CSI2210, CSI2230.
CSI3310 Operating System Principles (3,0,1.5) 3 cr.
Review of computer architecture. Processes and threads. Processor scheduling. Concurrency, mutual exclusion, and synchronization. Deadlock and starvation. Memory management and virtual memory. File management and I/O management.
Prerequisite: CSI2121 or CEG3131.
CSI3317 Database Management Systems (3,0,0) 3 cr.
Views of data at different levels. Entity-relationship modelling. The relational data model. Relational algebra and calculi. Relational database languages. Integrity constraints and normal forms. Transactions and concurrency. An introduction to logic-based and object-oriented data models.
Prerequisite: CSI2131.
CSI3503 Transmission de données et réseaux informatiques (3,0,0) 3 cr.
Concepts fondamentaux de la transmission de données et des réseaux d'o rdinateurs. Vue d'ensemble des hiérarchies de protocoles à couches. Co uche physique, couches liaison de données et réseaux. Le contrôle des erreurs, le contrôle du débit des données et les algorithmes de routag e. Commutation par paquets et réseaux locaux.
Préalable : MAT2775 ou MAT2777 ou CVG3570.
CSI3504 Introduction aux langages formels (3,0,0) 3 cr.
Langages réguliers, automates d'états finis, graphes de transition et théorème de Kleene. Automates d'états finis avec sortie. Langages non-contextuels, arbres de dérivation, grammaires de forme normale, automates à pile, déterminisme. Décidabilité. Langages recursivement dénombrables, machines de Turing, le problème de terminaison.
Préalables : MAT1761, (MAT2743 ou MAT2543).
CSI3505 Conception et analyse des algorithmes I (3,0,0) 3 cr.
Analyse des cas moyens et du pire cas. Analyse de la complexité. Notations asymptotiques et classes de complexité de base. Techniques de conception d'algorithmes: exhaustive, diviser pour régner, programmation dynamique glouton, retour arrière. Complexité computationnelle de problèmes: arguments de borne inférieure. Classes P, NP, et NP complet; traitement des problèmes NP complet.
Préalables: CSI2610 et CSI2501 ou; (pour les étudiants en spécialisation mathématiques seulement: CSI2610, MAT2541 ou MAT2543).
CSI3525 Concepts des langages de programmation (3,0,2) 4 cr.
Classification de langages de programmation. Description syntaxique de langages de programmation. Langages de programmation impératifs: objets de données, types de données, structures de contrôle, sous-programmes, principes d'implantation. Programmation logique. Programmation fonctionnelle. Programmation orientée objet. Modules.
Préalables : CSI2514, deux laboratoires de langage de programmation choisis parmi CSI2565, (CSI2571 ou CSI2572 ou CSI2573) et CSI2574. Ne peut être combiné avec CSI2515 pour l'obtention de crédits.
CSI3550 Méthodes de calcul pour problèmes numériques (3,0,0) 3 cr.
Cours d'introduction qui permettra l'application des méthodes numériques algorithmiques telles que calcul de racines, solution de systèmes d'équations, différentiation, intégration et optimisation.
Préalables : (CSI1501 ou CSI1502), MAT1722, MAT2741. Ce cours et MAT3780 sont mutuellement exclusifs.
CSI3620 Concepts des langages de programmation (3,1.5,1.5) 4 cr.
Critères de conception et d'évaluation pour langages de programmation. Introduction à leur description syntaxique et sémantique. Principes d'implantation. Langages de script. Comparaison de choix de conception selon le paradigme de programmation: objets, types, structures de contrôle, sous-programmes. Éléments de concurrence.
Préalables: CSI2501, CSI2620
CSI3630 Bases de données II (3,1.5,1.5) 4 cr.
Conception avancée de bases de données physiques. Droits d'accès, protection et sécurité. Traitement et optimisation des requêtes. Traitement des transactions, contrôle du parallélisme et reprise. Bases de données orientées objets, base de données distribuées et multi-bases de données. Entrepôts de données. Intégration des données. Conception et implantation d'un composant de base de données (projet de groupe).
Préalable: CSI2630
CSI3631 Systèmes d'exploitation (3,1.5,1.5) 4 cr.
Principes et conception des systèmes d'exploitation. Gestion des processus, ordonnancement des processus et concurrence. Ordonnancement du processeur. Gestion de la mémoire. Mémoire virtuelle. Mémoire de masse. Entrées/sorties. Système de fichiers. Sécurité et protection. Exemples de systèmes d'exploitation.
Préalables: CEG2531, CSI2610,
CSI3640 Structures, techniques et normes du Web (3,1.5,1.5) 4 cr.
Infrastructure de base du Web. Serveurs et navigateurs. Exemples de protocoles. Internet et virus. Architecture de moteur de recherche. Contenu et présentation Web. Pages Web, leur structure et leur interprétation. HTML, XML et leurs dérivés. Interfaces Web vers les logiciels et bases de données. Témoins et droit à la vie privé. Web sémantique et ontologies. Services Web.
Préalables : CSI2610, CSI 2630.
CSI3710 Éléments de systèmes d'exploitation (3,0,1.5) 3 cr.
Revue des architectures d'ordinateur. Processus et fils. Ordonnancement du processeur. Parallelisme, exclusion mutuelle et synchronisation. Impasse et famine. Gestion de la mémoire et mémoire virtuelle. Gestion des fichiers et gestion des unités d'E/S.
Préalable : CSI2521 ou CEG3531.
CSI3717 Systèmes de gestion des bases de données (3,0,0) 3 cr.
Les données et leurs différents niveaux d'interprétations. Modèle entité-relation. Modèle de données relationnel. Algèbre et calcul relationnels. Contraintes d'intégrité et formes normales. Transactions et concurrence. Introduction aux modèles de données fondés sur la logique et orientés objet.
Préalable : CSI2531.
CSI3901 Rapport de stage coop II / Co-op Work Term Report II 3 cr.
CSI3902 Rapport de stage coop III / Co-op Work Term Report III 3 cr.
CSI4101 Theory of Computability (3,0,0) 3 cr.
Recursive functions, recursively enumerable sets, decision problems, Church-Turing thesis. S-M-N theorem, recursion theorem. Topics selected from: Lambda calculus, formal languages, logic complexity theory.
Prerequisite: CSI3104.
CSI4102 DNA Computing and Quantum Computing (3,1.5,0) 3 cr.
A brief introduction to quantum mechanics and biochemistry. Biochemical and quantum-mechanical computing models of DNA computer and a quantum computer. DNA replication, protein synthesis, quantum teleportation, quantum cryptography. Computational complexity of DNA and quantum algorithms. Examples of applications: breaking a cryptography system, solving an NP-complete problem.
Prerequisites: CSI3104, CSI3105, MAT2341, MAT2377
CSI4103 Topics in Computer Science I (3,0,0) 3 cr.
Selected topics in areas not covered by regular courses.
Prerequisite: Permission of the School.
CSI4104 Topics in Computer Science II (3,0,0) 3 cr.
Selected topics in areas not covered by regular courses.
Prerequisite: Permission of the School.
CSI4105 Design and Analysis of Algorithms II (3,0,0) 3 cr.
Theory of NP-completeness, methods for dealing with NP-complete problems. Selected topics in such areas as combinatorial optimization, computational geometry, cryptography, parallel algorithms.
Prerequisite: CSI3105.
CSI4106 Introduction to Artificial Intelligence (3,0,0) 3 cr.
Basic concepts and methods of Artificial Intelligence. Representation of knowledge. Natural language processing. Games and search strategies. Planning. Deduction and reasoning. Machine learning. Basic notions of expert systems.
Prerequisites: (CSI3220 or SEG2101) and MAT1348
CSI4107 Information Retrieval and the Internet (3,0,0) 3 cr.
Basic principles of Information Retrieval. Indexing methods. Query processing. Linguistic aspects of Information Retrieval. Agents and artificial intelligence approaches to Information Retrieval. Relation of Information Retrieval to the World Wide Web. Search engines. Servers and clients. Browser and server side programming for Information Retrieval.
Prerequisites: SEG3155 and (CSI3125 or SEG2101)
CSI4108 Cryptography (3,0,0) 3 cr.
The notion of secure communication. Building secure cryptosystems based on the assumption of computational hardness. Cryptographic one-way functions, trap-door functions, pseudorandom generators, and public/private-key encryption schemes. Computational indistinguishability and unpredictability. Digital signature and message authentication. Zero-knowledge/interactive proof systems. Application to e-commerce and e-trade.
Prerequisites: CSI3105, MAT2377.
CSI4109 Introduction to Distributed Computing (3,1.5,0) 3 cr.
Computational models. Communication complexity. Design and analysis of distributed algorithms. Control algorithms. Asynchronous computations. Synchronous computations. Fault-tolerant algorithms. Manipulation of distributed data. Examples of applications in data and communication networks, mobile computing and systems of communicating agents.
Prerequisites: CSI3105, SEG3155.
CSI4110 Systems Programming (3,0,0) 3 cr.
Structure of an operating system. Assembler, compiler, linkages, data management. Task management. Debugging. Job management. System generation and maintenance. Virtual machines.
Prerequisites: CEG2131, CSI3231.
CSI4115 Introduction to Compilers (3,0,0) 3 cr.
Fundamental features of programming languages, functions of compilers, processors, preprocessors, and translators. Organization of compilers including compile-time and run-time symbol tables. Lexical and syntactic analysis. Object code generation. Error diagnostics.
Prerequisites: CEG2131 and (CSI3220 or SEG2101).
CSI4118 Computer Networks and Protocols (3,0,0) 3 cr.
Communication services, protocols and software. Details of layered protocol hierarchies. The transport, session, presentation and application layers. Fundamental concepts of computer network design. Computer network and communication protocol architectures.
Prerequisite: SEG3155
CSI4124 Foundations of Modelling and Simulation (3,0,0) 3 cr.
Fundamental aspects of system modelling and the simulation process. Elements of continuous system simulation. Issues relating to the numerical solution of ordinary differential equations. Elements of discrete event simulation. Generation of random numbers and variates. Simulation validation and quality assurance. Introduction to simulation languages.
Prerequisites: (MAT2324 or MAT2331) and MAT2377
CSI4125 Theory of Programming Languages (3,0,0) 3 cr.
The concept of formal semantics. Attribute grammars. Denotational semantics. Operational semantics. Axiomatic semantics. Lambda-calculus for programming language description. Resolution and the semantics of logic programming. Theory of abstract data types. Concurrent programming, process algebras, CCS, CSP.
Prerequisites: CSI3104, CSI3220, CSI3231
CSI4126 Algorithms in bioinformatics (3,0,0) 3 cr.
DNA assembly, gene finding methods, exact string matching, pairwise alignment, grammatical frameworks, higher order structures. Recent developments, including DNA and protein chips.
Prerequisite: CSI3105.
CSI4128 Introduction to Distributed Systems (3,0,0) 3 cr.
Architectural concepts of distributing an application over several platforms. Overview of Local Area Network and Wide Area Network technologies (throughput, delay and reliability characteristics). Characteristics of mainframe, mini- and microcomputers. Network configuration and topologies. Types of network interactions - distributed databases, client-server, transaction processing, messaging. Advantages and disadvantages of distributed systems, practical applications and state-of-the-art case studies.
Prerequisites: (CSI3125 or SEG2101), SEG3155
CSI4130 Computer Graphics (2,0,2) 3 cr.
Graphics hardware. Raster algorithms and software. Graphics standards (core, GKS, PHIGS). Geometrical transformations. Viewing in three dimensions. Curves and splines. Picture generation using solid polyhedra. Illumination and color. Ray tracing. Display file compilers. Graphics data structures. Interactive graphics.
Prerequisites: MAT1341, CSI3105.
CSI4131 Real-Time Systems Design (3,0,3b) 4 cr.
Definition of real-time systems; examples. Characteristics of real-time systems. Analysis frameworks and tools. Elements of real-time system structure. Reliability and fault tolerance. Exceptions and exception handling. Concurrency and concurrent programming in real-time systems. Synchronisation and communication, resource control, and scheduling in real-time systems. Real-time system design methodologies. Computer assisted design of real-time systems.
Prerequisites: CEG3131, CSI3231
CSI4133 Computer Methods in Picture Processing and Analysis (2,0,2) 3 cr.
Representation of digital pictures. Elements of visual perception. Imaging geometry. Image enhancement and image restoration. Image segmentation and feature identification. Contenet-based analysis of images. Images compression, compression standards and graphics file format.
Prerequisite: CSI3105.
CSI4134 Pattern Recognition Techniques (3,0,0) 3 cr.
Review of mathematical aspects of pattern classification in the context of picture processing languages. Practical examples in pattern recognition.
Prerequisite: MAT2331.
CSI4138 Design of Secure Computer Systems (3,0,3b) 4 cr.
Security policies. Security mechanisms. Physical security. Security awareness. User authentication. Application security mechanisms. Encryption. External and internal firewalls. Security of operating systems and software. Security of e-commerce applications. Design of security system and components. Devices for security analysis; sniffers, attack detectors. Information warfare. Ethical issues in computer security.
Prerequisite: CEG3180 or SEG3255
CSI4140 Introduction to Parallel Computing (3,0,0) 3 cr.
Models of parallel computation. Shared memory parallel machines. Interconnection networks and their topological properties. Systolic arrays. Hypercube architectures. Layout. Performance measures for parallel algorithms. Parallel searching and data structures. Parallel algebraic and geometric processing. Fault-tolerant computing. Parallel evaluation of expressions.
Prerequisite: CSI3105.
CSI4150 Introduction to Numerical Optimization Methods (3,0,0) 3 cr.
Review of the linear programming problem. The quadratic programming problem and other problems with special structure. Gradient dependent and gradient independent methods for the general unconstrained function minimization problem. Solution methods for the linear search problem. Penalty function approaches to the constrained problem.
Prerequisite: MAT2331.
CSI4501 Théorie de la calculabilité (3,0,0) 3 cr.
Fonctions récursives, ensembles récursivement dénombrables. Décidabilité. Thèse de Church-Turing. Théorèmes S-M-N et de la récursion. Thèmes choisis parmi le calcul-Lambda, les langages formels, la logique et la théorie de la complexité.
Préalable : CSI3504.
CSI4502 Informatique à base d'ADN et informatique quantique (3,1.5,0) 3 cr.
Introduction à la mécanique quantique et à la biochimie. Modèles d'architectures basées sur l'ADN et les quantum. Replication d'ADN, synthèse de protéines. Téléportation cryptographie quantiques et complexité de leurs algorithmes. Exemples d'applications: casse d'un système de cryptographie, résolution d'un problème NP-complet.
Préalables : CSI3504, CSI3505, MAT2741, MAT2771.
CSI4503 Sujets en informatique I (3,0,0) 3 cr.
Sujets choisis dans des domaines non couverts par les cours réguliers.
Préalable : Permission de l'École.
CSI4504 Sujets en informatique II (3,0,0) 3 cr.
Sujets choisis dans des domaines non couverts par les cours réguliers.
Préalable : Permission de l'Ecole.
CSI4505 Conception et analyse des algorithmes II (3,0,0) 3 cr.
Théorie du NP-complet. Méthodes de traitement des problèmes NP-complets. Sujets choisis parmi les domaines suivants: optimisation combinatoire, géométrie de calcul, cryptographie, algorithmes parallèles.
Préalable : CSI3505.
CSI4506 Introduction à l'intelligence artificielle (3,0,0) 3 cr.
Concepts et méthodes de base de l'intelligence artificielle. Représentation des connaissances. Traitement du langage naturel. Stratégies de jeux et de recherches. Planification. Raisonnement et déduction. Apprentissage. Notions de base des systèmes experts.
Préalables : (CSI3620 or SEG2501) et MAT1748.
CSI4507 Recherche d'information et l'Internet (3,0,0) 3 cr.
Principes de base de la recherche d'information. Méthodes d'indexage. Traitement des requêtes. Aspects linguistiques de la recherche d'information. Agents et approches d'intelligence artificielle pour la recherche d'information. Relation entre la recherche d'information et le World Wide Web. Moteur de recherche. Serveurs et clients. Programmation du côté client et du côté serveur pour la recherche d'information.
Préalables : SEG3555 et (CSI3525 ou SEG2501)
CSI4508 Cryptographie (3,0,0) 3 cr.
La notion de communication sûre. Construction de cryptosystèmes sûrs fondée sur l'hypothèse de la complexité calculatoire. Fonctions cryptographiques unidirectionnelles, fonctions à portes de déroutement, générateurs pseudo-aléatoires, et schémas de chiffrement à clé publique/privée. Incapacité de distinction et imprévisibilité calculatoires. Signature numérique et authentification de messages. Systèmes de preuves interactifs/à divulgation nulle. Application au commerce électronique et au courtage électronique.
Préalables : CSI3505, MAT2777.
CSI4509 Introduction au calcul réparti (3,1.5,0) 3 cr.
Modèles de calcul. Complexité de communication. Conception et analyse d'agorithmes répartis. Algorithmes de contrôle. Calcul dans les systèmes asynchrones. Calcul dans les systèmes synchrones. Algorithmes tolérants aux défaillances. Manipulation de données réparties. Exemples d'applications dans les réseaux de communication, réseaux mobiles, et systèmes d'agents communicants.
Préalables : CSI3505, SEG3555.
CSI4510 Systèmes d'exploitation (3,0,0) 3 cr.
Structure d'un système d'exploitation. Assembleurs, compilateurs, édition des liens, gestion des entrées-sorties, gestion des tâches. Mise au point, gestion des travaux, génération, maintenance, machines virtuelles.
Préalables : CEG2531, CSI3631
CSI4515 Introduction aux compilateurs (3,0,0) 3 cr.
Les caractéristiques essentielles des langages de programmation. Les fonctions des compilateurs, processeurs, préprocesseurs, et traducteurs. Organisation d'un compilateur et génération de tables. Analyse lexicale et syntaxique. Génération du code en langage objet. Détection d'erreurs.
Préalables : CEG2531 et (CSI3620 ou SEG2501)
CSI4518 Réseaux d'ordinateurs et protocoles (3,0,0) 3 cr.
Services de communication, protocoles et logiciels. Détails des hierarchies de protocoles à couches. Les couches transport, session, présentation et application. Concepts fondamentaux de la conception de réseaux d'ordinateurs. Architectures de réseaux d'ordinateurs et de protocoles de communication.
Préalable : SEG3555
CSI4524 Principes de base de modélisation et simulation (3,0,0) 3 cr.
Aspects de base de la modélisation de systèmes et du processus de simulation. Eléments de la simulation de systèmes continus. Questions concernant la solution d'équations différentielles ordinaires. Eléments de simulation d`événements discrets. Génération de nombres aléatoires et variables aléatoires. Validation de simulation et contrôle de la qualité. Introduction à des langages de simulation.
Préalables: (MAT2724 or MAT2731) et MAT2777
CSI4525 Théorie de langages de programmation (3,0,0) 3 cr.
Le concept de sémantique formelle. Grammaires d'attributs. Sémantique dénotationnelle. Sémantique opérationnelle. Sémantique axiomatique. Le calcul Lambda pour la description des langages de programmation. Le principe de résolution et la sémantique des langages de programmation logique. Théories de types abstraits de données. Programmation parallèle, algèbres de processus, CCS, CSP.
Préalables : CSI3504, CSI3620, CSI3631
CSI4526 Algorithmes en bioinformatique (3,0,0) 3 cr.
Assemblage de l'ADN, recherche de gènes, comparaison de chaînes, alignement de séquences, structures grammaticales, structures secondaires et tertiaires. Les récents développements, tels que les puces d'ADN et de protéines.
Préalable : CSI3505.
CSI4528 Introduction aux systèmes distribués (3,0,0) 3 cr.
Concepts architecturaux relatifs à la distribution d'une application sur plusieurs configurations. Vue d'ensemble des technologies de réseaux locaux et de réseaux à grande distance (volume de transfert, délai de transmission, fiabilité). Caractéristiques des machines de grande taille, de petite taille, et des micro-ordinateurs. Configurations et topologie des réseaux. Types d'interaction dans un réseau: base de données distribuée; client-serveur; traitement de transactions; échange de messages. Avantages et désavantages des systèmes distribués; applications pratiques de pointe et études de cas.
Préalables: (CSI3525 ou SEG2501), SEG3555
CSI4530 Graphiques interactifs (2,0,2) 3 cr.
Matériel graphique. Algorithmes et logiciels pour image numérique. Standards graphiques (GKS, Core, PHIGS). Transformations géométriques. Visualisation en trois dimensions. Courbes et splines. Polyhèdre solide et génération d'images. Illumination et couleur. Lancer de rayon. Compilateur d'images. Graphique interactif. Structures de données graphiques.
Préalables : MAT1741, CSI3505.
CSI4531 Conception de systèmes en temps réel (3,0,3b) 4 cr.
Définition de systèmes en temps réel; exemples. Caractéristiques de systèmes en temps réel. Outils et techniques d'analyse. Structure de systèmes en temps réel. Fiabilité et tolérance de défaillances. Prise en charge d'exceptions. Simultanéité d'exécution et programmation simultanée de systèmes en temps réel. Synchronisation et communication, contrôle et ordonnancement de ressources dans des systèmes en temps réel. Méthodologies de conception de systèmes en temps réel. Conception assistée par ordinateur de systèmes en temps réel.
Préalables :CEG3531, CSI3631
CSI4533 Méthodes informatisées en traitement d'image (2,0,2) 3 cr.
Représentation des images numériques. Éléments de perception visuelle. Géométrie des systèmes d'acquisition d'images. Amélioration d'images et restauration d'images. Segmentation et identification de primitives. Analyse des images à partir de leur contenu. Compression d'images et standard de compression. Formats standards de fichiers graphiques.
Préalable : CSI3505.
CSI4534 Techniques de reconnaissance des formes (3,0,0) 3 cr.
Étude des aspects mathématiques associés à la classification de modèles dans le contexte des langages de traitement d'image. Exemples pratiques en concordance de modèles.
Préalable : MAT2731.
CSI4538 Conception de systèmes informatiques sécuritaires (3,0,1.5) 4 cr.
Politiques de sécurité. Mécanismes de sécurité. Sécurité physique. Conscience de la sécurité. Authentification d'utilisateur. Application des mécanismes de sécurité. Codage. "Firewalls" internes et externes. Sécurité des systèmes d'opération et des logiciels. Sécurité des applications de commerce électronique. Design de systèmes et composantes de sécurité. Dispositifs pour l'analyse de la sécurité, renifleurs, détecteurs d'attaque. Guerre de l'information. Aspects éthiques de la sécurité informatique.
Préalable : CEG3580 ou SEG3655
CSI4540 Introduction au calcul parallèle (3,0,0) 3 cr.
Modèles de calcul parallèle. Machines parallèles à mémoire partagée. Réseaux d'interconnexion et leurs propriétés topologiques. Tableaux systoliques. Architectures hypercube. Configuration physique. Mesures de performance pour algorithmes parallèles. Recherche parallèle et structures de données. Traitement algébrique et géométrique parallèle. Calcul tolérant les pannes. Évaluation parallèle d'expressions.
Préalable : CSI3505.
CSI4550 Introduction aux méthodes d'optimisation numériques (3,0,0) 3 cr.
Révision du problème de la programmation linéaire. La programmation quadratique et autres problèmes à structures spéciales. Méthodes pour le problème général de la minimisation des fonctions sans contraintes (méthodes à gradient variable ou indépendant). Solution au problème de la recherche linéaire. Méthodes des fonctions de pénalités.
Préalable : MAT2731.
CSI4900 Projets de recherche / Honours Project (0,0,6) 3 cr.
A one-semester project, individual or for a small group, carried out under the supervision of a faculty member. Projects are posted and selected in the preceding semester. The students are required to participate in project presentations scheduled at the end of the semester. Prerequisite: (for CSI students) 18 credits of CSI or SEG courses at the 3000 level; or (for IMS students) 12 credits of CSI or SEG courses at the 3000 level and 6 credits of ADM courses at the 2000 or 3000 level. 2000 or 3000 level.
CSI4901 Rapport de stage coop IV / Co-op Work Term Report IV 3 cr.
CSI4902 Rapport de stage coop V / Co-op Work Term Report V 3 cr.


About U of O | Prospective Students | Students | Services | Academics | Research | News and Events | Alumni and Friends

System requirements | Feedback | Privacy Policy | Accessibility

© University of Ottawa
If you are looking for additional information, please contact us.
Technical questions or comments about this site? Last updated: 2015.08.06