Unlock the code to a bright future in this program that is more hands-on than you’ll find almost anywhere else. We partner with industry to get you career ready and we let you specialize in the area that interests you most. If you choose co-op, you’ll find flexible sequencing of four, eight or 12 months. Add another credential to your previous earned university degree, and fast track through the program. Our computer science students are employed in their field within two years. We’re tied for first in grad employment rates in Ontario.
Specialization Options: Artificial Intelligence, Game Development, Multimedia, Networks and Security
Taking Computer Science at University of Windsor has allowed me to explore so many different fields and topics that now I have a much better idea of what I want to achieve in my future. From data structures to website design classes, I've gained useful knowledge in various areas thanks to the amazing faculty and meaningful friendships. Additionally, I've had the unique experience of taking on a co-op position at the University, which has helped me gain valuable connections and real-world experience with modern web development techniques in a fast-paced team and environment. Overall, the program has certainly paved a bright pathway for my future by preparing me for the ever advancing computer science industry.
Ashad
Web & Digital Project CoordinatorAfter the first day I started playing video games, I knew I wanted my future job to do something with them. I am now studying computer science and hopefully will be able to program games of my own soon. It took me years of researching in different fields before I knew what path I wanted to choose in life. Although I know the expectation of figuring life out and choosing your future job when you’re a teenager could be a confusing process, I would be glad to help you in this journey. Come find me at Head Start this summer to put any confusion to rest before attending the University of Windsor in the fall :)
Parmida
Student AmbassadorCourse Requirements: Advanced Functions/MHF4U, English/ENG4U
Strongly Recommended: Calculus & Vectors/MCV4U
Minimum Average: 70% (70% average of math courses)
Minimum Average (Co-op): 75% (70% average in all attempted math courses)
Mean Average: 86%
Learn more about Course Equivalencies
Course Requirements: Advanced Functions. Grade 12 English.
Strongly Recommended: 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 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.
It is recommended that students pursuing a Multi-media specialization should pick 6 courses (in consultation with an academic advisor) from Visual Arts and Communication, Media and Film.
The major average will be calculated on the basis of grades obtained in COMP-1000, COMP-1400, COMP- 1410, COMP-2120, COMP-2140, COMP-2310, COMP-2540, COMP-2560, COMP-2650, COMP-2660, COMP-3110, COMP-3150, COMP-3220, COMP-3300, COMP-3540, COMP-3670, COMP-4400, COMP-4540, and either COMP-4960 or COMP-4990.
Specializations
Students may specialize in one of the following areas. A special annotation will be made on the transcript for a specialization in one of the following areas, if the specified courses are completed:
Ten courses, including: COMP-1000, COMP-1400, COMP-1410, MATH-1020, MATH-1250 (or MATH-1260) , MATH-1720 (or MATH-1760), and MATH-1730.
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 mathematical logic, proof methods and development of proof techniques, mathematical induction, sets, equivalence relations, partial ordering relations and functions. (Prerequisite: One of COMP-1000, MATH-1250, MATH-1260 or MATH-1270.) (2 lecture hours, 2 tutorial hours per 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.)
This course will cover antiderivatives, the definite integral and the fundamental theorem of calculus, techniques of integration, applications, improper integrals, sequences and series, convergence tests, power series, Taylor and Maclaurin series, and polar and parametric coordinates. (Prerequisite: MATH- 1760 or MATH-1720.) (3 lecture hours, 1 tutorial hour per week.)
Ten courses, including COMP-2120, COMP-2140, COMP-2310, COMP-2540, COMP-2560, COMP-2650, COMP-2660, and STAT-2910 (or STAT-2920).
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)
Pragmatic and theoretical aspects of grammars, recognizers, and translators for computer languages will be discussed. The topics covered will include regular languages and context-free languages, including parsers and parser generators for such languages. Attribute grammars, syntax-directed translation, interpreters and compilers will also be discussed. (Prerequisite: COMP-1000 and COMP-2120.) (3 lecture hours and 1.5 laboratory hours a week)
An introduction to Mathematical Logic, Set Theory, and Graph Theory. Topics include propositional logic, first order logic, proof techniques, mathematical induction, sets, operations on sets, relations, operations on relations, functions, countable and uncountable sets, graph-theoretic concepts, such as graph connectivity, graph isomorphism, trees, Euler graphs. (Restricted to students in Computer Science.) (Prerequisite: COMP-1000 and MATH-1020.) (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 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.)
This course will cover descriptive measures, combinatorics, probability, random variables, special discrete and continuous distributions, sampling distribution, and point and interval estimation. (Prerequisite: MATH-1730.) (3 lecture hours, 1 tutorial hour per week.)
Ten courses, including: COMP-3110, COMP-3150, COMP-3220, COMP-3300, COMP-3540, COMP-3670, and MATH-3940 (or MATH-3800).
This course introduces the fundamental concepts, common principles, and general techniques of software engineering. It discusses the main issues involved in the development life-cycle of nontrivial software systems, including process models, feasibility studies, requirements elicitation and definition, rapid prototyping, design methodologies, verification and validation, and software evolution. Students taking this course are required to work on projects, which are designed to go through the major phases of large-scale software system development. (Prerequisite: COMP-2120 and one of COMP-2540 or COMP-2547)(3 lecture hours a week)
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)
Finite Automata, regular expressions and languages; properties of regular languages; context-free grammars and languages; pushdown automata; properties of context-free languages. Introduction to Turing machines; recursive functions; undecidability. (Prerequisites: COMP-2140, COMP-2310 and COMP-2540.) (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.)
This course is an introduction to the applications of numerical methods using computer-oriented algorithms such as finding roots, solving systems of equations, differentiation, integration and optimization. (Restricted to students in Computer Science.) (Prerequisites: COMP-1410, MATH-1730 and one of MATH-1250, MATH-1260 or MATH-1270.) (3 lecture hours per week)
This course will cover iterative solution methods for nonlinear equations in one variable, Lagrange interpolation, cubic splines, Bezier curves, numerical differentiation and integration (quadrature), initial value problems, linear algebraic systems (direct methods) and Newton’s method for nonlinear systems. (Prerequisites: MATH-2780, MATH-2790, and one of MATH-1250, MATH-1260 or MATH-1270.) (3 lecture hours per week.)
Ten courses, including COMP-4400, COMP-4540, COMP-4990 (a 6.0 credit hour course)
Basic concepts of programming languages. Comparative study of the major programming paradigms, including imperative, object-oriented, functional, logic, and concurrent programming. Principles of programming language design and evaluation. Syntax, semantics and implementation techniques of programming languages. (Prerequisite: COMP-2140, COMP-2310 and COMP-2540.) (Restricted to Computer Science students.) (3 lecture hours a week.)
The intent of this course is to introduce the fundamental techniques in the design and analysis of computer algorithms. Topics include: asymptotic bounds, advanced data structures, searching, sorting, order statistics, oracle arguments, divide-and-conquer, greedy algorithms, dynamic programming, graph algorithms, NP completeness, and approximation algorithms. (Prerequisite: COMP-2310 and COMP- 2540) (Restricted to students in any Honours Computer Science program or consent of instructor.) (3 lecture hours a week.)
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.)
The University of Windsor sits on the traditional territory of the Three Fires Confederacy of First Nations, which includes the Ojibwa, the Odawa, and the Potawatomi. We respect the longstanding relationships with First Nations people in this place in the 100-mile Windsor-Essex peninsula and the straits – les détroits – of Detroit.