Join the real world of artificial intelligence, game development, multimedia, and networks and security from your first day of class. This program is more hands-on than what’s offered elsewhere, and you’ll have lots of opportunities to network with industry leaders. Co-op is available, with flexible scheduling. You’ll find a job in your chosen field within two years of graduation.
I made some great friends in my program and had the chance to work on interesting group projects. I also was able to establish some great contacts through my job experiences as part of the co-op program. All in all, you will get out of Computer Science what you put into it.
Bryce St. Pierre
BCS in Applied Computing with Minor in MathematicsCourse Requirements: Advanced Functions/MHF4U. English/ENG4U.
Strongly Recommended: Calculus & Vectors/MCV4U
Minimum Average: 70% (70% average of math courses)
Minimum Average (Co-op): 75% (Co-op Programs: 75% + 70% average in all attempted math courses, excluding Data Management/MDM4U)
Mean Average: 86%
Course Requirements: Grade 12 Advanced Functions. Grade 12 English.
Strongly Recommended: Grade 12 Calculus & Vectors
Minimum Average: 70% (70% average of math courses)
Minimum Average (Co-op): 75% (Co-op Programs: 75% + 70% average in all attempted math courses, excluding Grade 12 Data Management)
Mean Average: 82%
This program is available with or without Co-op. See Program and Co-operative Education Regulations in the Undergraduate Course Calendar.
Total courses: forty.
The major average will be calculated on the basis of grades obtained in COMP-1000, COMP-1400, COMP-1410, COMP-2120, COMP-2540, COMP-2560, COMP-2650, COMP-2660, COMP-3150, COMP-3220, COMP-3400, COMP-3300, COMP-3340, COMP-3670, COMP-4150, COMP-4200, COMP-4220, COMP-4250, and COMP-4990.
First Year: ten courses, including COMP-1000, COMP-1400, COMP-1410, MATH-1250 (or MATH-1260), MATH-1720 (or MATH-1760).
The objectives of this course are to excite students’ interest in computer science and to give students a precise understanding of a number of difficult concepts that are fundamental to modern computer science. Topics may include: induction and recursion; algebraic characterization; syntax; semantics; formal logic; soundness, completeness, and decidability; specification, algorithm, and determinism; complexity. (Restricted to students registered in programs offered wholly or jointly by Computer Science or by Mathematics and Statistics, or with approval of Computer Science.) (3 lecture hours and 1.5 laboratory hours a week).
This course is the first of a two-course sequence designed to introduce students to algorithm design and programming in a high-level language such as C. The main objectives of the course are to develop the ability to identify, understand and design solutions to a wide variety of problems. Topics include: computer system overview, hardware and software, problem solving steps, concepts of variables, constants, data types, algorithmic structure, sequential logic, decisions, loops, modular programming, one-dimensional arrays, text files. If possible, problems like searching/sorting will be addressed. (3 lecture hours and 1.5 laboratory hours a week).
This course is the continuation of COMP-1400 that introduces students to more advanced algorithm design and programming in a high level language such as C. The main objectives of the course are to develop the ability to identify, understand, and design solutions to a wide variety of problems. Topics covered include: multi-dimensional arrays, pointers, strings, advanced modular programming, records, binary files, recursion, stacks, linked lists and introduction to algorithm analysis. (Prerequisite: COMP- 1000 (or MATH-1720) and COMP-1400.) (3 lecture and 1.5 laboratory hours a week).
This course will cover linear systems, matrix algebra, determinants, n-dimensional vectors, dot product, cross product, orthogonalization, eigenvalues, eigenvectors, diagonalization and vector spaces. (Prerequisites: Both Ontario Grade 12 Advanced Functions (MHF4U) and Calculus and Vectors (MCV4U) or MATH-1280.) (Antirequisites: MATH-1260, MATH-1270.) (3 lecture hours, 2 tutorial hours per week.)
This course is for students without Ontario Grade 12 Calculus and Vectors (MCV4U). The course MATH- 1250 is for students with MCV4U. This course will cover vectors, three-dimensional geometry, linear systems, matrix algebra, determinants, n- dimensional vectors, dot product, cross product, orthogonalization, eigenvalues, eigenvectors, diagonalization and vector spaces. The course is equivalent to MATH-1250 for all prerequisite purposes. (Prerequisite: Ontario Grade 12 Advanced Functions (MHF4U).) (Antirequisites: MATH-1250, MATH-1270.) (4 lecture hours, 2 tutorial hours per week.)
This course will cover trigonometric functions and identities, inverse trigonometric functions, limits and continuity, derivatives and applications, mean value theorem, indeterminate forms and l’Hôpital’s rule, antiderivatives and an introduction to definite integrals. This course is for students who have taken both Ontario Grade 12 Advanced Functions (MHF4U) and Ontario Grade 12 Calculus and Vectors (MCV4U). Students who do not have credit for MCV4U should take MATH-1760. (Prerequisites: Ontario Grade 12 Advanced Functions (MHF4U) and Ontario Grade 12 Calculus and Vectors (MCV4U) or MATH-1780.) (Antirequisite: MATH-1760.) (3 lecture hours, 1 tutorial hour per week.)
This course will cover a review of functions, trigonometric functions and identities, transcendental functions, inverse trigonometric functions, introduction to limits, continuity, derivatives and applications, mean value theorem, indeterminate forms and l’Hôpital’s rule, antiderivatives and an introduction to definite integrals. This course is for students who have taken Ontario Grade 12 Advanced Functions (MHF4U), but have not taken Ontario Grade 12 Calculus and Vectors (MCV4U). Students who have credit for MCV4U should take MATH-1720. The course is equivalent to MATH-1720 for all prerequisite purposes. (Prerequisite: Ontario Grade 12Advanced Functions (MHF4U).) (Antirequisite: MATH-1720.) (4 lecture hours, 1 tutorial hour per week.)
Second Year: ten courses, including COMP-2120, COMP-2540, COMP-2560, COMP-2650, COMP-2660, and STAT-2910.
Concepts of classes and objects, Java applications, frames, event handling, control structures, methods, arrays, string manipulations, object-based programming, object-oriented programming – inheritance, polymorphism, interface and abstract classes, anonymous classes, data structures in Java, exception handling, introduction to graphical user interface. (Prerequisite: COMP-1410 or COMP-2087.) (3 lecture hours and 1.5 laboratory hours a week)
An introduction to the programming and analysis of linear and non-linear internal (main store) data structures and associated algorithms. Topics include the formal notion of an algorithm, elementary time and space complexity; linear lists (such as stacks, queues, linked structures.); non-linear lists (trees, binary trees); recursion; sorting techniques (such as heap sort, quick sort, merge sort, shell sort.); searching techniques (such as binary search, binary search trees, red-black trees, hashing.); algorithm design paradigms (such as divide-and-conquer, dynamic programming, greedy algorithms); and applications. (Prerequisite: COMP-1000 and COMP-1410. Restricted to Computer Science students or permission of the School of Computer Science.) (3 lecture hours and 1.5 laboratory hours a week.)
This course introduces students to advanced software development techniques in system programming using the C language in the UNIX environment. Topics include introduction to modern operating systems, system calls, managing processes, the use of fork and exec, signals, file processing, filters, pipes, scripting languages, introduction to concurrency (e.g. synchronization), network programming (e.g. using sockets), client-server problems. (Prerequisite: COMP-1410 or COMP-2087)(3 lecture hours and 1.5 laboratory hours a week)
This course covers fundamental concepts of digital design and CPU architecture. Topics covered include number systems, switching algebra, logic gates, circuit minimization combinational circuit, read-only memory, random-access memory, programmable logic, synchronous and asynchronous sequential circuits, latches, flip-flops, registers, counters, register transfer language. and CPU architecture overview. (Prerequisite: COMP-1400 or COMP-2087) (3 lecture hours and 1.5 laboratory hours a week).
This course uses microprocessor programming to explore the structure of a CPU and related components. Topics include data representation, central processing unit, arithmetic logic unit, control unit, assembly language concepts, memory segmentation, programming a typical microprocessor (e.g. Intel processors), instruction set architecture-addressing modes and formats, register set, runtime stack, floating point processor. (Prerequisite: COMP-2650). (3 lecture hours and 1.5 laboratory hours a week)
This course will cover descriptive statistics, probability, discrete and continuous distributions, point and interval estimation, hypothesis testing, goodness-of-fit and contingency tables. (Prerequisite: Grade 12 “U” Advanced Level Mathematics (MHF4U, MCV4U, MDM4U) or Grade 11 Functions and Applications (MCF3M) or Grade 11 Functions (MCR3U).) (Course equivalencies and antirequisites as stated in the University of Windsor Senate Policy on Introductory Statistics Courses.) (May not be taken for credit after taking STAT-2920 or STAT-2950.) (3 lecture hours, 1 tutorial hour per week.)
Third Year: ten courses, including COMP-3150, COMP-3220, COMP-3300, COMP-3340, COMP-3400, COMP-3670.
This course will acquaint students with the Basic concepts of Database Systems. The topics covered will include 3-level architecture, introduction to file structures: B-trees, B+ Trees and Hashed files, relational model, relational algebra and calculus, SQL, and database design with Normalization Theory. (Prerequisite: COMP-2540 and COMP-2560 or COMP-2650.) (3 lecture hours a week)
This course builds on the knowledge of object-oriented programming, data structures, systems programming. Students are introduced to object-oriented software analysis and design concepts (such as cohesion and coupling), and design practices currently used in industry , (such as design patterns and refactoring). These concepts and practices will be discussed through case studies and programming exercises. (Prerequisite: COMP-2120 and COMP-2540)(3 lecture hours a week)
Operating system services, introduction to primary components of multi-programming operating systems, CPU scheduling, concurrent processes, process synchronization and interprocess communication, deadlocks, memory management, file systems, virtual memory, disk scheduling. (Prerequisite: COMP-2120, COMP-2540, COMP-2560, and COMP-2650 or COMP-2660.)(3 lecture hours a week)
This course is designed for people who want to make their data available to others over the Internet. Topics will include WWW authoring, WWW site planning, executable programs that create dynamic documents, the client-server model, multi-tier WWW software architecture, and security aspects. (Prerequisite: COMP-2120 and COMP-2540.) (3 lecture hours a week)
The main objective of this course is to explore advanced topics of the object oriented paradigm through the use of the C++ programming language. Topics covered include: advanced object oriented design, the use of abstraction to manage complexity, objects and classes, inheritance and class hierarchies, multiple inheritance, operator and method overloading, namespaces and visibility, templates, dynamic binding and virtual functions, exception handling, multi-threading and C++ standard library. In addition, the course will include a practical project, solving a real-life problem, implemented in C++, involving the client/server methodology, and an interface to a database using a graphics toolkit. (Prerequisites: COMP- 2120, COMP-2560.) (3 lecture hours a week)
This course is an introduction to computer networks and their protocols. Topics include: network architectures, transport, routing, and data link protocols, addressing, local area networks, flow and congestion control, and network security. Examples will be drawn primarily from the Internet (e.g. TCP, UDP, IP) protocol suite. (Prerequisite: COMP-2120, COMP-2540 or COMP-2547, COMP-2560 and COMP- 2650. Recommended corequisite: COMP-3300.)
Fourth Year: ten courses, including COMP-4150, COMP-4200, COMP-4220, COMP-4250, COMP-4990 (a 6.0 credit hour course).
This course covers both advanced theoretical database materials as well as specific database application development tools needed in the industry. The course completes database design and theory initiated in COMP-3150 and then adds database application development languages. Students will be exposed to the running environments (e.g., their compilers) and applying these on the database theory and design of the first part to develop full application. (Prerequisites: COMP-3150 and COMP-3300.) (3 lecture hours a week)
Students taking this course will learn how to create a mobile application for the Android platform. The topics covered will include: use of the mobile application development environment, specification of the requirements for a mobile application, design and implementation of the end-user interface, managing data in a mobile application environment, interfacing with data and programs residing on remote servers, creation of object-oriented programs to implement the mobile application, use of libraries and third-party software resources, deployment of a mobile application so that it is available to the public, and documentation, including creation of end-user instructions, and design/program documentation. Students will work individually, and will develop a mobile application that has been approved by the instructor of the course. (Prerequisites: COMP-3150, COMP-3220.) (3 lecture hours a week.)
This project-oriented course is designed to give students experience in developing projects using Agile software development process. The course will discuss principles of Agile methods for software development, with a concentration on the eXtreme Programming methodology, and will teach concepts related to its practices. Topics will include software and user interface design, build and development tools, data persistence, and proper software testing. Projects will involve the creation of industry- oriented software (e.g. in Java), and will expose participants to tools commonly used in industry. (Prerequisite: COMP-3220.)(3 lecture hours a week.)
This seminar course explores and investigates the role played by mass media in power relations and the social construction of reality from a critical political economy perspective. Topics may include: the political economy of mainstream media, including issues of media ownership and control; the intersections of media, corporate and governmental power; mainstream media coverage/representation of domestic and foreign affairs. (Prerequisite: CMAF-2250 or permission of the instructor.)
This course requires students to complete an application development project in some area of Computer Science under the supervision of a faculty member. The course will typically involve the development of some software or the design and/or implementation of some algorithm. Students will be required to submit project reports and give presentations on the technical components of the project. (a 6 credit course restricted to Semester 7 or Semester 8 students in Computer Science.) (Antirequisite: COMP- 4960.) (3 lecture hours or equivalent a week, for two terms.)