Course Descriptions
Computing Science
See also Adult Basic Education (ABE) Upgrading Courses.
University/Career/Technology Courses
Course offerings vary from year to year. Check Generate a Timetable for available course offerings.
The following courses are offered through the Faculty of Science and Technology.
CSCI 110 (3) Intro to Computers and Computer Applications (Ends Nov 2011)
A hands-on introduction to development, functions, and applications of microcomputer for non-computing science students. Topics include presentation software (MS PowerPoint), structure/functionality of computers, Web creation (MS FrontPage), graphics for presentations/Website creation, and spreadsheets (MS Excel). Credit will only be granted for one of QUME 185, SSCI 150 or CSCI 110. (2:1:1)
Prerequisite: Principles of Mathematics 11.
CSCI 110 (3) Intro to Computers and Computer Applications (Effective Dec 2011)
A hands-on introduction to development, functions, and applications of microcomputer for non-computing science students. Topics include presentation software (MS PowerPoint), structure/functionality of computers, Web creation (MS FrontPage), graphics for presentations/Website creation, and spreadsheets (MS Excel). Credit will only be granted for one of QUME 185, SSCI 150 or CSCI 110. (2:1:1)
Prerequisite: Either Principles of Mathematics 11 or Foundations of Mathematics 11.
CSCI 112 (3) Applications Programming
An introduction to the use and customization of application packages. Includes macro programming as well as visual programming. (3:0:2)
Prerequisite: None.
CSCI 115 (3) Web Page Techniques (Ends Nov 2011)
An introduction to the World Wide Web and Web page construction for students not majoring in Computing Science. The course will focus on client-side techniques: Hypertext Markup Language (HTML, XHTML), and an introduction to JavaScript. Computing Science students may take this course for credit towards their major in Computing Science. (2:0:2)
Prerequisite: Principles of Mathematics 11 or equivalent.
CSCI 115 (3) Web Page Techniques (Effective Dec 2011)
An introduction to the World Wide Web and Web page construction for students not majoring in Computing Science. The course will focus on client-side techniques: Hypertext Markup Language (HTML, XHTML), and an introduction to JavaScript. Computing Science students may take this course for credit towards their major in Computing Science. (2:0:2)
Prerequisite: One of Principles of Mathematics 11, Foundations of Mathematics 11, or equivalent.
CSCI 120 (3) Intro to Computer Programming in BASIC (Ends Nov 2011)
An introduction to programming for students not majoring in Computing Science, emphasizing problem-solving techniques, and the design and development of structured programs using the Visual BASIC computer language. (3:0:1)
Prerequisite: Principles of Mathematics 11 and min. "C+" in CSCI 110.
CSCI 120 (3) Intro to Computer Programming in BASIC (Effective Dec 2011)
An introduction to programming for students not majoring in Computing Science, emphasizing problem-solving techniques, and the design and development of structured programs using the Visual BASIC computer language. (3:0:1)
Prerequisite: Either Principles of Mathematics 11 or Foundations of Mathematics 11, and min. "C+" in CSCI 110.
CSCI 160 (4) Computing Science I (Ends Nov 2011)
A first course in computer science. Topics include structured programming, top-down program design, procedures, recursion, and an introduction to dynamic data structures. (4:0:1)
Prerequisite: Principles of Mathematics 12.
CSCI 160 (4) Computing Science I (Effective Dec 2011)
A first course in computer science. Topics include structured programming, top-down program design, procedures, recursion, and an introduction to dynamic data structures. (4:0:1)
Prerequisite: Either Principles of Mathematics 12 or Foundations of Mathematics 12.
CSCI 161 (4) Computing Science II
A continuation of CSCI 160. Topics include dynamic data structures (linked lists and trees), abstract data types (stacks, queues, lists) and an introduction to numerical methods. (4:0:1)
Prerequisite: Min. "C-" in CSCI 160.
CSCI 162 (4) Topics in Computing Science
An introduction to applied and theoretical concepts in computer science. Topics include fourth generation languages, computer organization, system software, software engineering principles, and theory of computation. (3:0:1)
Prerequisite: Min. "C-" in CSCI 160.
CSCI 171 (3) Introduction to Game Design and Development
An introduction to the principles and practices of modern game development using current game development languages, libraries, and tools. Intended as a practical introduction for CS majors and non-majors alike. Student projects will include the development of small but complete games, including audio and graphical components and effects. (3:0:1)
Prerequisite: None.
CSCI 172 (3) Introduction to Multiplayer Game Design and Development
A continuation of CSCI 171, this course provides an introduction to the problems and solutions associated with the design and development of multiplayer games. Topics include introductions to networking, security, multi-threading, databases, and object-oriented programming. Each student will participate in the development and demonstration of a complete multiplayer game. (3:0:1)
Prerequisite: CSCI 171.
CSCI 173 (3) Introduction to Computer Animation
Intended for both CS and non-CS students, this course will cover modeling and animation basics such as timelines, storyboarding, materials, lighting, texturing, and rendering. Students will then cover more advanced topics in character and scene development and animation. (3:0:2)
Prerequisite: None.
CSCI 251 (3) Systems and Networks
An introduction to operating systems and computer networks. Topics include network architectures, communications protocols, client / server architecture and file systems. The lab component includes hardware and software installations, upgrades and backups. (3:0:2)
Prerequisite: CSCI 161 and CSCI 162.
CSCI 260 (3) Data Structures
An examination of various methods of representing and manipulating data, including internal representation of data, stacks, queues, linked lists, trees and graphs. Analysis of algorithms will also be discussed extensively. (4:0:1)
Prerequisite: MATH 123 and CSCI 161.
CSCI 261 (3) Computer Architecture & Assembly Language
An introduction to computer organization, and machine and assembly languages. Topics include data representation, the instruction set and addressing modes of a chosen processor, procedures and parameter passing, and the use of operating system services. (3:0:1)
Prerequisite: CSCI 161 can be taken as a co-requisite.
CSCI 265 (3) Software Engineering
An exploration of the methods and tools for developing high quality software. The course includes topics in program design, program style, algorithm selection, interface design, debugging and testing, system utilities, version control, regular expressions and an introduction to scripting languages. (4:0:1)
Prerequisite: CSCI 161.
CSCI 300 (3) Law and Technology
An introduction to legal issues in computing. Topics include intellectual property, conflicts of laws and globalization, privacy law, law of tort (including defamation) and contract law. May not be used to satisfy the requirement for a 300-level computing science elective, but may be taken by computing science students as a 300-level general elective. (3:1:0)
Prerequisite: Third-year standing.
CSCI 307 (1) Preparation for Co-operative Education Employment
Preparation for first co-operative education experience through practical training in areas such as resume writing and interview skills. (0:1:0)
Prerequisite: Min. "B" grade point average in all required first year CSCI and MATH courses.
CSCI 308 (9) Co-operative Work Placement I
Individual students are carefully matched to employers who supervise them and evaluate their performance during paid work experience. University personnel conduct monitoring. Students will write a work placement report. (0:0:0 —35)
Prerequisite: Min. "B" grade point average and CSCI 370.
CSCI 309 (9) Co-operative Work Placement II
The second work placement, as described for CSCI 308. (0:0:0 —35)
Prerequisite: Min. grade point average "B" and CSCI 308.
CSCI 310 (3) Intro to Graphical User Interfaces
An introduction to design and implementation of graphical user interfaces. Topics include design issues and goals, human factors, GUI evaluation, visual languages, and other existing tools. (3:0:1)
Prerequisite: CSCI 161 and CSCI 162.
CSCI 311 (3) Web Programming
Exploration of languages, tools and techniques to write software for use within the World Wide Web (WWW). The course includes the WWW client/server model and related protocols, web server properties, web markup languages, client/server scripting tools, and server side programming. (3:0:1)
Prerequisite: CSCI 265 and CSCI 310.
CSCI 320 (3) Foundations of Computer Science
A survey of formal models and results that form the theoretical foundation of computer science. Typical topics include finite automata, Turing machines, simple undecidable problems, context-free languages, grammars and elementary computational complexity. (3:0:0)
Prerequisite: CSCI 260 and MATH 123.
CSCI 322 (3) Logic and Programming
Practical applications of logic in computer science. Topics include propositional expressions and circuits, reading and writing first order logic, predicate logic as a relational query language, knowledge representation, PROLOG and other related topics. (0:3:0)
Prerequisite: CSCI 161 and either MATH 123 or PHIL 251.
CSCI 330 (3) Programming Languages
The fundamental concepts of imperative and applicative programming languages. Topics include the description of data types, variable assignment and sharing, sequencing, iteration and recursion, parameter passing mechanisms, and type checking. (3:0:1)
Prerequisite: CSCI 162, CSCI 260, CSCI 261 and CSCI 265.
CSCI 331 (3) Object-Oriented Programming
Topics include aspects of object-oriented analysis, design and development; definition and comparison of object-oriented metrics; verification methods for OO-software; maintenance and reuse issues. (3:0:1)
Prerequisite: CSCI 260 and CSCI 265.
CSCI 340 (3) Numerical Methods
A study of computational methods for solving problems in linear algebra, nonlinear equations, approximation, and ordinary differential equations. The student will write programs in a suitable high level language to solve problems in some of the areas listed above but will also learn to use mathematical subroutine packages currently available in computer science libraries. (0:3:1)
Prerequisite: CSCI 161, MATH 241, and MATH 251.
CSCI 355 (3) Digital Logic and Computer Organization
The fundamentals of logic design, computer organization, and the structure of major hardware components of computers. Topics include the application of Boolean algebra to switching circuits; the use of MSI, LSI and field programmable devices in digital design; combinatorial and sequential circuits, flip flops, counters, memory organization, CAD tools. (3:0:2)
Prerequisite: CSCI 162, CSCI 261, and MATH 123.
CSCI 360 (3) Intro to Operating Systems
An introduction to the major concepts of operating systems and study of the interrelationships between the operating system and the architecture of computer systems. Topics include operating system structures, concurrent programming techniques, cpu scheduling, deadlocks, memory management, file systems and protection. (3:0:1)
Prerequisite: CSCI 260, CSCI 261, and CSCI 265.
CSCI 365 (3) Topics in Software Engineering
Techniques for the development and maintenance of software systems. Topics are drawn from software specification, design, implementation, testing, verification and validation. (0:3:1)
Prerequisite: CSCI 260 and CSCI 265.
CSCI 370 (3) Database Systems
An introduction to the use and operating principles of database management systems. Topics include data entities and relationships, data modelling using Entity-Relationship Diagrams, hierarchical, network and relational models of databases, query language, physical representation of data in secondary storage, relational algebra and calculus as applied to the design of databases, security and integrity in the context of concurrent use, and basic ethical issues associated with database design and use. (0:3:1)
Prerequisite: CSCI 260 and CSCI 265.
CSCI 375 (3) Intro to Systems Analysis
The methods and methodologies used in analyzing and designing various types of systems. Topics include project definition, CASE tools, data gathering, structured analysis and design, human-machine interface, database design, system controls, hardware selection and system testing, implementation and operation. Students are assigned to a project team involved in a system study as part of the course. (3:0:1)
Prerequisite: CSCI 162 and CSCI 265.
CSCI 400 (3) Computers and Society
An introduction to the social, philosophical and ethical issues of technology with an emphasis on computing technology. Topics covered include privacy, social control, information, the changing nature of work and appropriate technology. (4:1:0)
Prerequisite: Min. 3 credits of Computing Science.
CSCI 405 (3) Computer Graphics
The fundamental algorithms and data structures used in generative computer graphics. Topics include structure of interactive graphics programs, raster algorithms, colour, two dimensional and three dimensional geometric transformations, animation, parallel and perspective projection, hidden line and hidden surface algorithms, cubic curves and surfaces, and shading models. Students use high resolution raster display workstations and other graphical devices. (3:0:1)
Prerequisite: CSCI 260, CSCI 360, MATH 241, and 3 additional credits of 300-level Computing Science courses.
CSCI 408 (9) Co-operative Work Placement III
The third work placement, as described for CSCI 308. (0:0:0 —35)
Prerequisite: Min. "B" grade point average and CSCI 309.
CSCI 409 (9) Co-operative Work Placement IV
The fourth work placement, as described for CSCI 308. (0:0:0 —35)
Prerequisite: Min. "B" grade point average and CSCI 408.
CSCI 420 (3) Artificial Intelligence
Philosophical and practical aspects of artificial intelligence. Topics include: artificial intelligence programs and languages; rule-based and connectionist models; knowledge representations and descriptions; exploiting constraints and search techniques. (3:0:0)
Prerequisite: CSCI 260.
CSCI 435 (3) Compiler Construction
Compilation including lexical analysis, syntax analysis, semantic routines, code optimization, block structured languages and interpreters. Students implement a compiler/interpreter for a simple language. (3:0:2)
Prerequisite: CSCI 260, CSCI 265, and CSCI 320.
CSCI 454 (3) Fault Tolerant Computing
An introduction to selected issues in fault tolerant computing. Topics include definitions of reliability, availability, safety, maintainability, testability and dependability; system protection through both hardware and information redundancy; quantitative methods for the evaluation of reliability; the design and test of integrated circuits; software fault tolerance and software testing. Includes case studies of practical fault tolerant systems. (0:3:0)
Prerequisite: CSCI 355 and CSCI 360.
CSCI 460 (3) Networks and Communications
An introduction to computer networks and communications. Topics include local and wide area networks, network architectures, security, communications protocols, routing, and an introduction to distributed computing. (3:0:1)
Prerequisite: CSCI 355 and CSCI 360.
CSCI 461 (3) Real Time Systems
Design of real-time operating systems and application software. Topics include: real time scheduling; interrupt-driven systems; process communication and synchronization; language requirements, and decomposition of real-time requirements into process methods. Students design, implement and test a real-time system (robot). (3:0:2)
Prerequisite: CSCI 355 and CSCI 360.
CSCI 485 (3) Topics in Systems
Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)
Prerequisite: Dependent on topic, with permission of Chair.
CSCI 485A (3) Topics in Systems: Advanced Databases
Offered as CSCI 485A, 485B, 485C, 485D. Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)
Prerequisite: Dependent on topic, with permission of Chair.
CSCI 485B (3) Topics in Systems: Multi-Server Online Systems
Offered as CSCI 485A, 485B, 485C, 485D. Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)
Prerequisite: Dependent on topic, with permission of Chair.
CSCI 485C (3) Topics in Systems: Advanced Algorithms
Offered as CSCI 485A, 485B, 485C, 485D. Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)
Prerequisite: Dependent on topic, with permission of Chair.
CSCI 485D (3) Topics in Systems: Intro to Linux Kernel Mode Programming
Offered as CSCI 485A, 485B, 485C, 485D. Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)
Prerequisite: Dependent on topic, with permission of Chair.
CSCI 485E (3) Topics in Systems: Graph Algorithms
Offered as CSCI 485A, 485B, 485C, 485D. Topics depend primarily on the interests of the instructor. Entry is restricted to third and fourth year students who meet the prerequisite specified for the topic to be offered. May be taken more than once in different topics with permission of department Chair. (3:0:0)
Prerequisite: Dependent on topic, with permission of Chair.
CSCI 491 (6) Senior Research Project
An opportunity for student experience in research and development under the supervision of a faculty member in Computing Science. Project duration is two academic terms during which time a student must develop an approved project proposal, carry out the required research and development, prepare a written report detailing results, and satisfy any additional requirements as specified in the approved project proposal. (0:0:6 for 30 weeks)
Prerequisite: Min. 12 upper-level Computing Science credits.
