• Home   /  
  • Archive by category "1"

Iti1120 Assignment Discovery

Presentation on theme: "Lecture 2 Announcements Home Computers and/or Laptops/Notebooks By now you should have installed Java SE 8 and jGRASP on your computers, set up the becker.jar."— Presentation transcript:


2 Lecture 2 Announcements Home Computers and/or Laptops/Notebooks By now you should have installed Java SE 8 and jGRASP on your computers, set up the becker.jar file, and started working with some of the supplied.java files from Lecture 1. How many have done this successfully? How many have tried to do this and have still not gotten jGRASP to compile and run? If you have your laptops with you, I will stick around for a bit after today's class to see if we can get you up and running. I'll also stick around for a bit after next Wednesday’s class. I've added a TROUBLESHOOTING walk-through page to the BIT115 website if you are getting the jGRASP wedge2 PATH error. This should be fixed with the latest version of jGRASP, but just in case… IMPORTANT! Always download the.java files from the web site, save them to a local folder, and run them from there. If you try to run them directly off the site, they go in the browser cache and get renamed, and then things won't work! There are other issues to remember, which we'll cover in today's class. NOTE: It is essential that you get jGRASP working on your home machines or laptops if you are going to be successful in this class (unless you are going to do all your coding on the PCs here at the college). 2

3 3 Assignment 1 (LECTURE 5) Monday, April 20 Assignment 2 (LECTURE 8) Wednesday, April 29 Assignment 1 Revision (LECTURE 10) Wednesday, May 6 Assignment 2 Revision (LECTURE 12) Wednesday, May 13 Assignment 3 (LECTURE 13) Monday, May 18 Assignment 3 Revision (LECTURE 16) Monday, June 1 Assignment 4 (LECTURE 20) Wednesday, June 10 Assignment 4 Revision (LECTURE 21) Monday, June 15 Assignment Dates

4 Lecture 2 Announcements Attention: Windows 8 Users THIS SHOULD BE FIXED IN WINDOWS 8 NOW! But… If you are having trouble getting the software to install, one way to bring compatibility to install the Java SE JDK and jGrasp, etc, is to download and install a program called Classic Shell: http://download.cnet.com/Classic-Shell/3000-2072_4-75553853.html?tag=mncol;1 4

5 It's okay if right now you are feeling somewhat overwhelmed, nervous, confused, or just scared spitless! perfectly natural Hey! You're learning a new language (Java) and a new way of thinking about things, so it is perfectly natural if you're feeling a bit overwhelmed right now, or a bit nervous, or even a bit confused. Knowing this, we'll be taking baby steps for the next few lectures. I'll be holding your hand and walking you through Java and code step-by-step. So: Do not be afraid to ask questions! And: Do not be afraid to come see me during my office hours (or by special appointment). Also: please email me at cduckett@Cascadia.edu if you have any questions. If it concerns code that you are working on please remember to attach the.java file to the email so I can have a look to determine where a problem might be.cduckett@Cascadia.edu Finally: Once I know the exact days, times, and places, going to the Open Labs for additional one-on-one help is greatly encouraged! 5

6 Some Sites/Links of Interest Udacity – Free Online Courses Udacity MIT OpenCourseWare – Free Online Courses MIT OpenCourseWare Coursera – Free Online Courses Coursera Standford Engineering Everywhere – Online CS Courses Standford Engineering Everywhere Academic Earth – Online CS Courses Academic Earth Khan Academy – Free Online Tutorials Khan Academy Code Academy – Interactive Code Learning Code Academy Code School – Interactive Code Learning Code School CoderDoJo – Code Club Community CoderDoJo Code.org – Code Club Community Code.org Girls Who Code – Code Club Community Girls Who Code Girl Develop It – Code Club Community Girl Develop It 6

7 Reading Assignment for Today Chapter 1.5: Types of Errors Chapter 1.4.5 – Tracing Code Note : there are ‘BIT 115 Student Open Source Guides’ that students wrote from previous quarters that may deal with the various topics of your readings and lessons.BIT 115 Student Open Source Guides This is a great tool, and highly recommended! 7 Lecture 2 Announcements

8 8 Quarter-Long Game Plan: Up until the Mid-Term: –1 st part of the quarter Overview of topics, conceptual understanding, not as much free- form problem-solving After the Mid-Term: –2 nd part of the quarter Focus on learning and more problem-solving on your own

9 9 Save A Copy Of All Work (Highly recommended!) In-Class Exercises, Exams, Quizzes, etc. –If you work with someone, make sure each of you gets a copy –For In-Class Exercises, you do not have to turn it in (I’ll be checking it as I walk around and watch you work) If you lose track of it, and I unintentionally record it incorrectly in StudentTracker, then whatever I’ve got will stand as the grade. Best then to save your work for proof, if needed, in the event of a discrepancy. If you do find a grading error in StudentTracker, then please don't hesitate to let me know!

10 10 Quizzes and Exams Starting next lecture, you should assume that the quizzes and exams will all be 100% pen/pencil-and-paper. You bring the pen or pencil, I’ll supply the paper –Start Practicing Now (My Mantra: Practice! Practice! Practice!) Try writing code from memory, and/or using Notepad or NotePad++ and then copy-and-pasting into jGRASP to check your work

11 BIT 115: Introduction To Programming11 Assignment 1LECTURE 5 Assignment 1 is due LECTURE 5 Monday, April 20 th in StudentTracker, by midnight –It’s posted on the website under Assignments –It will be due by midnight on day of Lecture 5 If you are confused, bring your work to class, in electronic form, and we will go over how to hand in (upload) the homework: Student Tracker (We’ll go over this in a moment with “Rex Winkus”) How to Use Student Tracker (Instructions) Student Tracker How to Use Student Tracker If you’re stuck, seek help! –Talk to the Instructor or a classmate or Open Lab helper –Email me HOMEWORKHOMEWORK

12 12 A Quick "Peek" at Assignment 1 Let's Have a Quick Look at Assignment 1 (so there are no unforeseen “surprises” down the road!) Assignment 1 is due LECTURE 5: Monday, April 20 th (uploaded to StudentTracker by midnight) What You Need To Turn In to StudentTracker for A1

13 StudentTracker Walk-Through 13

14 BIT 115: Introduction To Programming14 And now …. The Quiz! We will have our very first 'warm-up' Quiz starting next Monday NO Warm-Up QUIZ TODAY Student Tracker Instead, We looked at Student Tracker…

15 BIT 115: Introduction To Programming15 Today’s Topics Errors: How to find and fix them Dissecting the Code: What it means and what it does –opening and working with.java Files How to set up a City Tracing Code –Predicting What A Program Will Do BEFORE you Run It Important Java and OOP Terms –like Class, Object, Method, Parameter, etc

16 Three Types of Errors 16

17 Chapter 1.5: Types of Errors 17 3 Different General Categories of Errors: Compile-Time Errors (or Syntax Errors) Run-Time Errors (or Application Errors) Intent Errors (or Logical Errors)

18 An Historical Side Trip: Why Are Bugs Called Bugs? 18 Use of the term "bug" to describe inexplicable defects has been a part of engineering jargon for many decades and predates computers and computer software; it may have originally been used in hardware engineering to describe mechanical malfunctions. For instance, Thomas Edison wrote the following words in a letter to an associate in 1878:Thomas Edison In 1946, when computer pioneer Grace Hopper joined the Harvard Faculty at the Computation Laboratory to work on the Mark II and Mark III computers. Operators traced an error in the Mark II to a moth trapped in a relay, coining the term “bug.” This bug was carefully removed and taped to the log book. Stemming from the first bug, today we call errors or glitches in a program a bug.Grace HopperMark IIMark III It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, then difficulties arise — this thing gives out and [it is] then that "Bugs" — as such little faults and difficulties are called — show themselves and months of intense watching, study and labor are requisite before commercial success or failure is certainly reached.

19 19

20 Compile-Time Errors (or Syntax Errors) 20 Anything that goes wrong when you compile the file is a compile-time error! Point out that the Output Panel is often small, but it can be resized, and you should get used to figuring out which line the error pertains to. Java is case sensitive - Java is different from java, is different from JaVa - This means you must type in names, etc, EXACTLY the same File name MUST be the same as the class name that has the main method You need the import becker.robots.*; at the top of each robot file Forgetting to Compile BEFORE Running - You need to compile the file EVERY SINGLE TIME you change it - You should also wait UNTIL the compilation finishes BEFORE trying to run it Strategy For Fixing Compile-Time Errors: Follow the debugging strategy (listed in your text) to find and correct the syntax errors in the FindErrors.java program later this evening when you do your In-Class Exercises. 1. Compile the program to get a list of errors; 2. Fix the most obvious errors, beginning with the first error reported 3. Compile the program again to get a revised list of the remaining errors.

21 Run-Time Errors (Application/Crashing Errors) 21 Anything that causes the program to crash while it's running. If you encounter a run-time error when you are compiling and running your Java programs, then this would be a jGrasp problem, or a Windows Operating System problem, and NOT a Java Problem. The Java language does a lot to protect you from this type of error, so you shouldn't see many of these. Intent Errors (Logical Errors) The program compiles and runs without crashing, but it doesn't do what you want it to. Example: - Robot takes an extra leftTurn, and runs off the screen - Robot doesn't pick up a Thing when it's supposed to. - Robot collides with a Wall (the book calls this a run-time error, but it technically isn’t) As you continue learning to code you'll make fewer "typo" type mistakes, and end up with more Intent errors then Compile-Time errors. You need to come up with a personal strategy to figure out where the Intent problems are, and how to fix them. One Option: Use a Program Debug Table (show where this is on web site) Program Debug Table

22 Lecture 2 ICE: Finding And Fixing Errors In Your Program BIT 115: Introduction To Programming22 In-Class Exercise Directions 2.1 In-Class Exercise Directions FindErrors.java Program Debug Table We'll Wait and Do All the ICEs Together at the End of Lecture

23 Dissecting the Code 23

24 24 Downloading and Working On.java Files Under Course Wide Information If you have the Java JDK and jGRASP properly installed, the.java files you download from the BIT115 web site should be associated with jGRASP. This means they will appear with with jGRASP “G” icon. Typically, all you have to do to open a.java file is to simply double-click on it and it will open automatically in jGRASP..java Files Should Be Associated to jGRASP Important Always download the.java files from the web site first to a folder on your computer or USB thumb drive before opening and working on them. If you work on files from the browser cache, the file names can be changed and then the class name will no longer match up and your programs won’t run correctly. Also the browser cache likes to append numbers to the file name if you have already downloaded that file previously, which also means the class name won’t match the file name. Alternatively, you can open jGRASP and select the file from the menu bar through File > Open or else to the simply drag-and-drop the file into the work window.

25 Dissecting the Code: What It Means and What It Does (Quiz2.java) 25 1 import becker.robots.*; 2 3 4 public class Quiz2 extends Object 5 { 6 public static void main(String[] args) 7 { 8 City toronto = new City(); 9 10 Robot Jo = new Robot(toronto, 0, 3, Direction.NORTH, 0); 11 12 new Thing(toronto, 2, 2); 13 new Wall(toronto, 3, 3, Direction.EAST); 14 new Wall(toronto, 3, 3, Direction.NORTH); 15 new Wall(toronto, 3,3, Direction.SOUTH); 16 17 Jo.turnLeft(); 18 19 } 20 }

26 import becker.robots.*; 26 This imports from the becker.jar collection all the classes contained in the robots file so they would be functionally available in Java (JDK) and any code written using it. These classes include the Robot.class, the Thing.class, the City.class, the Wall.class, and over a hundred more. NOTE: Java loads some classes by default into the compiler, while others it does not. Later on we will have to import additional Java classes in our code to get our programs to work becker.jar http://www.learningwithrobots.com/doc/

27 public class Quiz2 extends Object 27 Java, like other object-orientated languages, supports class inheritance. Inheritance allows one class to "inherit" the properties of another class. For example, all Java objects are inherited from the java.lang.Object class which is a fundamental part of Java and the Java libraries. Our Quiz2 class is inheriting the properties of Java's Object class, and so extends its actions and attributes in the program hierarchy. 'public' so other classes can use it. public class Quiz2 extends Object a 'class' is a blueprint for making 'objects' that can do something 'Quiz2' is the name of the class. It can be any name (but must match file name if it contains main). The program uses this name when it runs to know what 'objects' and 'methods' to use in the program. http://www.tutorialspoint.com/java/java_object_classes.htm

28 public static void main(String[ ] args) 28 The method is public because it is accessible to the JVM (Java Virtual Machine) to begin execution of the program, and can be accessed by any other class or method. The static keyword signifies the fact that this method can be invoked without creating an instance of that class (an object). Main is called before any objects are made, hence static. void signifies that this method does not return anything. In other words no new or altered data is sent out from it for use by the rest of the program. Nothing is returned, so void. Just like in the C “procedural” language and other languages, this is the main method in a Java program. When you run a Java program, execution begins in the main method. String is the data type that could be passed to the method, although no data type needs to be passed. An example of a data type is an int or float. The [] represents unknown quantity. args is the name of the parameter. We can pass any number of arguments to this method. Note Note: main is a method() inside a Class

29 City toronto = new City(); 29 We want to make a new instance of the City class (City.class) found in the becker > robots directory (inside becker.jar) and call this new object Toronto The City class contains all the attributes and actions necessary to set up a city when a named city object (like toronto) is created, include shape, size, color, streets, avenues, etc. By itself, the City class can't do anything. It's just a collections of ideas and concepts. You need an object made from the City class (like toronto here) to actually do something with a city. Names the object  Creates the new City object NOTE: In Java, '=' is an assignment operator, and points right to left; "==" is an equals sign. EXAMPLE: x = 1 assigns 1 to variable space x and x == 1 means x equals 1.

30 30 1 import becker.robots.*; 2 3 4 public class Quiz2 extends Object 5 { 6 public static void main(String[] args) 7 { 8 City toronto = new City(); 9 10 Robot Jo = new Robot(toronto, 0, 3, Direction.NORTH, 0); 11 12 new Thing(toronto, 2, 2); 13 new Wall(toronto, 3, 3, Direction.EAST); 14 new Wall(toronto, 3, 3, Direction.NORTH); 15 new Wall(toronto, 3,3, Direction.SOUTH); 16 17 Jo.turnLeft(); 18 19 } 20 }

31 Robot Jo = new Robot(toronto, 0, 3, Direction.NORTH, 0); 31 Our instance of the Robot object is named Jo Jo is placed in a City called Toronto Jo is starting out on Street 0 Jo is starting out on Avenue 3 Jo is starting out facing North Jo is starting out with 0 (zero) Things in its backpack Now, another way to "construct" this is with only four parameters, by leaving on the number of Things in the backpack Names the Robot  Creates the new Robot using five parameters Robot Jo = new Robot(toronto, 0, 3, Direction.NORTH); If you are not going to be picking up or putting down Things in your program, then you can "construct" your Robot without this fifth 'backpack' parameter. Later on, when we start creating our own types of Robots and methods, some of the ICES will be set up in such a way that parts of the code will use five parameters and other parts of the code will use four parameters and this will cause an error. We'll go over this in greater detail when the time comes. http://www.learningwithrobots.com/doc/

32 BIT 115: Introduction To Programming32 new Thing(toronto, 2, 2); new Wall(toronto, 3, 3, Direction.EAST); new Wall(toronto, 3, 3, Direction.NORTH); new Wall(toronto, 3, 3, Direction.SOUTH); These will work by default. For stuff that just sits there, we don’t have to actually give them unique names (e.g., BrickWall) but we can’t talk about them in code, however a Robot can pick up/put down an unnamed object. Why would you want to give a wall a unique name? If you look at the becker library you will discover that Wall actually extends Thing, that is to say Wall has inherited all the initial properties of Thing Jo.turnLeft(); turnLeft() is one of the methods of the Robot class, along with move(), pickThing(), putThing(), frontIsClear(), countThingsInPackback(), and several more. Because Robot can turn left, Jo can turn left.

33 Something to Remember: In parameter order, street comes first and avenue comes second. Streets go West-East (left-right) Avenues go North-South (up-down) A neat trick to remember the difference is to recall that the 'A' and 'V' in Avenue point up and down.

34 Lecture 2 ICE: Setting Up a City BIT 115: Introduction To Programming34 In-Class Exercise Directions 2.2 Starting_Template.java We'll Wait and Do All ICEs Together at the End of Lecture

35 Chapter 1.4.5 – Tracing Code BIT 115: Introduction To Programming35

36 BIT 115: Introduction To Programming36

37 BIT 115: Introduction To Programming37

38 Important Terms to Remember 38

39 BIT 115: Introduction To Programming39 Some Important Terms To Remember Under Course Wide Information An object receives all of the characteristics of a class, including all of its default data and any actions that can be performed by its functions. The object is for use with specific data or to accomplish particular tasks. A method simply refers to a function that is encased in a class. It usually entails an action. A parameter is a variable that is passed into a function that instructs it how to act or gives it information to process. Parameters are also sometimes called arguments. A field or property is a default set of data stored in a class. A class can have multiple properties and can be changed dynamically through the methods of the class. These are sometimes called attributes. Inheritance is one of the keys that make OOP tick. Simply put, classes can inherit methods and fields from other classes by extending them and each class can be extended by multiple classes. This means that you can start with a base (or parent) class that contains shared characteristics among several classes. That base class can then be extended by other classes (children) that are similar but are meant for slightly different purposes. Any changes in the parent class will automatically cascade to its children. A class is a set of functions that can work together to accomplish a task. It can contain or manipulate data, but it usually does so according to a pattern rather than a specific implementation. An instance of a class is considered an object. Until an object is instantiated from a class, the class can’t actually do anything.

40 BIT 115: Introduction To Programming40 Class Class (The “Idea” of Features and Functions) Under Course Wide Information The Robot class. The Robot class contains all the features and functions that a robot might have once it is created (or instantiated) as an object. Until then, all the Robot features and functions are just the idea how a robot might work, but being an idea the class doesn’t do any work itself.. Just like we might have an idea how a car should look and operate—body, engine, four tires, steering wheel, gas and brake pedals, etc—an idea of a car is not the same of an actual working car. Here the idea of a car is a class, and an actual working car is an object. A class is a collection of functions that can work together to accomplish a task. It can contain or manipulate data, but it usually does so according to a pattern rather than a specific implementation. An instance of a class is considered an object. Until an object is instantiated from a class, the class can’t actually do anything. Example http://www.learningwithrobots.com/doc/

41 41 "Car" Class "Car" Object "Engine" "Chassis" "Wheels" "Brakes" "Power" "Transmission" "Seats" "Lights"

42 42 "Car" Class "Car" Object "Engine" "Chassis" "Wheels" "Brakes" "Power" "Transmission" "Seats" "Lights" No "Wings” Here

43 BIT 115: Introduction To Programming43 Object Object (An Instance of the “Idea” Made Actionable) Under Course Wide Information When we create an object from the Robot class we do so by creating a named instance of the Robot class that will possess all the features and functions that were outlined as belonging to the Robot class as an idea. Once the object is instantiated, what was once the idea of a Robot now becomes an actual Robot that possesses specific ‘Robot’ properties (its shape, size, color, speed) and that can perform specific ‘Robot’ actions (like move, turn left, put down a thing, pick up a thing, etc). Example An object receives all of the characteristics of a class, including all of its default data and any actions that can be performed by its functions. The object is for use with specific data or to accomplish particular tasks. http://www.learningwithrobots.com/doc/

CSI 1306 Computing Concepts for Business (3 units)

Introduction to computer-based problem solving from the perspective of the business world. Design of algorithms for solving business problems. Basics of computer programming in a modern programming language. Solving business problems using application packages including spreadsheets and databases. Basics of web design. Collaborative tools. Using open source software.

CSI 1308 Introduction to Computing Concepts (3 units)

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.

CSI 1390 Introduction to Computers (3 units)

Computing and computers. Problem solving and algorithm development. Introduction to programming. Use of application, communication, and database software.

CSI 1706 Éléments de programmation pour la gestion (3 crédits)

Introduction aux méthodes de résolution informatisées dans le cadre du monde des affaires. Conception d'algorithmes pour résoudre des problèmes d'affaires. Éléments de base de programmation dans un langage de programmation moderne. Résolution de problèmes d'affaires à l'aide d'applications telles que les tableurs et les bases de données. Éléments de base de la conception pour le web. Outils de collaboration. Utilisation de logiciel libre.

CSI 1708 Introduction aux concepts de l'informatique (3 crédits)

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.

CSI 1790 Introduction aux ordinateurs (3 crédits)

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.

CSI 2101 Discrete Structures (3 units)

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.

CSI 2110 Data Structures and Algorithms (3 units)

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.

CSI 2120 Programming Paradigms (3 units)

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.

CSI 2132 Databases I (3 units)

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.

CSI 2372 Advanced Programming Concepts With C++ (3 units)

Differences between C++ and Java programming. C++ data types. Pointers and memory management. Object oriented programming in C++. File and stream I/O. Pre-processor macros. Templates and the Standard Template Library. Numerical computation in C++. Interfacing with hardware. Engineering applications.

CSI 2501 Structures discrètes (3 crédits)

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.

CSI 2510 Structures de données et algorithmes (3 crédits)

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.

CSI 2520 Paradigmes de programmation (3 crédits)

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.

CSI 2532 Bases de données I (3 crédits)

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)

CSI 2772 Concepts avancés de programmation en C++ (3 crédits)

Différences entre la programmation Java et la programmation C++. Pointeurs et gestion de la mémoire. Programmation orientée objet en C++. Entrée-sortie des fichiers et flux de données. Macros du préprocesseur. Classes génériques et bibliothèque STL. Calcul numérique en C++. Interfaçage avec le matériel. Applications d'ingénierie.

CSI 2911 Pratique professionnelle de l'informatique / Professional Practice in Computing (3 crédits / 3 units)

Professionnalisme en informatique. Pratique éthique. Propriété intellectuelle. Répercussions sociales de l'informatique. Confidentialité et aspects légaux. / Professionalism in Computer Science. Ethical practice. Intellectual property rights. Social impact of computing. Privacy and legal issues.

CSI 3104 Introduction to Formal Languages (3 units)

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.

CSI 3105 Design and Analysis of Algorithms I (3 units)

Analysis of algorithms: worst-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.

CSI 3120 Programming Language Concepts (3 units)

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.

CSI 3130 Databases II (3 units)

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.

CSI 3131 Operating Systems (3 units)

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.

CSI 3140 WWW Structures, Techniques and Standards (3 units)

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 o ontologies. Web services.

CSI 3504 Introduction aux langages formels (3 crédits)

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.

CSI 3505 Conception et analyse des algorithmes I (3 crédits)

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.

CSI 3520 Concepts des langages de programmation (3 crédits)

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.

CSI 3530 Bases de données II (3 crédits)

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).

CSI 3531 Systèmes d'exploitation (3 crédits)

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.

CSI 3540 Structures, techniques et normes du Web (3 crédits)

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.

CSI 4101 Theory of Computability (3 units)

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.

CSI 4103 Topics in Computer Science I (3 units)

Selected topics in areas not covered by regular courses.

CSI 4104 Topics in Computer Science II (3 units)

Selected topics in areas not covered by regular courses.

CSI 4105 Design and Analysis of Algorithms II (3 units)

Theory of NP-completeness, methods for dealing with NP-complete problems. Selected topics in such areas as combinatorial optimization, computational geometry, cryptography, parallel algorithms.

CSI 4106 Introduction to Artificial Intelligence (3 units)

The roots and scope of Artificial Intelligence. Knowledge and knowledge representation. Search, informed search, adversarial search. Deduction and reasoning. Uncertainty in Artificial Intelligence. Introduction to Natural Language Processing. Elements of planning. Basics of Machine Learning.

CSI 4107 Information Retrieval and the Internet (3 units)

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.

CSI 4108 Cryptography (3 units)

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 indistinguishable and unpredictability. Digital signature and message authentication. Zero-knowledge/interactive proof systems. Application to e-commerce and e-trade.

CSI 4109 Introduction to Distributed Computing (3 units)

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.

CSI 4115 Introduction to Compilers (3 units)

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.

CSI 4118 Computer Networks Protocols (3 units)

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.

CSI 4124 Foundation of Modelling and Simulation (3 units)

The modelling and simulation process from a project oriented perspective. The role of conceptual modelling in the discrete event dynamic system context. Dealing with randomness. Distinctive features of modelling and simulation for continuous time dynamic systems and overview of numerical procedures. Validation and verification. Simulation software and program development.

CSI 4125 Theory of Programming Languages (3 units)

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.

CSI 4126 Algorithms in Bioinformatics (3 units)

DNA assembly, gene finding methods, exact string matching, pairwise alignment, grammatical frameworks, higher order structures. Recent developments, including DNA and protein chips.

CSI 4130 Computer Graphics (3 units)

Interactive computer graphics. Display data structures and procedures. Graphics pipeline. Geometric transformations. Viewing in three dimensions. Illumination and color models. Object modelling in 2D and 3D.

CSI 4133 Computer Methods in Picture Processing and Analysis (3 units)

Representation of digital pictures. Elements of visual perception. Imaging geometry. Image enhancement and image restoration. Image segmentation and feature identification. Content-based analysis of images. Images compression, compression standards and graphics file format.

CSI 4134 Pattern Recognition Technics (3 units)

Review of mathematical aspects of pattern classification in the context of picture processing languages. Practical examples in pattern recognition.

CSI 4139 Design of Secure Computer Systems (3 units)

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.

CSI 4140 Introduction to Parallel Computing (3 units)

Models of parallel computation. Architecture of parallel computers. Interconnection networks. Communication primitives. MPI, OpenMP. Principles of parallel algorithm design. Partitioning strategies. Load balancing. Analytical modeling of parallel programs. Parallel linear algebra. Parallel sorting. Parallel graph algorithms. Parallel searching.

CSI 4141 Real Time Systems Design (3 units)

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.

CSI 4142 Introduction to Data Science (3 units)

Big data, analytics, and cloud computing; data preparation: organization, basic statistics, cleaning, and integration; data mining techniques: pattern mining, classification, clustering, outlier and anomaly detection; model evaluation; data warehousing and multi-dimensional analysis; data visualization and visual data analytics.

CSI 4150 Introduction to Optimization Methods (3 units)

Linear optimization models and their solution. Modelling techniques for linear programming problems, the simplex solution method, duality theory, sensitivity analysis, interior point methods. Formulation of problems as integer linear programs, solution methods such as branch and bound and cutting plane algorithms.

CSI 4501 Théorie de la calculabilité (3 crédits)

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é.

CSI 4503 Sujets en informatique I (3 crédits)

Sujets choisis dans des domaines non couverts par les cours réguliers.

CSI 4504 Sujets en informatique II (3 crédits)

Sujets choisis dans des domaines non couverts par les cours réguliers.

CSI 4505 Conception et analyse des algorithmes II (3 crédits)

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.

CSI 4506 Introduction à l'intelligence artificielle (3 crédits)

Concepts et méthodes de base de l'intelligence artificielle. Connaissances et représentation des connaissances. Recherche, recherche stratégique, jeux de stratégie. Raisonnement et déduction. Incertitude en intelligence artificielle. Introduction au traitement du langage naturel. Éléments de base de la planification. Éléments de base de l'apprentissage automatique.

CSI 4507 Recherche d'information et l'Internet (3 crédits)

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.

CSI 4508 Cryptographie (3 crédits)

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.

CSI 4509 Introduction au calcul réparti (3 crédits)

Modèles de calcul. Complexité de communication. Conception et analyse d'algorithmes 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.

CSI 4515 Introduction aux compilateurs (3 crédits)

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.

CSI 4518 Réseaux d'ordinateurs et protocoles (3 crédits)

Services de communication, protocoles et logiciels. Détails des hiérarchies 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.

CSI 4524 Principes de base de modélisation et simulation (3 crédits)

Le processus de la modélisation et la simulation de la perspective d un projet. Le rôle de la modélisation conceptuelle dans le contexte de système dynamique d évènements discrets. Composer avec des phénomènes aléatoires. Les caractéristiques particulières de la modélisation et simulation pour les systèmes dynamiques à temps continu et un survol des procédures numériques. Validation et vérification. Logiciel de simulation et le développement de programmation.

CSI 4525 Théorie des langages de programmation (3 crédits)

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.

CSI 4526 Algorithmes en bio-informatique (3 crédits)

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.

CSI 4530 Graphiques interactifs (3 crédits)

Infographie interactive. Structures de données et procédures d'affichage. Pipeline graphique. Transformations géométriques. Représentation en trois dimensions. Modèles de couleur et d'illumination. Modélisation d'objets en deux et trois dimensions.

CSI 4533 Méthodes informatisées en traitement d'image (3 crédits)

CSI 4534 Techniques de reconnaissance des formes (3 crédits)

É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.

CSI 4539 Conception de systèmes informatiques sécuritaires (3 crédits)

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.

CSI 4540 Introduction au calcul parallèle (3 crédits)

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.

CSI 4541 Conception de systèmes en temps réel (3 crédits)

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.

CSI 4542 Introduction à la science des données (3 crédits)

Données massives, analyse de données et infonuagique; préparation des données : organisation, statistiques de base, nettoyage et intégration des données; techniques d'exploration de données, exploration des motifs, classification, partionnement des données, détection des données aberrantes, évaluation des modèles, entreposage des données et analyse multidimensionnelle, visualisation des données, analyse des données visuelles.

CSI 4550 Introduction aux méthodes d'optimisation (3 crédits)

Modèles d'optimisation linéaire et leurs solutions. Techniques de modélisation des problèmes de programmation linéaire, les solutions par la méthode du simplex, théorie de la dualité, analyse de sensibilité, méthodes de point intérieur. Formulation de problèmes par programmation linéaire en nombres entiers, méthodes de résolution telles que les algorithmes de coupes et les algorithmes de séparation et évaluation.

CSI 4900 Projet de recherche / Honours Project (3 crédits / 3 units)

Un projet d'une durée d'un semestre, à faire seul ou en petit groupe, sous la supervision d'un professeur. Les projets sont affichés et sont choisis durant le semestre précédent. Les étudiants doivent participer aux présentations des projets, cédulées à la fin du semestre. / 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.

CSI 5100 Data Integration (3 units)

Materialized and virtual approaches to integration of heterogeneous and independent data sources. Emphasis on data models, architectures, logic-based techniques for query processing, metadata and consistency management, the role of XML and ontologies in data integration; connections to schema mapping, data exchange, and P2P systems. This course is equivalent to COMP 5306 at Carleton University.

CSI 5101 Knowledge Representation (3 units)

KR is concerned with representing knowledge and using it in computers. Emphasis on logic-based languages for KR, and automated reasoning techniques and systems; important applications of this traditional area of AI to ontologies and semantic web. This course is equivalent to COMP 5307 at Carleton University.

CSI 5102 Topics in Medical Computing (3 units)

Introductory course on data structures, algorithms, techniques, and software development related to medical computing (in particular spatial modeling). Topics may include: computational geometry algorithms for cancer treatment, medical imaging, spatial data compression algorithms, dynamic programming for DNA analysis. Courses CSI 5102, CSI 5140 (COMP 5900) cannot be combined for units. This course is equivalent to COMP 5308 at Carleton University.

CSI 5103 Topic in Information and Systems Science (3 units)

CSI 5105 Network Security and Cryptography (3 units)

Advanced methodologies selected from symmetric and public key cryptography, network security protocols and infrastructure, identification, secret-sharing, anonymity, intrusion detection, firewalls, defending network attacks and performance in communication networks. This course is equivalent to COMP 5406 at Carleton University.

CSI 5106 Cryptography (3 units)

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. Additional work required of students enrolled in CSI 5106.

CSI 5110 Principles of Formal Software Development (3 units)

Methodologies in formal software specification, development, and verification. The use of theorem proving, automated deduction, and other related formal methods for software correctness. Applications in program verification, mobile code safety, and protocol verification. This course is equivalent to COMP 5707 at Carleton University.

CSI 5111 Software Quality Engineering (3 units)

Software quality issues. Quality components and metrics. Software process quality. Software reliability engineering. Software design for testability. Requirements capture and validation. Systematic design validation; grey-box approach, test design, implementation and management, case studies in validation and verification of communications software. Object-oriented design and test. Theoretical aspects. This course is equivalent to COMP 5501 at Carleton University.

CSI 5112 Software Engineering (3 units)

Topics of current interest in Software Engineering, such as software development systems, structured systems analysis and design, management of software, software tools, validation and verification, programming environments. This course is equivalent to COMP 5207 at Carleton University.

CSI 5113 Foundations Programming Languages (3 units)

Advanced study of programming paradigms from a practical perspective. Paradigms may include functional, imperative, concurrent, distributed, generative, aspect- and object-oriented, and logic programming. Emphasis on underlying principles. Topics may include: types, modules, inheritance, semantics, continuations, abstraction and reflection. This course is equivalent to COMP 5001 at Carleton University.

CSI 5115 Database Analysis and Design (3 units)

The dimensional and multidimensional data models for data warehousing. Data dependencies and decompostition. Structure and use of data definition and manipulation languages. Database economics, engineering, deployment and evolution. Issues in integrity, security, the Internet and distributed databases. Relationships to decision support systems. This course is equivalent to COMP 5503 at Carleton University.

CSI 5116 Authentication and Software Security (3 units)

Specialized topics in security including advanced authentication techniques, user interface aspects, electronic and digital signatures, security infrastructures and protocols, software vulnerabilities affecting security, non-secure software and hosts, protecting software and digital content. This course is equivalent to COMP 5407 at Carleton University.

CSI 5117 Mini-Microcomputer Operating Systems Design (3 units)

CSI 5118 Automated Verification and Validation of Software (3 units)

Topics in formal test derivation methods, test management, high-level, CASE-based verification and validation, data-flow & control-flow measures and metrics for assessing quality of designs and code, regression analysis & testing. This course is equivalent to COMP 5302 at Carleton University.

CSI 5121 Advanced Data Structures (3 units)

Simple methods of data structure design and analysis that lead to efficient data structures for several problems. Topics include randomized binary search trees, persistence, fractional cascading, self-adjusting data structures, van Emde Boas trees, tries, randomized heaps, and lowest common ancestor queries. This course is equivalent to COMP 5408 at Carleton University.

CSI 5122 Software Usability (3 units)

Design principles and metrics for usability. Qualitative and quantitative methods for the evaluation of software system usability: Heuristic evaluation, usability testing, usability inspections and walkthroughs, cognitive walkthroughs, formal usability experimentation. Ethical concerns when performing studies with test users. Economics of usability. Integration of usability engineering into the software engineering lifecycle. This course is equivalent to COMP 5301 at Carleton University.

CSI 5124 Computational Aspects of Geographic Information Systems (3 units)

Computational perspective of geographic information systems (GIS). Data representations and their operations on raster and vector devices: e.g., quadtrees, grid files, digital elevation models, triangular irregular network models. Analysis and design of efficient algorithms for solving GIS problems: visibility queries, point location, facility location. This course is equivalent to COMP 5204 at Carleton University.

CSI 5126 Algorithms in Bioinformatics (3 units)

Fundamental mathematical and algorithmic concepts underlying computational molecular biology; physical and genetic mapping, sequence analysis (including alignment and probabilistic models), genomic rearrangement, phylogenetic inference, computational proteomics and systemics modelling of the whole cell. This course is equivalent to COMP 5108 at Carleton University.

CSI 5127 Applied Computational Geometry (3 units)

Computer-based representation and manipulation of geometric objects. Design and analysis of efficient algorithms for solving geometric problems in applied fields such as Computer-Aided Design and Manufacturing, Cartography, Materials Science, and Geometric Network Design. This course is equivalent to COMP 5409 at Carleton University.

CSI 5128 Swarm Intelligence (3 units)

Collective computation, collective action, and principles of self-organization in social agent systems. Algorithms for combinatorial optimization problems, division of labour, task allocation, task switching, and task sequencing with applications in security, routing, wireless and ad hoc networks and distributed manufacturing. This course is equivalent to COMP 5002 at Carleton University.

CSI 5129 Advanced Database Systems (3 units)

In-depth study on developments in database systems shaping the future of information systems, including complex object, object-oriented, object-relational, and semi-structured databases. Data structures, query languages, implementation and applications. This course is equivalent to COMP 5305 at Carleton University.

CSI 5130 Applications Design for Mobile Devices (3 units)

Programming environments for mobile devices applications: native applications and web applications. User interface, multitouch screens, accelerometer, geo-localization, multi-networks interfaces, camera, digital signal processing. Enterprise applications development. Device-specific and carrier-specific challenges. Methods for dealing with limited memory, speed and storage. Power management. Security. Deployment and distribution of applications.

CSI 5131 Parallel Algorithms and Applications in Bioinformatics (3 units)

Multiprocessor architectures from an application programmer's perspective: programming models, processor clusters, multi-core processors, GPUs, algorithmic paradigms, efficient parallel problem solving, scalability and portability. Projects on high performance computing in Data Science, including data analytics, bioinformatics, simulations. Programming experience on parallel processing equipment. This course is equivalent to COMP 5704 at Carleton University.

CSI 5134 Fault Tolerance (3 units)

Hardware and software techniques for fault tolerance. Topics include modeling and evaluation techniques, error detecting and correcting codes, module and system level fault detection mechanisms, design techniques for fault-tolerant and fail-safe systems, software fault tolerance through recovery blocks, N-version programming, algorithm-based fault tolerance, checkpointing and recovery techniques, and survey of practical fault-tolerant systems. This course is equivalent to COMP 5004 at Carleton University.

CSI 5135 Information Visualization and Visual Analytics (3 units)

Principles, techniques, technology and applications of information visualization for visual data analysis. Topics include human visual perception, cognitive processes, static and dynamic models of image semantics, interaction paradigms, big data visual analysis case studies. This course is equivalent to COMP 5209 at Carleton University.

CSI 5136 Computer Security and Usability (3 units)

Design and evaluation of security and privacy software with particular attention to human factors and how interaction design impacts security. Topics include current approaches to usable security, methodologies for empirical analysis, and design principles for usable security and privacy. This course is equivalent to COMP 5110 at Carleton University.

CSI 5140 Selected Topics in Computer Science (3 units)

Selected topics, not covered by other graduate courses. Details will be available from the School at the time of registration. This course is equivalent to COMP 5900 at Carleton University.

CSI 5142 Protocols for Mobile and Wireless Networks (3 units)

Link and network layer protocols of wireless networks; applications of wireless networks may be discussed. Topics may include: protocol implementation, mobile IP, resource discovery, wireless LANs/PANs, and Spreadspectrum. Courses CSI 6136 (SYSC 5306), CSI 5142 (COMP 5402) cannot be combined for units. This course is equivalent to COMP 5402 at Carleton University.

CSI 5146 Computer Graphics (3 units)

Principles and advanced techniques in rendering and modelling. Research field overview. Splines, subdivision surfaces and hierarchical surface representations. Physics of light transport, rendering equation and Bidirectional Reflectance Distribution Function. Classical ray tracing, radiosity, global illumination and modern hybrid methods. Plenoptic function and image-based rendering. This course is equivalent to COMP 5402 at Carleton University.

CSI 5147 Computer Animation (3 units)

Theories and techniques in 3D modeling and animation. Animation principles, categories, and history. Forward and inverse kinematics. Motion capture, editing and retargeting. Flexible bodies. Particle animation. Behavioral animation. Human modeling. Facial animation. Cloth animation and other sub-topics. This course is equivalent to COMP 5201 at Carleton University.

CSI 5148 Wireless Ad Hoc Networking (3 units)

Self-organized, mobile, and hybrid ad hoc networks. Physical, medium access, networks, transport and application layers, and cross-layering issues. Power management. Security in ad hoc networks. Topology control and maintenance. Data communication protocols, routing and broadcasting. Location service for efficient routing. This course is equivalent to COMP 5103 at Carleton University.

CSI 5149 Graphical Models and Applications (3 units)

Bayesian networks, factor graphs, Markov random fields, maximum a posteriori probability (MAP) and maximum likelihood (ML) principles, elimination algorithm, sum-product algorithm, decomposable and non-decomposable models, junction tree algorithm, completely observed models, iterative proportional fitting algorithm, expectation- maximization (EM) algorithm, iterative conditional modes algorithm, variational methods, applications. Courses CSI 5149 (COMP 5007), ELG 5131 (EAGJ 5131) and ELG 7177 (EACJ 5605) cannot be combined for units. This course is equivalent to COMP 5007 at Carleton University.

CSI 5151 Virtual Environments (3 units)

Basic concepts. Virtual worlds. Hardware and software support. World modeling. Geometric modeling. Light modeling. Kinematic and dynamic models. Other physical modeling modalities. Multi-sensor data fusion. Anthropomorphic avatars. Animation: modeling languages, scripts, real-time computer architectures. Virtual environment interfaces. Case studies. Courses ELG 5124 (EACJ 5204), CSI 5151 (COMP 5205) cannot be combined for units. This course is equivalent to COMP 5205 at Carleton University.

CSI 5152 Evolving Information Networks (3 units)

Convergence of social and technological networks with WWW. Interplay between information content, entities creating it and technologies supporting it. Structure and analysis of such networks, models abstracting their properties, link analysis, search, mechanism design, power laws, cascading, clustering and connections with work in social sciences. This course is equivalent to COMP 5310 at Carleton University.

CSI 5153 Data Management for Business Intelligence (3 units)

One thought on “Iti1120 Assignment Discovery

Leave a comment

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *