uwloo

Computer Science (CS)

91 courses in Waterloo’s course catalog for 2021–22 (Fall 2021, Winter 2022, Spring 2022), from UW Open Data. ucalendar asks programs not to read that year’s calendar, so this stands in for it. Original: ucalendar.uwaterloo.ca/2122/COURSE/course-CS.html

CS 100 Introduction to Computing through Applications

Using personal computers as effective problem solving tools for the present and the future. Effective use of spreadsheets to process, manipulate, and visualize numeric and textual information. Introduction to the Internet, World Wide Web, HTML, and XML. Algorithms underlying the functional components of web search engines and their influence on data access. Using wikis to publish, reshape, and organize data collaboratively. [Offered: F,W,S]

Prereq: Not open to Mathematics,Biomedical,Chemical,Civil,Computer & Electrical,Environmental,Geological,Management,Mechanical,Mechatronics,Nanotechnology & Systems Design Eng students. Antireq: All second,third or fourth year CS courses or equivalents

LEC · Course ID 004360On ucalendarCS 100 today

CS 102W Information Processing with Microcomputer Systems

WLU cross registration

LEC · Course ID 012271On ucalendarCS 102W today

CS 104W Introduction to Programming (WLU)

LEC · Course ID 013781On ucalendarCS 104W today

CS 105 Introduction to Computer Programming 1

An introduction to the fundamentals of computer programming through media computation. Students will learn to write interactive graphical programs. Fundamental language concepts such as variables, conditionals, loops, functions, and arrays. Programming concepts such as coding style, modular design, testing, and debugging. Media concepts such as 2D graphics drawing, input, animation, and image processing. [Offered: F]

Prereq: Not open to Mathematics students. Antireq: BME 121, CS 115, 135, 137, 145, CHE 121, CIVE 121, ECE 150, GENE 121, NE 111, MSCI 121, PHYS 236, SYDE 121

LEC · Course ID 015054On ucalendarCS 105 today

CS 106 Introduction to Computer Programming 2

A continuation of the introduction to computer programming begun in CS 105. The use of programming, in conjunction with libraries, as a means of solving practical problems in art, design, and data processing. Basic text processing, manipulation of images and sound, handling and visualization of tabular and hierarchical data. Introductions to user interfaces, physical simulation, and object-oriented programming. [Offered: W]

Prereq: CS 105; Not open to Mathematics students. Antireq: BME 121, CS 115, 135, 137, 145, CHE 121, CIVE 121, ECE 150, GENE 121, NE 111, MSCI 121, SYDE 121

LEC · Course ID 015055On ucalendarCS 106 today

CS 114 Principles of Computing for Science

Introduction to basic imperative programming principles; programming concepts including functions, flow control, lists, arrays; numerical accuracy and efficiency; data analysis and general-purpose algorithms. Introduction to object-oriented programming concepts.

Prereq: Not open to Faculty of Math students. Antireq: CS 116, 135, 136, 137, 138, 145, 146, BME 121, CHE 120, CIVE 121, ECE 150, GENE 121/MTE 121, ME 101, MSCI 121, NE 111, PHYS 236, SYDE 121

LEC · Course ID 016252On ucalendarCS 114 today

CS 115 Introduction to Computer Science 1

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Function definition and application. Tracing via substitution. Design, testing, and documentation. Recursive data definitions. Lists and trees. Functional and data abstraction. [Note: See Note 2 above. Offered: F,W,S]

Antireq: BME 121, CS 135, 137, 138, 145, CHE 121, CIVE 121, ECE 150, GENE 121/MTE 121, ME 101, NE 111, MSCI 121, PHYS 139, SYDE 121

LEC · Course ID 012765On ucalendarCS 115 today

CS 116 Introduction to Computer Science 2

This course builds on the techniques and patterns learned in CS 115 while making the transition to use of an imperative language. Generative and structural recursion. Mutation (assignment) and its role in an imperative language. Primitive types and basic I/O. Sequencing, selection, looping. Function definition and use. File and console I/O. Issues in computer science. [Offered: F,W,S]

Prereq: CS 115 or 135 or 145. Antireq: CS 136, 137, 138, 146, PHYS 236, 239, MSCI 240, NE 111

LEC · Course ID 012766On ucalendarCS 116 today

CS 135 Designing Functional Programs

An introduction to the fundamentals of computer science through the application of elementary programming patterns in the functional style of programming. Syntax and semantics of a functional programming language. Tracing via substitution. Design, testing, and documentation. Linear and nonlinear data structures. Recursive data definitions. Abstraction and encapsulation. Generative and structural recursion. Historical context. [Note: See Note 2 above. Offered: F,W]

LEC · Course ID 012040On ucalendarCS 135 today

CS 136 Elementary Algorithm Design and Data Abstraction

This course builds on the techniques and patterns learned in CS 135 while making the transition to use an imperative language. It introduces the design and analysis of algorithms, the management of information, and the programming mechanisms and methodologies required in implementations. Topics discussed include iterative and recursive sorting algorithms; lists, stacks, queues, trees, and their application; abstract data types and their implementations. [Note: See Note 2 above. Offered: F,W,S]

Prereq: At least 90% in CS 115 or at least 70% in CS 116 or at least 60% in CS 135 or CS 145. Antireq: CS 137, 138, 146, PHYS 239

LEC · Course ID 012041On ucalendarCS 136 today

CS 137 Programming Principles

Review of fundamental programming concepts and their application. Procedures and parameter passing. Arrays and structures. Recursion. Sorting. Pointers and simple dynamic structures. Space and time analysis of designs. Design methodologies. [Offered: F]

Prereq: Software Engineering students only

LEC · Course ID 012886On ucalendarCS 137 today

CS 138 Introduction to Data Abstraction and Implementation

Software abstractions via elementary data structures and their implementation; encapsulation and modularity; class and interface definitions; object instantiation; recursion; elementary abstract data types, including sequences, stacks, queues, and trees; implementation using linked structures and arrays; vectors and strings; memory models; automatic vs. dynamic memory management. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: CS 137

LEC · Course ID 012887On ucalendarCS 138 today

CS 145 Designing Functional Programs (Advanced Level)

CS 145 is an advanced-level version of CS 135. [Note: See Note 2 above. This course may be substituted for CS 135 in any degree plan or for prerequisite purposes. Offered: F]

Antireq: CS 115, 135, 137, 138

LEC · Course ID 012767On ucalendarCS 145 today

CS 146 Elementary Algorithm Design and Data Abstraction (Advanced Level)

CS 146 is an advanced-level version of CS 136. [Note: See Note 2 above. This course may be substituted for CS 136 in any degree plan or for prerequisite purposes. Students who receive a good grade in CS 135 may contact the instructor of CS 146 to seek admission without the formal prerequisites. Offered: W]

Prereq: CS 145 with a grade of at least 75%. Antireq: CS 116, 136, 137, 138.

LEC · Course ID 013657On ucalendarCS 146 today

CS 164W Data Structures I

Taught at Wilfrid Laurier University. Refer to WLU Calendar for details.

LEC · Course ID 015618On ucalendarCS 164W today

CS 200 Concepts for Advanced Computer Usage

Important concepts underlying major personal computer application categories; methodologies for learning and evaluating software; operating system and hardware design from the user's point of view, with implications for maintaining a personal computer. Students are encouraged to use their own personal computer for assignments. Social media and the effect of technology on society are explored throughout the course. [Offered: W,S]

Prereq: Not open to Computer Science students

LEC · Course ID 004372On ucalendarCS 200 today

CS 202W Web Site Design (WLU)

Prereq: One of CS 116, 136, 146

LEC · Course ID 014116On ucalendarCS 202W today

CS 212W Windows App. Programming (WLU)

Prereq: CS 116, 136 or 146

LEC · Course ID 014324On ucalendarCS 212W today

CS 213W Introduction to Object-Oriented Programming (WLU)

Taught at Wilfrid Laurier University. Refer to WLU calendar for details.

LEC · Course ID 016454On ucalendarCS 213W today

CS 230 Introduction to Computers and Computer Systems

Basic computer architecture, organization, system services, and software. Typology of processors, memory, I/O devices and their performance. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]

Prereq: One of CS 116, 136, 138, 146; Not open to Computer Science students. Antireq: BME 292/393, CS 241, 251, SYDE 192

LEC · Course ID 004374On ucalendarCS 230 today

CS 231 Algorithmic Problem Solving

The study of the steps required to solve real-world problems on a computer, including problem specification, choice of algorithmic paradigm, analysis, and implementation. Topics include exhaustive search, divide and conquer, greedy, and dynamic programming approaches. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: S]

Prereq: One of CS 116, 136, 138, 146. Not open to Computer Science students. Antireq: BME 122, CS 341, ECE 250, MSCI 240, MTE 140, SYDE 223

LEC · Course ID 015400On ucalendarCS 231 today

CS 234 Data Types and Structures

Top-down design of data structures. Using representation-independent data types. Introduction to commonly used data types, including lists, sets, mappings, and trees. Selection of data representation. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,S]

Prereq: One of CS 116, 136, 138, 146; Not open to Computer Science students. Antireq: BME 122, CS 240, ECE 250, MSCI 240, MTE 140, SYDE 223

LEC · Course ID 004375On ucalendarCS 234 today

CS 240 Data Structures and Data Management

Introduction to widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms. Specific topics include priority queues, sorting, dictionaries, data structures for text processing. [Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: (CS 245 or SE 212), (one of CS 241, 246, 247), (one of STAT 206, 230, 240); Computer Science and BMath (Data Science) students only. Antireq: BME 122, CS 234, ECE 250, MTE 140, SYDE 223

LEC · Course ID 004377On ucalendarCS 240 today

CS 240E Data Structures and Data Management (Enriched)

Enriched version of CS 240. [Note: See notes 1 and 9 above. CS 240E may be substituted for CS 240 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: As permitted by demand and available resources.]

Prereq: A grade of 85% or higher in one of CS 136, 138 or 146; Computer Science students only. Antireq: CS 234, ECE 250

LEC · Course ID 015405On ucalendarCS 240E today

CS 241 Foundations of Sequential Programs

The relationship between high-level languages and the computer architecture that underlies their implementation, including basic machine architecture, assemblers, specification and translation of programming languages, linkers and loaders, block-structured languages, parameter passing mechanisms, and comparison of programming languages. [Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. CS 251 is a recommended corequisite. Offered: F,W,S]

Prereq: (CS 138 or 246) or (a grade of 85% or higher in one of CS 136 or 146); Computer Science and BMath (Data Science) students only. Antireq: CS 230, ECE 351

LEC · Course ID 004378On ucalendarCS 241 today

CS 241E Foundations of Sequential Programs (Enriched)

Enriched version of CS 241. [Note: See notes 1 and 9 above. CS 241E may be substituted for CS 241 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. CS 251 is a recommended corequisite. Offered: As permitted by demand and available resources]

Prereq: A grade of 85% or higher in one of CS 136, 138, or 146; Computer Science and BMath (Data Science) students only. Antireq: CS 230, GENE 344

LEC · Course ID 015406On ucalendarCS 241E today

CS 245 Logic and Computation

Logic as a tool for representation, reasoning, and computation. Propositional and predicate logic. Formalizing the notions of correct and incorrect reasoning, defining what is computable, and exploring the limits of computation. Godel's Incompleteness Theorem. Applications of logic to computer science.

Prereq: (One of CS 136, 138, 146), MATH 135; Honours Mathematics students only. Antireq: PMATH 330, ECE 208, SE 212

LEC · Course ID 011405On ucalendarCS 245 today

CS 245E Logic and Computation (Enriched)

Enriched version of CS 245. [Note: See notes 1 and 9 above. CS 245E may be substituted for CS 245 wherever the latter is a requirement. Enrolment is restricted. Offered: As permitted by demand and available resources.]

Prereq: A grade of 85% or higher in one of CS 136 or 146; Honours Mathematics students only. Antireq: ECE 208, PMATH 330, and SE 212

LEC · Course ID 015407On ucalendarCS 245E today

CS 246 Object-Oriented Software Development

Introduction to object-oriented programming and to tools and techniques for software development. Designing, coding, debugging, testing, and documenting medium-sized programs: reading specifications and designing software to implement them; selecting appropriate data structures and control structures; writing reusable code; reusing existing code; basic performance issues; debuggers; test suites. [Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 146 or a grade of 60% or higher in CS 136 or 138; Honours Mathematics students only. Antireq: CS 247, MSCI 342, SYDE 322

LEC · Course ID 004380On ucalendarCS 246 today

CS 246E Object-Oriented Software Development (Enriched)

Enriched version of CS 246. [Note: See notes 1 and 9 above. CS 246E may be substituted for CS 246 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: As permitted by demand and available resources.]

Prereq: A grade of 85% or higher in one of CS 136 or 146; Honours Mathematics students only. Antireq: SYDE 322

LEC · Course ID 015408On ucalendarCS 246E today

CS 247 Software Engineering Principles

Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modeling, object-oriented programming and design, generic programming, testing and debugging. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: S]

Prereq: CS 241; Software Engineering students only. Antireq: CS 246, MSCI 342, SYDE 322

LEC · Course ID 013805On ucalendarCS 247 today

CS 251 Computer Organization and Design

Overview of computer organization and performance. Basics of digital logic design. Combinational and sequential elements. Data representation and manipulation. Basics of processor design. Pipelining. Memory hierarchies. Multiprocessors. [Note: Students enrolled in Digital Hardware Specialization should enrol in ECE 222. Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: One of CS 136, 138, 146; Computer Science and BMath (Data Science) students only. Antireq: BME 292/393, ECE 222, ME 262, MTE 262, SYDE 192

LEC · Course ID 004382On ucalendarCS 251 today

CS 251E Computer Organization and Design (Enriched)

Enriched version of CS 251. [Note: Students enrolled in Digital Hardware Specialization should enrol in ECE 222. See notes 1 and 9 above. CS 251E may be substituted for CS 251 wherever the latter is a requirement. Enrolment is restricted. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: As permitted by demand and available resources.]

Prereq: A grade of 85% or higher in one of CS 136 or 146; Computer Science and BMath (Data Science) students only. Antireq: BME 292/393, ECE 222, ME 262, MTE 262, SYDE 192

LEC · Course ID 015893On ucalendarCS 251E today

CS 264W Data Structures II (WLU)

Taught at Wilfrid Laurier University. Refer to WLU Undergraduate Calendar for course description.

LEC · Course ID 016466On ucalendarCS 264W today

CS 317W Software Engineering

LEC · Course ID 015597On ucalendarCS 317W today

CS 330 Management Information Systems

An introduction to information systems and their strategic role in business. Topics include types of information systems, organizational requirements, systems development strategies, decision support systems, data and information management, and information systems management, control and implementation. [Offered: F,W,S]

Prereq: One of CS 106, 116, 136, 138, 146; Level at least 2B; Not open to Computer Science students. Antireq: AFM 241, BUS 415W, 486W, CS 480/490, MSCI 441

LEC · Course ID 004385On ucalendarCS 330 today

CS 335 Computational Methods in Business and Finance

An introduction to numerical methods for business and finance. Floating-point arithmetic, interpolation. Methods for portfolio optimization and contingent-claims valuation. Solution of nonlinear equations. Monte Carlo methods, lattice methods, simulation of hedging strategies. [Offered: F,W]

Prereq: (One of CS 116, 136, 138, 146); MATH 136 or 146, MATH 237 or 247, STAT 231 or 241; Not open to Computer Science students. Antireq: AMATH 242/ CS 371, CS 370, MTE 204

LEC · Course ID 013658On ucalendarCS 335 today

CS 338 Computer Applications in Business: Databases

A user-oriented approach to the management of large collections of data. Methods used for the storage, selection, and presentation of data. Common database management systems. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: One of CS 230, 231, 234, 246, 330; or (AFM 341 and (CS 116 or CS 136 or CS 146)); Not open to Computer Science students. Antireq: CS 348, 448, MSCI 346

LEC · Course ID 004390On ucalendarCS 338 today

CS 341 Algorithms

The study of efficient algorithms and effective algorithm design techniques. Program design with emphasis on pragmatic and mathematical aspects of program efficiency. Topics include divide and conquer algorithms, recurrences, greedy algorithms, dynamic programming, graph search and backtrack, problems without algorithms, NP-completeness and its implications. [Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 240 and (MATH 239 or 249); Computer Science and BMath (Data Science) students only. Antireq: CS 231, ECE 406

LEC · Course ID 004392On ucalendarCS 341 today

CS 343 Concurrent and Parallel Programming

An introduction to concurrent and parallel programming, with an emphasis on language constructs. Major topics include exceptions, coroutines, atomic operations, critical sections, mutual exclusion, semaphores, high-level concurrency, deadlock, interprocess communication, process structuring, shared memor,y and distributed architectures. Students will learn how to structure, implement, and debug concurrent programs. [Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W]

Prereq: CS 350 or SE 350; Computer Science students only

LEC · Course ID 011417On ucalendarCS 343 today

CS 348 Introduction to Database Management

The main objective of this course is to introduce students to fundamentals of database technology by studying databases from three viewpoints: those of the database user, the database designer, and the database administrator. It teaches the use of a database management system (DBMS) by treating it as a black box, focusing only on its functionality and its interfaces. Topics include introduction to database systems, relational database systems, database design methodology, SQL and interfaces, database application development, concept of transactions, ODBC, JDBC, database tuning, database administration, and current topics (distributed databases, data warehouses, data mining). [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: Computer Science and BMath (Data Science) students only. Coreq: CS 240. Antireq: CS 338, ECE 356, 456, MSCI 346

LEC · Course ID 004417On ucalendarCS 348 today

CS 349 User Interfaces

An introduction to contemporary user interfaces, including the basics of human-computer interaction, the user interface design/evaluation process, the event abstraction, user interface components, specification of user interfaces, and the architectures within which user interfaces are developed. Implementation and evaluation of a typical user interface is considered. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 241 and (one of MATH 115, 136, 146); Computer Science students only

LEC · Course ID 011727On ucalendarCS 349 today

CS 350 Operating Systems

An introduction to the fundamentals of operating system function, design, and implementation. Topics include concurrency, synchronization, processes, threads, scheduling, memory management, file systems, device management, and security. [Note: Enrolment is restricted; see Note 1 above. Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 240, 241, 246, (CS 251 or ECE 222); Computer Science students only. Antireq: ECE 254, MTE 241, SE 350

LEC · Course ID 011416On ucalendarCS 350 today

CS 360 Introduction to the Theory of Computing

Models of computers including finite automata and Turing machines. Basics of formal languages with applications to the syntax of programming languages. Alternate characterizations of language classes. Proving unrecognizability. Unsolvable problems and their relevance to the semantics of programming. [Note: Enrolment is restricted; see Note 1 above. Offered: F,W,S]

Prereq: CS 240, 241 and (MATH 239 or 249); Computer Science students only. Antireq: CS 365

LEC · Course ID 004398On ucalendarCS 360 today

CS 365 Models of Computation

Finite automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and undecidability. Time and space complexity. Diagonalization and hierarchies. CS 365 covers the material in CS 360 at an accelerated pace plus additional topics in computational complexity. [Note: CS 365 may be substituted for CS 360 in any degree plan or for prerequisite purposes; enrolment is restricted; see Note 1 above. Offered: W]

Prereq: CS 240, 241 and (MATH 239 or 249); Computer Science students only. Antireq: CS 360

LEC · Course ID 011347On ucalendarCS 365 today

CS 370 Numerical Computation

Principles and practices of basic numerical computation as a key aspect of scientific computation. Visualization of results. Approximation by splines, fast Fourier transforms, solution of linear and nonlinear equations, differential equations, floating point number systems, error, stability. Presented in the context of specific applications to image processing, analysis of data, scientific modeling. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: (One of MATH 118, 119, 128, 138, 148), (one of MATH 106, 114, 115, 136, 146), (one of CS 231, 234, 241, 246). Antireq: AMATH 242/CS 371, CHE 121, CIVE 121, CS 335, ECE 204, MTE 204

LEC · Course ID 004400On ucalendarCS 370 today

CS 371 Introduction to Computational Mathematics

A rigorous introduction to the field of computational mathematics. The focus is on the interplay between continuous models and their solution via discrete processes. Topics include pitfalls in computation, solution of linear systems, interpolation, discrete Fourier transforms, and numerical integration. Applications are used as motivation. [Note: This course may be substituted for CS 370 in any degree plan or for prerequisite purposes; lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]

Prereq: (One of CS 116, 136, 138, 146), MATH 235 or 245, 237 or 247. Antireq: CS 335, 370, ECE 204, MTE 204

LEC · Course ID 011363On ucalendarCS 371 today

CS 383 Computational Digital Art Studio

An upper-level studio course to create computational projects that function as art works and aesthetic experiences. Students will work in an interdisciplinary environment to combine computer science principles with fine art technical and conceptual skills. [Offered: W]

Prereq: CS 240; FINE 228 or 229; FINE 257 or ENGL 293

STU · Course ID 015143On ucalendarCS 383 today

CS 398 Topics in Computer Science

See the Course Offerings List for topics available.

Prereq: CS 240 and (CS 246 or 247); Computer Science students only

LEC · Course ID 011409On ucalendarCS 398 today

CS 399 Readings in Computer Science

Reading course as announced by the department.

Prereq: CS 240 and (CS 246 or 247); Computer Science students only

RDG · Course ID 011410On ucalendarCS 399 today

CS 430 Applications Software Engineering

An investigation into the role and function of software engineering practice in the construction of computer based systems. Topics include: requirements and specification; documentation techniques; analysis and design; implementation; testing and maintenance; management issues. [Offered: F,W]

Prereq: CS 330; Level at least 3A; Not open to Computer Science students. Antireq: CS 446/ECE 452, SE 464

LEC · Course ID 004404On ucalendarCS 430 today

CS 431 Data-Intensive Distributed Analytics

Introduces non-CS major students to infrastructure for data-intensive analytics, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computation across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulk-synchronous parallel), and applications. [Offered: F,W]

Prereq: (CS 231 or 234 or 341) and (CS 251 or 330); Not open to Computer Science students. Antireq: CS 451

LEC · Course ID 015547On ucalendarCS 431 today

CS 436 Networks and Distributed Computer Systems

An introduction to networks, protocols, and distributed systems. Layered models, resource management, naming, addressing and routing, reliable communication, security, and higher-level services. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: One of CS 230, 241, 246, 251; Not open to Computer Science students. Antireq: CS 454, 456, ECE 428, 454

LEC · Course ID 004407On ucalendarCS 436 today

CS 442 Principles of Programming Languages

An exposure to important concepts and issues in contemporary programming languages. Data types, abstraction, and polymorphism. Program structure. Lambda calculus and functional programming, logic programming, object-oriented programming. Semantics of programming languages. Critical comparison of language features and programming methodologies using examples drawn from a variety of programming languages including Lisp, Prolog, ML, Ada, Smalltalk, Icon, APL, and Lucid. Programming assignments involve the use of some of these languages. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: CS 240; Computer Science students only

LEC · Course ID 004410On ucalendarCS 442 today

CS 444 Compiler Construction

Phases of compilation. Lexical analysis and a review of parsing. Compiler-compilers and translator writing systems. LEX and YACC. Scope rules, block structure, and symbol tables. Runtime stack management. Parameter passage mechanisms. Stack storage organization and templates. Heap storage management. Intermediate code. Code generation. Macros. [Note: This course involves project work. Offered: W]

Prereq: CS 350 or SE 350; Computer Science students only

LEC · Course ID 004412On ucalendarCS 444 today

CS 445 Software Requirements Specification and Analysis

Introduces students to the requirements definition phase of software development. Models, notations, and processes for software requirements identification, representation, analysis, and validation. Cost estimation from early documents and specifications. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W]

Prereq: CS 350; Computer Science students only. Antireq: SE 463

LEC · Course ID 004413On ucalendarCS 445 today

CS 446 Software Design and Architectures

Introduces students to the design, implementation, and evolution phases of software development. Software design processes, methods, and notation. Implementation of designs. Evolution of designs and implementations. Management of design activities. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]

Prereq: CS 350; Computer Science students only. Antireq: CS 430, SE 464

LEC · Course ID 004414On ucalendarCS 446 today

CS 447 Software Testing, Quality Assurance and Maintenance

Introduces students to systematic testing of software systems. Software verification, reviews, metrics, quality assurance, and prediction of software reliability and availability. Related management issues. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: CS 350; Computer Science students only. Antireq: SE 465

LEC · Course ID 004416On ucalendarCS 447 today

CS 448 Database Systems Implementation

The objective of this course is to introduce students to fundamentals of building a relational database management system. The course focuses on the database engine core technology by studying topics such as storage management (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: CS 348 and (CS 350 or SE 350); Computer Science students only

LEC · Course ID 012300On ucalendarCS 448 today

CS 449 Human-Computer Interaction

An introduction to the fundamental theories, methods, and research in the design and evaluation of novel computational artifacts designed to meet real-world human needs. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]

Prereq: CS 240, 241; Level at least 3B; Computer Science students only. Antireq: SYDE 348/548

LEC · Course ID 013910On ucalendarCS 449 today

CS 450 Computer Architecture

The course is intended to provide the student with an appreciation of modern computer design and its relation to system architecture, compiler technology, and operating system functionality. The course places an emphasis on design based on the measurement of performance and its dependency on parallelism, efficiency, latency, and resource utilization. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: (CS 245 or SE 212) and (CS 350 or SE 350); Computer Science students only. Antireq: ECE 320, ECE 429

LEC · Course ID 004418On ucalendarCS 450 today

CS 451 Data-Intensive Distributed Computing

Introduces students to infrastructure for data-intensive computing, with a focus on abstractions, frameworks, and algorithms that allow developers to distribute computations across many machines. Topics include core concepts (partitioning, replication, locality, consistency), computational models (MapReduce, dataflows, stream processing, bulk-synchronous parallel), and applications. [Offered: F,W]

Prereq: CS 341, 348 and (CS 350 or SE 350); Computer Science and BMath (Data Science) students only

LEC · Course ID 015315On ucalendarCS 451 today

CS 452 Real-time Programming

Intended to give students experience with tools and techniques of real-time programming, this course includes not only issues of microcomputer architecture and a real-time programming language and operating system, but also hands-on experience programming a microcomputer for applications such as process control, data acquisition and communication. [Note: This course involves project work. Offered: W,S]

Prereq: CS 350 or SE 350; Computer Science students only

LEC · Course ID 004419On ucalendarCS 452 today

CS 454 Distributed Systems

An introduction to distributed systems, emphasizing the multiple levels of software in such systems. Specific topics include fundamentals of data communications, network architecture and protocols, local-area networks, concurrency control in distributed systems, recovery in distributed systems, and clock synchronization. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W,S]

Prereq: CS 350 or SE 350; Computer Science students only. Antireq: ECE 454

LEC · Course ID 004420On ucalendarCS 454 today

CS 456 Computer Networks

An introduction to network architectures and protocols, placing emphasis on protocols used in the Internet. Specific topics include application layer protocols, network programming, transport protocols, routing, multicast, data link layer issues, multimedia networking, network security, and network management. [Offered: F,W,S]

Prereq: CS 350 or SE 350; Computer Science students only. Antireq: CS 436, ECE 358, 428

LEC · Course ID 010167On ucalendarCS 456 today

CS 457 System Performance Evaluation

Basic techniques of system performance evaluation. Specific topics include: performance modeling, discrete event simulation, verification and validation of simulation models, analysis of simulation output, analysis of single server queue and queueing networks, modeling of computer systems, networks, and other queueing or non-queueing systems. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]

Prereq: (CS 246 or 247) and (one of STAT 206, 231, 241); Computer Science students only

LEC · Course ID 004422On ucalendarCS 457 today

CS 458 Computer Security and Privacy

Security and privacy issues in various aspects of computing. Specific topics include: comparing security and privacy, program security, writing secure programs, controls against program threats, operating system security, formal security models, network security, Internet application security and privacy, privacy-enhancing technologies, database security and privacy, inference, data mining, security policies, physical security, economics of security, and legal and ethical issues. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 350 or SE 350. Computer Science students only. Antireq: ECE 458

LEC · Course ID 012980On ucalendarCS 458 today

CS 460W Applied Cryptography (WLU)

LEC · Course ID 014376On ucalendarCS 460W today

CS 462 Formal Languages and Parsing

Languages and their representations. Grammars --Chomsky hierarchy. Regular sets and sequential machines. Context-free grammars -- normal forms, basic properties. Pushdown automata and transducers. Operations on languages. Undecidable problems in language theory. Applications to the design of programming languages and compiler construction.

Prereq: CS 360 or 365; Computer Science students only

LEC · Course ID 004424On ucalendarCS 462 today

CS 466 Algorithm Design and Analysis

Algorithmic approaches and methods of assessment that reflect a broad spectrum of criteria, including randomized algorithms, amortized analysis, lower bounds, approximation algorithms, and on-line algorithms. Particular examples will be chosen from different areas of active research and application. [Offered: F,S]

Prereq: CS 341; Computer Science students only

LEC · Course ID 004426On ucalendarCS 466 today

CS 467 Introduction to Quantum Information Processing

Basics of computational complexity; basics of quantum information; quantum phenomena; quantum circuits and universality; relationship between quantum and classical complexity classes; simple quantum algorithms; quantum Fourier transform; Shor factoring algorithm; Grover search algorithm; physical realization of quantum computation; error-correction and fault-tolerance; quantum key distribution. [Offered: W]

Prereq: One of MATH 114, 115, 235, 245; Level at least 4A

LEC · Course ID 011497On ucalendarCS 467 today

CS 468W Artificial Intelligence(WLU)

LEC · Course ID 014404On ucalendarCS 468W today

CS 469W iPhone Application Programming (WLU)

Taught at Wilfrid Laurier University. Refer to WLU calendar for details.

LEC · Course ID 015290On ucalendarCS 469W today

CS 475 Computational Linear Algebra

Basic concepts and implementation of numerical linear algebra techniques and their use in solving application problems. Special methods for solving linear systems having special features. Direct methods: symmetric, positive definite, band, general sparse structures, ordering methods. Iterative methods: Jacobi, Gauss-Seidel, SOR, conjugate gradient. Computing and using orthogonal factorizations of matrices. QR and SVD methods for solving least squares problems. Eigenvalue and singular value decompositions. Computation and uses of these decompositions in practice. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: S]

Prereq: AMATH 242/CS 371 or CS 370. Antireq: CS 372, 472

LEC · Course ID 011444On ucalendarCS 475 today

CS 476 Numeric Computation for Financial Modeling

The interaction of financial models, numerical methods, and computing environments. Basic computational aspects of option pricing and hedging. Numerical methods for stochastic differential equations, strong and weak convergence. Generating correlated random numbers. Time-stepping methods. Finite difference methods for the Black-Scholes equation. Discretization, stability, convergence. Methods for portfolio optimization, effect of data errors on portfolio weights. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Students who receive a good grade in CS 335 may contact the instructor of CS 476 to seek admission without the formal prerequisites. Offered: W]

Prereq: (AMATH 242/CS 371 or CS 370) and STAT 231/241

LEC · Course ID 003352On ucalendarCS 476 today

CS 479 Neural Networks

An introduction to neural network methods, with some discussion of their relevance to neuroscience. Simple neuron models and networks of neurons. Training feedforward networks for classification or regression. Learning using the backpropagation of errors. Unsupervised learning methods. Optimal linear decoding. Recurrent neural networks. Convolutional neural networks. Advanced topics, including adversarial inputs and biologically plausible learning methods.

LEC · Course ID 016167On ucalendarCS 479 today

CS 480 Introduction to Machine Learning

Introduction to modeling and algorithmic techniques for machines to learn concepts from data. Generalization: underfitting, overfitting, cross-validation. Tasks: classification, regression, clustering. Optimization-based learning: loss minimization. regularization. Statistical learning: maximum likelihood, Bayesian learning. Algorithms: nearest neighbour, (generalized) linear regression, mixtures of Gaussians, Gaussian processes, kernel methods, support vector machines, deep learning, sequence learning, ensemble techniques. Large scale learning: distributed learning and stream learning. Applications: Natural language processing, computer vision, data mining, human computer interaction, information retrieval. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 341 and (STAT 206 or 231 or 241); Computer Science and BMath (Data Science) students only.

LEC · Course ID 015515On ucalendarCS 480 today

CS 482 Computational Techniques in Biological Sequence Analysis

Computer science principles and algorithms in biological sequence analysis. Topics include algorithms for sequence comparison, for large-scale database search in biological databases, for sequence assembly, for evolutionary tree reconstruction, for identifying important features in DNA and RNA sequences, and underlying computational techniques for understanding strings and trees and for making probabilistic inferences. [Offered: W]

Prereq: CS 341, STAT 241 or at least 60% in STAT 231

LEC · Course ID 004434On ucalendarCS 482 today

CS 484 Computational Vision

Introduction to image and vision understanding by computer. Camera-system geometry, image formation and lighting, and image acquisition. Basic visual processes for recognition of edges, regions, lines, and surfaces. Processing of stereo images, and motion in image sequences. Object recognition. Applications of computer-vision systems. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work.]

Prereq: (One of AMATH 242/CS 371, CS 370, MATH 235, MATH 245) and (One of STAT 206, STAT 230 or 240); Computer Science students only

LEC · Course ID 013912On ucalendarCS 484 today

CS 485 Statistical and Computational Foundations of Machine Learning

Extracting meaningful patterns from random samples of large data sets. Statistical analysis of the resulting problems. Common algorithmic paradigms for such tasks. Central concepts: VC-dimension, margins of a classifier, sparsity and description length, other types of regularization. Performance guarantees: generalization bounds, data dependent error bounds and computational complexity of learning algorithms. Common paradigms: neural networks, kernel methods and support-vector machines, boosting, nearest neighbor classifiers. Applications to data mining.

Prereq: CS 341 and (STAT 206 or 230 or 240); Computer Science and BMath (Data Science) students only

LEC · Course ID 013911On ucalendarCS 485 today

CS 486 Introduction to Artificial Intelligence

Goals and methods of artificial intelligence. Methods of general problem solving. Knowledge representation and reasoning. Planning. Reasoning about uncertainty. Machine learning. Multi-agent systems. Natural language processing. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: F,W,S]

Prereq: CS 341; Computer Science and BMath (Data Science) students only. Coreq: STAT 206 or 231 or 241.

LEC · Course ID 004435On ucalendarCS 486 today

CS 487 Introduction to Symbolic Computation

An introduction to the use of computers for symbolic mathematical computation, involving traditional mathematical computations such as solving linear equations (exactly), analytic differentiation and integration of functions, and analytic solution of differential equations. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: W]

Prereq: CS 231 or 234 or 240; Honours Mathematics only

LEC · Course ID 004436On ucalendarCS 487 today

CS 488 Introduction to Computer Graphics

Software and hardware for interactive computer graphics. Implementation of device drivers, 3-D transformations, clipping, perspective, and input routines. Data structures, hidden surface removal, colour shading techniques, and some additional topics will be covered. [Note: This course involves project work. Offered: F,W,S]

Prereq: CS 341 and (CS 350 or SE 350) and (CS 370 or 371); Computer Science students only

LEC · Course ID 004437On ucalendarCS 488 today

CS 489 Advanced Topics in Computer Science

See the Course Offerings List for topics available.

Prereq: Level at least 3B; Computer Science students only

LEC · Course ID 010044On ucalendarCS 489 today

CS 490 Information Systems Management

The integration of business and technical considerations in the design, implementation and management of information systems. Topics include: IS planning and development; business, management, executive, and strategic information systems, including case studies of selected large- scale systems; decision support systems; end-user training and development; systems security, disaster planning and recovery. Practical examples of information systems in industry. [Offered: W,S]

Prereq: CS 350 or SE 350; Computer Science students only. Antireq: BUS 415W, 486W

LEC · Course ID 004433On ucalendarCS 490 today

CS 492 The Social Implications of Computing

This course is designed to consider the problems encountered by individuals, organizations and society as computer technology is adopted, with a view towards assessing possible courses of action. [Offered: W,S]

Prereq: CS 240; Computer Science students only

LEC · Course ID 004438On ucalendarCS 492 today

CS 493 Team Project 1

Students work in teams on substantial open-ended computer science problems as part of the CS 493/494 course sequence. Lectures describe project management fundamentals and ethical and legal issues in computing. Students form teams, select projects, define project goals, perform risk assessment, establish a project plan, and develop a prototype. Possible project topics can include development of software systems, analysis of extensions to existing systems across the field, and experimental computer science.[Offered: F]

Prereq: CS 341, 350; Computer Science students only. Not open to Software Engineering students.

LEC · Course ID 015545On ucalendarCS 493 today

CS 494 Team Project 2

Continuing from CS 493, student teams continue development of their project, update project plans, explore design alternatives, perform testing, and analyze experimental results. Teams prepare and deliver technical presentations and demonstrations of their projects, and analyze ethical and legal aspects of their work. [Offered: W]

Prereq: CS 493; Computer Science students only. Not open to Software Engineering students.

LEC · Course ID 015546On ucalendarCS 494 today

CS 497 Multidisciplinary Studies in Computer Science

See the Course Offerings list for topics available.

Prereq: Level at least 3B; Computer Science students only

LEC · Course ID 012280On ucalendarCS 497 today

CS 499R Readings in Computer Science

Reading course as announced by the department.

Prereq: Level at least 3B; Computer Science students only

RDG · Course ID 004444On ucalendarCS 499R today

CS 499T Honours Thesis

The student will undertake new analysis, synthesis, measurement, or experimentation to produce a document that demonstrates a depth of understanding of a topic that goes beyond what is obtained in a standard undergraduate education. [Note: Offered for CR/NCR only. CS 499R is recommended. A detailed thesis proposal and names of a supervisor and reader are required.]

Prereq: Computer Science students only

PRJ · Course ID 012560On ucalendarCS 499T today