Learning about Computer Science is arguably one of the most important routes to understanding and participating in the world of the future.
Our Computer Science program will equip you with both foundational knowledge and applied skills, using a blend of hardware and software courses including extensive lab work. You will learn the methodologies that lead to efficient and accurate software development, and you can choose from a wide range of application areas, including machine learning, robotics, graphics, user interface design and data mining.
Lassonde has teamed up with a variety of companies to help you gain valuable professional experience. There is also an Industry Partnership/Dev Degree option, in which some of your academic courses involve learning on the job as you work at Shopify throughout the 4-year program.
The BSc, BA, iBSc, iBA and International Dual Degree all allow you to explore learning beyond computer science. In the BA, you can complement your studies with courses from the Liberal Arts such as humanities, social sciences, history, philosophy and more – fields that help you understand human social and creative endeavours and the potential impact of computing. In the BSc, complementary courses will be in the sciences (e.g., biology, chemistry, physics). You can also formalize such studies through a degree minor or double major.
Our International degrees give you the opportunity to learn computer science from a global perspective. Pick up a new language and study abroad as part of the iBA or iBSc degree. In the Dual Degree, you’ll spend a year studying in Germany and Greece.
Changing the world for the better, perhaps through artificial intelligence, data science, and other new fields of the future, requires more than a purely technical point of view. An awareness of impacts on the world and on our lives is a fundamental outcome of our programs.
A minimum of 30 course credits and at least half (50 percent) of the course credits required in each undergraduate degree program major/minor must be taken at York University.
For requirements by program, visit York’s academic calendar.
For requirements by program, visit York’s academic calendar.
Degree Checklists are a complete listing of all program-specific courses required for successful graduation.
• Advanced knowledge of C and Java – used for projects involving robotics, 3D graphics, software applications and app development
• MATLAB modelling software for signals, systems and digital communications processing
• Models and algorithms for data mining and machine learning
• Verilog circuit-modelling language, MIPS assembly language for embedded systems and FPGA circuit programming
• Software design models including design pattern and development
• Various networking tools including Wireshark
• Other languages including C++, Eiffel, Unix Shell, SQL/mySQL database, and PHP
• MATLAB modelling software for signals, systems and digital communications processing
• Models and algorithms for data mining and machine learning
• Verilog circuit-modelling language, MIPS assembly language for embedded systems and FPGA circuit programming
• Software design models including design pattern and development
• Various networking tools including Wireshark
• Other languages including C++, Eiffel, Unix Shell, SQL/mySQL database, and PHP
• IBM
• Nascent
• Caseware
• CGI
• RBC
• Thales
• The Regional Municipality of York
• Ontario Ministry of Education
• Ontario Ministry of Training, Colleges and Universities
• Nascent
• Caseware
• CGI
• RBC
• Thales
• The Regional Municipality of York
• Ontario Ministry of Education
• Ontario Ministry of Training, Colleges and Universities
Sample Courses (BSc Stream)
For information on course requirements for other streams, refer to degree checklists above)
First Year
Fall
EECS 1001, 3 Credits
An introduction to research directions within the department and more broadly within the field. Students will attend lectures and other events organized by the department. Note: This course is expected to be completed in the first year of study.
An introduction to research directions within the department and more broadly within the field. Students will attend lectures and other events organized by the department. Note: This course is expected to be completed in the first year of study.
EECS 1012, 3 Credits
The objectives of 1012 are threefold: providing a first exposure to event-driven programming, teaching students a set of computing skills (including reasoning about algorithms, tracing programs, test-driven development, unit testing), and providing an introduction to computing within a mobile, net-centric context. It uses a problem-based approach to expose the underlying concepts and an experiential laboratory to implement them. A mature mobile software infrastructure (such as HTML, CSS, and JavaScript) is used so that students can pick up key programming concepts (such as variables and control flow) within a client-server context without being bogged down in complex or abstract constructs. Laboratory exercises expose students to a range of real-world problems with a view of motivating computational thinking and grounding the material covered in lecture. Prerequisites: One of (1)-(3) below must be met: (1) (New high school curriculum): One 4U Math course with a grade of at least 75%. (2) Completion of six credits from York University MATH courses (not including courses with second digit 5) with a GPA of 5.00 or better over these credits; (3) Completion of six credits from York University mathematics courses whose second digit is 5, with an average grade not below 7.00 (B+). Course credit exclusions: AP/ITEC 3020 3.00, SC/CSE 2041 4.00 (prior to Summer 2013) Previously offered as: LE/CSE 2041 4.00, LE/EECS 2041 4.00.
The objectives of 1012 are threefold: providing a first exposure to event-driven programming, teaching students a set of computing skills (including reasoning about algorithms, tracing programs, test-driven development, unit testing), and providing an introduction to computing within a mobile, net-centric context. It uses a problem-based approach to expose the underlying concepts and an experiential laboratory to implement them. A mature mobile software infrastructure (such as HTML, CSS, and JavaScript) is used so that students can pick up key programming concepts (such as variables and control flow) within a client-server context without being bogged down in complex or abstract constructs. Laboratory exercises expose students to a range of real-world problems with a view of motivating computational thinking and grounding the material covered in lecture. Prerequisites: One of (1)-(3) below must be met: (1) (New high school curriculum): One 4U Math course with a grade of at least 75%. (2) Completion of six credits from York University MATH courses (not including courses with second digit 5) with a GPA of 5.00 or better over these credits; (3) Completion of six credits from York University mathematics courses whose second digit is 5, with an average grade not below 7.00 (B+). Course credit exclusions: AP/ITEC 3020 3.00, SC/CSE 2041 4.00 (prior to Summer 2013) Previously offered as: LE/CSE 2041 4.00, LE/EECS 2041 4.00.
MATH 1025, 3 Credits
Topics include spherical and cylindrical coordinates in Euclidean 3-space, general matrix algebra, determinants, vector space concepts for Euclidean n-space (e.g. linear dependence and independence, basis, dimension, linear transformations etc.), an introduction to eigenvalues and eigenvectors. Prerequisites: One 12U or OAC mathematics course or equivalent. Course credit exclusions: SC/MATH 1021 3.00, SC/MATH 2021 3.00, SC/MATH 2221 3.00, GL/MATH/MODR 26503.00. Prior to Fall 2009: Course credit exclusions: AK/AS/SC/MATH 1021 3.00, AS/SC/MATH 2021 3.00, AK/AS/SC/MATH 2221 3.00, GL/MATH/MODR 2650 3.00.
Topics include spherical and cylindrical coordinates in Euclidean 3-space, general matrix algebra, determinants, vector space concepts for Euclidean n-space (e.g. linear dependence and independence, basis, dimension, linear transformations etc.), an introduction to eigenvalues and eigenvectors. Prerequisites: One 12U or OAC mathematics course or equivalent. Course credit exclusions: SC/MATH 1021 3.00, SC/MATH 2021 3.00, SC/MATH 2221 3.00, GL/MATH/MODR 26503.00. Prior to Fall 2009: Course credit exclusions: AK/AS/SC/MATH 1021 3.00, AS/SC/MATH 2021 3.00, AK/AS/SC/MATH 2221 3.00, GL/MATH/MODR 2650 3.00.
MATH 1131, 3 Credits
Displaying and describing distributions; relations in categorical data; Simpson’s paradox and the need for design; experimental design and sampling design; randomization; probability laws and models; central limit theorem; statistical inference including confidence intervals and tests of significance; matched pairs; simulation. Prerequisite: At least one 12U mathematics course or equivalent is recommended. Course credit exclusion: SC/MATH 2560 3.00, SC/MATH 2930 3.00, GL/MATH/MODR 1610 3.00, SC/BIOL 2060 3.00
Displaying and describing distributions; relations in categorical data; Simpson’s paradox and the need for design; experimental design and sampling design; randomization; probability laws and models; central limit theorem; statistical inference including confidence intervals and tests of significance; matched pairs; simulation. Prerequisite: At least one 12U mathematics course or equivalent is recommended. Course credit exclusion: SC/MATH 2560 3.00, SC/MATH 2930 3.00, GL/MATH/MODR 1610 3.00, SC/BIOL 2060 3.00
Winter
EECS 1019, 3 Credits
Introduction to abstraction. Use and development of precise formulations of mathematical ideas. An informal introduction to logic; introduction to naïve set theory; induction; relations and functions; big O-notation; recursive definitions, recurrence relations and their solutions; graphs and trees. Prerequisites: SC/MATH 1190 3.00, or two 4U Math courses, including MHF4U (Advanced Function). Course credit exclusions: LE/EECS 1028 3.00, SC/MATH 1028 3.00, SC/MATH 2320 3.00.
Introduction to abstraction. Use and development of precise formulations of mathematical ideas. An informal introduction to logic; introduction to naïve set theory; induction; relations and functions; big O-notation; recursive definitions, recurrence relations and their solutions; graphs and trees. Prerequisites: SC/MATH 1190 3.00, or two 4U Math courses, including MHF4U (Advanced Function). Course credit exclusions: LE/EECS 1028 3.00, SC/MATH 1028 3.00, SC/MATH 2320 3.00.
EECS 1022, 3 Credits
Provides the first exposure to object-oriented programming and enhances student understanding of key computing skills such as reasoning about algorithms, designing user interfaces, and working with software tools. It uses a problem-based approach to expose the underlying concepts and an experiential laboratory to implement them. A mature mobile software infrastructure (such as Java and the Android programming environment) is used to expose and provide context to the underlying ideas. Laboratory exercises expose students to a range of real-world problems with a view of motivating computational thinking and grounding the material covered in lectures. Prerequisite: LE/EECS 1012 3.00 or LE/EECS 1015 3.00. Course credit exclusions: LE/EECS 1021 3.00, LE/EECS 1020 3.00 (prior to Fall 2014), LE/CSE 1020 3.00 (prior to Fall 2014), SC/CSE 1020 3.00 (prior to Summer 2013), AP/ITEC 1620 3.00.
Provides the first exposure to object-oriented programming and enhances student understanding of key computing skills such as reasoning about algorithms, designing user interfaces, and working with software tools. It uses a problem-based approach to expose the underlying concepts and an experiential laboratory to implement them. A mature mobile software infrastructure (such as Java and the Android programming environment) is used to expose and provide context to the underlying ideas. Laboratory exercises expose students to a range of real-world problems with a view of motivating computational thinking and grounding the material covered in lectures. Prerequisite: LE/EECS 1012 3.00 or LE/EECS 1015 3.00. Course credit exclusions: LE/EECS 1021 3.00, LE/EECS 1020 3.00 (prior to Fall 2014), LE/CSE 1020 3.00 (prior to Fall 2014), SC/CSE 1020 3.00 (prior to Summer 2013), AP/ITEC 1620 3.00.
MATH 1300, 3 Credits
Limits, derivatives with applications, antiderivatives, fundamental theorem of calculus, beginnings of integral calculus. Prerequisite: SC/MATH 1520 3.00 or SC/MATH 1710 6.00, or 12U Calculus and Vectors (MCV4U) or equivalent. Course credit exclusions: SC/MATH 1013 3.00, SC/MATH 1505 6.00, SC/MATH 1530 3.00, SC/MATH 1550 6.00, GL/MATH/MODR 1930 3.00, AP/ECON 1530 3.00; SC/ISCI 1401 3.00, SC/ISCI 1410 6.00.
Limits, derivatives with applications, antiderivatives, fundamental theorem of calculus, beginnings of integral calculus. Prerequisite: SC/MATH 1520 3.00 or SC/MATH 1710 6.00, or 12U Calculus and Vectors (MCV4U) or equivalent. Course credit exclusions: SC/MATH 1013 3.00, SC/MATH 1505 6.00, SC/MATH 1530 3.00, SC/MATH 1550 6.00, GL/MATH/MODR 1930 3.00, AP/ECON 1530 3.00; SC/ISCI 1401 3.00, SC/ISCI 1410 6.00.
MATH 1310, 3 Credits
Transcendental functions, differential equations, techniques of integration, improper integrals, infinite series. Prerequisite(s): One of SC/MATH 1013 3.00, SC/MATH 1300 3.00, GL/MATH 1901, SC/ISCI 1401 3.00; for non-science students only, six credits from SC/MATH 1530 3.00 and SC/MATH 1540 3.00, SC/MATH 1550 6.00, AP/ECON 1530 3.00 and AP/ECON 1540 3.00. Course credit exclusions: SC/MATH 1014 3.00, SC/MATH 1505 6.00, GL/MATH/MODR 1940 3.00, SC/ISCI 1402 3.00, SC/ISCI 1410 6.00.
Transcendental functions, differential equations, techniques of integration, improper integrals, infinite series. Prerequisite(s): One of SC/MATH 1013 3.00, SC/MATH 1300 3.00, GL/MATH 1901, SC/ISCI 1401 3.00; for non-science students only, six credits from SC/MATH 1530 3.00 and SC/MATH 1540 3.00, SC/MATH 1550 6.00, AP/ECON 1530 3.00 and AP/ECON 1540 3.00. Course credit exclusions: SC/MATH 1014 3.00, SC/MATH 1505 6.00, GL/MATH/MODR 1940 3.00, SC/ISCI 1402 3.00, SC/ISCI 1410 6.00.
Foundational science:
6 credits from SC/BIOL 1000 3.00, SC/BIOL 1001 3.00 (or SC/BIOL 1010 6.00),
SC/CHEM 1000 3.00, SC/CHEM 1001 3.00, SC/PHYS 1410 6.00 or
SC/PHYS 1420 6.00 or SC/PHYS 1010 6.00
Non-Science/Electives
Second Year
Fall
MATH 1090, 3 Credits
The syntax and semantics of propositional and predicate logic. Applications to program specification and verification. Optional topics include set theory and induction using the formal logical language of the first part of the course. Prerequisite: SC/MATH 1190 3.00 or SC/MATH 1019 3.00. Course credit exclusion: SC/MATH 4290 3.00.
The syntax and semantics of propositional and predicate logic. Applications to program specification and verification. Optional topics include set theory and induction using the formal logical language of the first part of the course. Prerequisite: SC/MATH 1190 3.00 or SC/MATH 1019 3.00. Course credit exclusion: SC/MATH 4290 3.00.
EECS 2001, 3 Credits
Introduction to the theory of computing, including automata theory, formal languages and Turing machines; theoretical models and their applications in various fields of computer science. The emphasis is on practical applications of the theory and concepts rather than formal rigour. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 1021 3.00 or LE/EECS 1022 3.00 or LE/EECS 1720 3.00 or LE/EECS 1030 3.00; LE/EECS 1028 3.00 or SC/MATH 1028 3.00 or LE/EECS 1019 3.00 or SC/MATH 1019 3.00. Previously offered as: LE/CSE 2001 3.00. PRIOR TO SUMMER 2013: SC/CSE 2001 3.00.
Introduction to the theory of computing, including automata theory, formal languages and Turing machines; theoretical models and their applications in various fields of computer science. The emphasis is on practical applications of the theory and concepts rather than formal rigour. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 1021 3.00 or LE/EECS 1022 3.00 or LE/EECS 1720 3.00 or LE/EECS 1030 3.00; LE/EECS 1028 3.00 or SC/MATH 1028 3.00 or LE/EECS 1019 3.00 or SC/MATH 1019 3.00. Previously offered as: LE/CSE 2001 3.00. PRIOR TO SUMMER 2013: SC/CSE 2001 3.00.
EECS 2030, 3 Credits
This course continues the separation of concern theme introduced in LE/EECS 1020 3.00 and LE/EECS1021 3.00. While 1020 and 1021 focuses on the client concern, this course focuses on the concern of the implementer. Hence, rather than using an API (Application Programming Interface) to build an application, the student is asked to implement a given API. Topics include implementing classes (non-utilities, delegation within the class definition, documentation and API generation, implementing contracts), aggregations (implementing aggregates versus compositions and implementing collections), inheritance hierarchies (attribute visibility, overriding methods, abstract classes versus interfaces, inner classes); applications of aggregation and inheritance in concurrent programming and event-driven programming; recursion; searching and sorting including quick and merge sorts); stacks and queues; linked lists; binary trees. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS1021 3.00 or LE/EECS 1020 (prior to Fall 2015) 3.00 or LE/EECS1022 3.00 or LE/EECS 1720 3.00. Course credit exclusions: AP/ITEC 2620 3.00. Previously offered as: LE/EECS1030 3.00, LE/CSE 1030 3.00.
This course continues the separation of concern theme introduced in LE/EECS 1020 3.00 and LE/EECS1021 3.00. While 1020 and 1021 focuses on the client concern, this course focuses on the concern of the implementer. Hence, rather than using an API (Application Programming Interface) to build an application, the student is asked to implement a given API. Topics include implementing classes (non-utilities, delegation within the class definition, documentation and API generation, implementing contracts), aggregations (implementing aggregates versus compositions and implementing collections), inheritance hierarchies (attribute visibility, overriding methods, abstract classes versus interfaces, inner classes); applications of aggregation and inheritance in concurrent programming and event-driven programming; recursion; searching and sorting including quick and merge sorts); stacks and queues; linked lists; binary trees. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS1021 3.00 or LE/EECS 1020 (prior to Fall 2015) 3.00 or LE/EECS1022 3.00 or LE/EECS 1720 3.00. Course credit exclusions: AP/ITEC 2620 3.00. Previously offered as: LE/EECS1030 3.00, LE/CSE 1030 3.00.
Winter
EECS 2011, 3 Credits
A study of fundamental data structures and their use in the efficient implementation of algorithms. Topics include abstract data types, lists, stacks, queues, trees and graphs. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”), LE/EECS 1030 3.00 or LE/EECS 2030 3.00, LE/EECS 1028 3.00 OR SC/MATH 1028 3.00 or LE/EECS 1019 3.00 or SC/MATH 1019 3.00. Previously offered as: LE/CSE 2011 3.00. The course discusses the fundamental data structures commonly used in the design of algorithms. Abstract operations on data structures are specified using pre and post conditions and/or system invariants. Trade-offs between a number of different implementations of each abstract data types (ADT) are analyzed. Each algorithm operating on data structures is proved correct using loop invariants or induction. Both formal and informal proofs are introduced though most of the reasoning is done informally. Data structures are coded and unit tested in an object-oriented language. Selecting the appropriate ADT and a suitable implementation depending on the application is covered. Prerequisites: EECS1019 or EECS1028, EECS1030 or 2030, MATHS1090
A study of fundamental data structures and their use in the efficient implementation of algorithms. Topics include abstract data types, lists, stacks, queues, trees and graphs. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”), LE/EECS 1030 3.00 or LE/EECS 2030 3.00, LE/EECS 1028 3.00 OR SC/MATH 1028 3.00 or LE/EECS 1019 3.00 or SC/MATH 1019 3.00. Previously offered as: LE/CSE 2011 3.00. The course discusses the fundamental data structures commonly used in the design of algorithms. Abstract operations on data structures are specified using pre and post conditions and/or system invariants. Trade-offs between a number of different implementations of each abstract data types (ADT) are analyzed. Each algorithm operating on data structures is proved correct using loop invariants or induction. Both formal and informal proofs are introduced though most of the reasoning is done informally. Data structures are coded and unit tested in an object-oriented language. Selecting the appropriate ADT and a suitable implementation depending on the application is covered. Prerequisites: EECS1019 or EECS1028, EECS1030 or 2030, MATHS1090
EECS 2021, 4 Credits
Introduction to computer organization and instruction set architecture, covering assembly language, machine language and encoding, addressing modes, single/multicycle datapaths (including functional units and controls), pipelining, memory segments and memory hierarchy. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 1021 3.00 or LE/EECS 1022 3.00 or LE/EECS 1720 3.00 or LE/EECS 1030 3.00. Previously offered as: LE/CSE 2021 4.00, SC/CSE 2021 4.00.
Introduction to computer organization and instruction set architecture, covering assembly language, machine language and encoding, addressing modes, single/multicycle datapaths (including functional units and controls), pipelining, memory segments and memory hierarchy. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 1021 3.00 or LE/EECS 1022 3.00 or LE/EECS 1720 3.00 or LE/EECS 1030 3.00. Previously offered as: LE/CSE 2021 4.00, SC/CSE 2021 4.00.
EECS 2031, 3 Credits
Tools commonly used in the software development process: the C language; shell programming; filters and pipes; version control systems and “make”; debugging and testing. Prerequisites: Cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); one of LE/EECS 1021 3.00 or LE/EECS 1022 3.00 or LE/EECS 1030 3.00 or LE/EECS 1720 3.00
Tools commonly used in the software development process: the C language; shell programming; filters and pipes; version control systems and “make”; debugging and testing. Prerequisites: Cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); one of LE/EECS 1021 3.00 or LE/EECS 1022 3.00 or LE/EECS 1030 3.00 or LE/EECS 1720 3.00
Non-Science/Electives
Third Year
Fall
EECS 3101, 3 Credits
Review of fundamental data structures. Analysis of algorithms: time and space complexity. Algorithm design paradigms: divide-and-conquer, exploring graphs, greedy methods, local search, dynamic programming, probabilistic algorithms, computational geometry. NP-complete problems. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 2011 3.00; SC/MATH 1090 3.00; SC/MATH 1310 3.00. Course credit exclusion: LE/SC CSE 3101 3.00.
Review of fundamental data structures. Analysis of algorithms: time and space complexity. Algorithm design paradigms: divide-and-conquer, exploring graphs, greedy methods, local search, dynamic programming, probabilistic algorithms, computational geometry. NP-complete problems. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 2011 3.00; SC/MATH 1090 3.00; SC/MATH 1310 3.00. Course credit exclusion: LE/SC CSE 3101 3.00.
Winter
EECS 3311, 3 Credits
A study of design methods and their use in the correct implementation, maintenance and evolution of software systems. Topics include design, implementation, testing, documentation needs and standards, support tools. Students design and implement components of a software system. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 2030 3.00 or LE/EECS 1030 3.00; LE/EECS 2011 3.00; SC/MATH 1090 3.00; LE/EECS 2031 3.00 or LE/EECS 2032 4.00. Course Credit Exclusions: LE/CSE 3311 3.00
A study of design methods and their use in the correct implementation, maintenance and evolution of software systems. Topics include design, implementation, testing, documentation needs and standards, support tools. Students design and implement components of a software system. Prerequisites: cumulative GPA of 4.50 or better over all major EECS courses (without second digit “5”); LE/EECS 2030 3.00 or LE/EECS 1030 3.00; LE/EECS 2011 3.00; SC/MATH 1090 3.00; LE/EECS 2031 3.00 or LE/EECS 2032 4.00. Course Credit Exclusions: LE/CSE 3311 3.00
At least 3 credits from
LE/EECS 3215 4.00, LE/EECS 3221 3.00
At least 3 credits from
LE/EECS 3401 3.00, LE/EECS 3421 3.00, LE/EECS 3461 3.00
At least 6 additional credits from
computer science courses at the 3000 level, for an overall total of at least 44 credits
from computer science courses.