Bachelor of Computer Science

Select start date and campus

Close

Applying as a Canadian applicant

Domestic students should apply online or by phone at 1-888-892-2228.

Applying as an International applicant

International students should apply online.
Close

Campus tours

Campus tours are one of the best ways to experience Conestoga. During this time, we are offering online guided tours to show you all Conestoga has to offer.

Book your tour

Virtual tours

If you can't make an on-campus tour or attend one of our events, the virtual tour is a great way to visit us.

View our Virtual tour

Courses - January 2026

Level 1

Course details

Conestoga 101
CON0101

Description: This self-directed course focuses on introducing new students to the supports, services, and opportunities available at Conestoga College. By the end of this course, students will understand the academic expectations of the Conestoga learning environment, as well as the supports available to ensure their academic success. Students will also be able to identify on-campus services that support their health and wellness, and explore ways to get actively involved in the Conestoga community through co-curricular learning opportunities.
  • Hours: 1
  • Credits: 0
  • Pre-Requisites:
  • CoRequisites:

Software Engineering Fundamentals
CSCN71000

Description: Students will be introduced to common software design and documentation standards, including requirements gathering and specifications, design/testing documentation and specifications, implementation, and testing of software to meet those specifications. A focus of this course is the construction of defect-free software artifacts that meet customer needs as described in the software system’s specifications.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Computer Systems Architecture Fundamentals
CSCN71010

Description: Students will be introduced to computer hardware and systems architecture, with emphasis on how software interacts with systems hardware. Knowledge of underlying computer hardware architectures is critical to the development of software that meets performance requirements, which is an important aspect of software quality. This knowledge is also necessary to support the evaluation of software toolkits, programming languages, and algorithmic techniques, and to facilitate efficient problem determination and troubleshooting of software artifacts. Topics will include machine / assembly language, input and output from a computer system, and obstacles to performance constraints such as CPU clock speeds, caches, memory, input/output devices, and related topics.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Project I: Software Implementation and Unit Testing
CSCN71020

Description: Delivery of high quality software requires developers to deploy appropriate testing strategies. Through project-based learning, students will gain software testing experience through the creation of unit tests for sample software which will lead to the development of an expansive test project. During the semester, these concepts will support learning outcomes in other courses in the program, while also developing communications skills by creating and presenting reports on test projects. During the final project phase, students will add new functional program code to the provided system, while developing a comprehensive test suite.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Scientific and Technical Communications
ENGL71200

Description: Documents that are written for scientific or technical purposes are written in a very precise and specific way that does not permit variations in interpretation. This course will prepare students to communicate scientific and technical information concisely and accurately using appropriate formats and graphic support. Students will study technical communication theory/ practice and apply the knowledge to creating, critiquing, and presenting technical documents. An oral presentation will emphasize the clear and concise communication of technical details and the use of appropriate visual support for technical information.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Linear Algebra and Discrete Mathematics
MATH71010

Description: In this course, students will acquire critical thinking and abstraction skills to build mathematical models of abstract concepts in order to solve real-world problems. Students will also improve their understanding of recursion through the analysis of sequences and recurrence relations. Topics in this course include: methods of solving a set of linear equations; matrix algebra and matrix determinants; linear transformations; sequences, series and their applications; spatial vectors; numerical integration and its applications; eigenvalues and eigenvectors; set theory; combinatorics; and logic
  • Hours: 56
  • Credits: 4
  • Pre-Requisites:
  • CoRequisites:

Programming Principles
PROG71990

Description:

This course introduces software design and implementation using programming languages that provide minimal abstraction from the CPU's Instruction Set Architecture (ISA). These lower-level programming languages offer a unique combination of performance and flexibility while demanding a disciplined level of design and implementation. Topics in this course include algorithm design, modular code design, programming style, functions, arrays, pointers, strings, data structures, and file I/O. Proper design is emphasized to produce reliable, robust and maintainable software.

  • Hours: 56
  • Credits: 4
  • Pre-Requisites:
  • CoRequisites:

Level 2

Course details

Project II: Team Based Software Development
CSCN71030

Description: Rarely will software be developed by an individual. In industry, software is designed, implemented and tested in team environments. By simulating real-world practices, this course will leverage awareness of group dynamics to engage students in team-based testing exercises, extending testing strategies from previous course work. Through a project-based approach, students will collaboratively develop, employ and report on the effectiveness of software testing strategies. Software projects developed and tested in this course reinforce the learnings from previous and concurrent courses in the program. Communications skills will be enhanced by reporting on benchmark outcomes to team leaders and management.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Object Oriented Programming
PROG71020

Description: Students acquire the knowledge of building high quality, robust, well designed software applications using object oriented design principles through an industry-standard programming language. Students apply modern, iterative development techniques to build progressively complex, interactive applications using modern software development environments and frameworks.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites: PROG71985 OR PROG71990
  • CoRequisites:

User Experience Design
PROG71030

Description: Usability is an important characteristic of software quality. This course provides the student with the design theory involved in creating effective, high-quality user experiences that meet user requirements, taking into account human psychology, human behaviour, and the particular needs of users with accessibility goals. Within this context, students will examine the best methods for human / machine interaction that fulfill user requirements as part of a complete end-to-end user experience. Techniques for design, implementation, and evaluation will be covered. Emphasis will be placed on design of quality user experiences (UX) and accessibility.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Operating Systems and Security Fundamentals
PROG71040

Description: This course provides an in-depth study of the organization of operating systems. Topics covered include operating system services, process scheduling, process synchronization, multi-process computation, deadlock avoidance, and file system organization and integrity. In addition, the course will focus on specific operating system capabilities such as secure, high reliability support features for application-level software.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Data Structures and Algorithms
PROG72370

Description:

This course emphasizes problem-solving and software design that use efficient and effective data organization. Essential advanced data structures are discussed, analyzed, and implemented. Algorithms for sorting, searching, and other data transformations are studied and implemented. Efficiencies and costs of algorithms are evaluated. Students will learn how selecting different algorithms affects the performance of software systems.

  • Hours: 56
  • Credits: 4
  • Pre-Requisites: PROG71985 OR PROG71990
  • CoRequisites:

Group Dynamics
SOC71500

Description: This course will focus on comprehensive theoretical understanding of group process, personal skill development and application through intensive team work. These skills are of critical importance in both professional and social settings. Through guided exploration and application of theoretical paradigms and practical strategies, students will achieve the necessary skills to succeed in and lead effective teams. The course consists in an intensive experiential approach – learning by doing – enabling participants to become effective, practiced team members with experience applying skills necessary for leadership, analysis and evaluation, problem solving, and conflict management. Individual and team activities enhance participants’ skills to work with a variety of personalities in diverse situations, and to effectively assume various professional roles within a team.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Level 3

Course details

Co-op and Career Preparation
CEPR71050

Description: This series of modules prepares degree level students for job searching for their co-op work terms with the guidance of a Co-op Advisor. Students will examine the co-operative education policies and procedures and will learn the expectations, rules, and regulations that apply in the workplace concerning social, organizational, ethical, and safety issues while deepening their awareness of self-reflective practices. Students will critically reflect on their skills, attitudes, and expectations and evaluate available opportunities in the workplace. Successful completion of these modules is a requirement for co-op eligibility.
  • Hours: 14
  • Credits: 1
  • Pre-Requisites:
  • CoRequisites:

Introduction to Database Systems
CSCN72000

Description: Today, database systems are ubiquitous in the computing landscape; from enterprise servers to smartphones, persistent storage of application data typically involves a relational database. This course will introduce students to the fundamentals of relational database management systems. Students will apply mathematical foundations, abstraction, critical thinking and design skills in the modelling of data requirements with the goal of achieving specific database system implementations and query processing techniques. Students will acquire a solid foundation in the use of the SQL data sublanguage, a common means of accessing data in a relational database. In addition, students will explore topics including flat file and in-memory database systems, and NoSQL solutions.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Software Quality I: Testing Tools and Methodologies
CSCN72010

Description: Quality cannot be added to a software project after the software is built; rather, quality must be built into the product at every phase of development. This course provides an introduction to software quality with an emphasis on testing tools and methodologies so students can better assess software development practices and tools with respect to their impact on software quality. Students will utilize their critical thinking skills to understand risk, risk assessment and measures of software complexity. Students will be exposed to issues surrounding the management of risk and how risk can be communicated to management. Topics in the course include introductions to unit, integration, system, acceptance, regression, functional, and performance testing, defect reporting and causal analysis, and software quality metrics.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Computer Networks
CSCN72020

Description: This course will provide students with the knowledge to design, implement and troubleshoot modern computer networks based on TCP/IP. The student will be introduced to broad networking concepts including protocols, topologies, transmission media and security, using hands-on examples of networking issues.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Project III: Software Development Life Cycle
CSCN72030

Description: All software development and test practitioners in industry must have strong awareness of the software development life cycle (SDLC) and its impact in software project management. This course will examine the SDLC and project management through the development of a major term project. This project requires students to work in teams on an end-to-end solution requiring design, coding, testing and validation. Communications, data management and critical thinking skills are further emphasized through each team’s project management objectives.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Systems Analysis and Design
SENG71000

Description: This course provides an overview of the Systems Development Life Cycle (SDLC) and introduces students to several alternative methodologies of software development encountered in industry. Students will be exposed to the complete workflow surrounding several SDLC methodologies. Students will exercise their critical thinking skills as they undertake the analysis and design phases of different methodologies in relevant case studies using the Unified Modeling Language (UML) as a documentation standard. In addition, students will compare and assess the different SDLC approaches and how these differing approaches impact risk, project management, and software quality.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Level 4

Course details

Project IV: Mobile and Networked Environments
COMP72070

Description: Developing software solutions for today’s connected and mobile world requires specific considerations that target data processing in mobile and networked environments. Cross platform and security issues across distributed and mobile applications is emphasized. This project requires students to work in teams on an end-to-end solution requiring design, coding, testing and validation. Communications, data management and critical thinking skills are further emphasized through each team’s project reporting objectives.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Software Design Techniques
CSCN72040

Description: Characteristics of high-quality software designs include performance, reliability, extensibility, robustness, and maintainability. In this course, students will exercise their critical thinking skills to develop, refine, and test software designs, and analyze the inherent trade-offs (e.g. performance and extensibility) that exist with specific design patterns. In addition, students will be introduced to the development of system documentation using the Unified Modelling Language (UML) for the purpose of communicating their design decisions to clients and other software developers. Students will extend their understanding of data and algorithm design through the formal introduction of software design patterns, and techniques that enhance the quality and portability of software over multiple platforms.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Mobile and Networked Systems
CSCN72050

Description: Mobile applications are much more complex than more traditional deployment models – such applications are inherently distributed, with greater degrees of complexity, significantly greater performance challenges, and considerably higher risk for both outright data loss and security failures. Students will expand their understanding of computer systems architecture through the examination of networked computing solutions, such as distributed and cloud-based platforms, and service-oriented architectures. Students will also be introduced to mobile application development within these networked computing solutions. Students will be introduced to the trade-offs between native and browser-based mobile applications and the implications of design choices with respect to quality characteristics.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites: CSCN72020
  • CoRequisites:

Software Quality II: User Experience Evaluation
CSCN72060

Description: This course builds on the knowledge of software quality fundamentals that students acquired in previous semesters, and expands on that knowledge through practice of test and behavior-driven design techniques and usability testing. Within the course, students will combine their understanding of software testing fundamentals with their background in the study of human behaviour to assess the quality of software designs from the user experience (UX) perspective.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Advanced Technical Communication
ENGL73170

Description: Building on skills taught in ENGL71200, this course emphasizes collaborative, problem-solving, and entrepreneurial skills required for advanced scientific and technical communication. Students will work in writing teams, adapt technical content for different platforms, and learn to manage and report on ongoing technical communication tasks. They will identify technical research and documentation needs related to their field of study in order to produce a major course project.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites: ENGL71200
  • CoRequisites:

Probability and Statistics
STAT72000

Description: Risk analysis that supports the eventual release of high quality software solution to a customer requires further depth in the mathematics of probability and statistics. Students will be exposed to how the study of the mathematics of probability and statistics can support informed decision making during the design, implementation, testing and release of software. Examples are formulated from various disciplines, including engineering, scientific and others.
  • Hours: 56
  • Credits: 4
  • Pre-Requisites:
  • CoRequisites:

Level 5

Course details

Co-op Work Term I (Bach Computer Science)
COOP72050

Description: The co-op work term will provide students with college-approved work experience within an information technology environment. Students will be provided an opportunity to: build skills (physical and procedural skills including accuracy, precision, and efficiency); assist in the acquisition of knowledge in and application of knowledge gained in the academic setting (concepts and terminology in a discipline or field of study); develop critical, creative, and dialogical thinking (improved thinking and reasoning processes); cultivate problem solving and decision-making abilities (mental strategies for finding solutions and making choices); explore attitudes, feelings, and perspectives (awareness of attitudes, biases, and other perspectives, ability to collaborate); practice professional judgment (sound judgment and appropriate professional action in complex, context dependent situations); and reflect on experience (self-discovery and personal growth from real-world experience).
  • Hours: 420
  • Credits: 14
  • Pre-Requisites:
  • CoRequisites:

Level 6

Course details

Parallel Computing Techniques
CSCN73000

Description: Modern computer systems often require the implementation of parallelizable algorithms to take best advantage of their underlying computer architectures. This course will introduce the concepts behind machine and network architectures that facilitate parallel computing, and the development and testing of parallel computing algorithms that exploit such architectures. Topics such as data and task parallelism, distributed file systems, synchronization primitives and other concurrency control mechanisms, scale-out multi-machine architectures, and multi-core CPU architectures will be explored. Students will reinforce and enhance testing methodologies through exploration of best practices in the testing of solutions that employ parallel algorithms. In addition, students will be introduced to existing tools that address these problems in specific software development environments.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Software Quality III: Build and Release
CSCN73010

Description: The software industry requires careful management of the build and deployment of large-scale software solutions. Scale creates additional stress in terms of the management of the quality of each new release to the customer. Students will improve their existing skills and awareness of tools and techniques through the study of topics including the selection and use of appropriate tools for large-scale projects, and the management of the build and release phases of a software project. Critical thinking skills are further enhanced through topics such as risk analysis to determine whether software is ready for release, risk management of outsourced software projects, the management of contractors, and strategies to estimate and manage software development costs within a project without sacrificing the quality of releases.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Project V: Advanced Software Development
CSCN73030

Description: In this course, students will research and examine what software development and release management teams in industry do in selecting custom software tools that support enterprise level solutions. Within a team-based project, students will exercise their research and critical thinking skills to identify opportunities for the adoption of tools to solve specific development, management or testing problems. Deliverables from the project include relevant design and product documentation, along with process documentation outlining the operation of the tools/toolchain to support the delivered software prototype published in a manner suitable for enterprise solution teams.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Introduction to Software Security
SECU73000

Description: Identify theft, electronic banking and credit card theft, password theft, and the leakage of private information are commonplace occurrences in the Internet age. In this course, students will study a range of security vulnerabilities and approaches to address or minimize them. This course will examine in detail algorithmic and data processing security, with a focus on enhancing software quality and reliability through the study of topics such as encryption techniques, stack, heap, and buffer overrun vulnerabilities, malware and malware detection, and emerging techniques. Practical exercises in penetration testing, will enhance understanding of how software security contributes to reliable, secure software systems.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Electives: Interdisciplinary
Student must pass 1 Course(s), selected in the Student Portal from available course options
Interdisciplinary Elective Details

Electives: Interdisciplinary
Student must pass 1 Course(s), selected in the Student Portal from available course options
Interdisciplinary Elective Details

Level 7

Course details

Software Quality IV: Performance and Analysis
CSCN73040

Description: Students will continue to build their awareness of industry practice by examining how to undertake accurate performance testing and to assess how such testing can perturb the performance characteristics of the system under test. This course will include topics such as code and algorithm optimization, instrumentation and measurement techniques, performance measurement toolkits, experiment designs, and performance metrics, which students may apply in the tuning of software solutions or in risk analysis and decision making.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Project VI: Software Efficiency and Performance
CSCN73060

Description: The data processing requirements of modern software continues to expand exponentially, with the need for systems to be as efficient as possible. There is a growing need for high efficiency algorithms and architecture that maximize performance in parallel and non-parallel processing environments. Students will execute a project related to enhancing solution efficiency and performance. Critical thinking and communications skills are enhanced by evaluating and documenting system efficiency.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Enterprise Application Development
PROG73020

Description: Successful application design for large enterprise systems requires the understanding and capability to plan for, implement and test high levels of component integration, and performance analysis. Students will study different architecture frameworks for the development of large-scale, interdependent enterprise systems. Team-based activities allow students to develop skills and to test their deployments against enterprise requirements, and to work in cross-functional teams.
  • Hours: 56
  • Credits: 4
  • Pre-Requisites:
  • CoRequisites:

Analysis of Algorithms
PROG73030

Description: This course introduces students to the study of algorithm analysis, effective algorithm design techniques, and approaches to handling situations in which no feasible algorithms are known. In this course, students will utilize their critical thinking skills to test for efficient algorithms to solve variants of fundamental problems in Computer Science that manifest themselves in a variety of application domains. Students will also learn approximation techniques that permit the development of a feasible, though approximate, solution to these problems where an efficient, exact answer cannot be computed in a reasonable amount of time.
  • Hours: 42
  • Credits: 3
  • Pre-Requisites:
  • CoRequisites:

Electives: Interdisciplinary
Student must pass 1 Course(s), selected in the Student Portal from available course options
Interdisciplinary Elective Details

Electives: Interdisciplinary
Student must pass 1 Course(s), selected in the Student Portal from available course options
Interdisciplinary Elective Details

Program outcomes

  1. Apply mathematical foundations, algorithmic principles, and computer hardware fundamentals to create, test and evaluate computing solutions.
  2. Apply concepts of human relations and organizational behaviour to support the establishment and maintenance of effective working relationships in diverse team environments.
  3. Address individual needs for continuing education and professional development to maintain technical skills, professional competence and awareness of emerging technologies.
  4. Apply critical thinking skills to evaluate current techniques, skills, tools, strategies, and methodologies used in the operation, testing and design of computing systems to adapt and improve development outcomes.
  5. Design and produce reports, presentations, design documentation, and instructions to communicate complex computer science concepts to technical and non-technical audiences using various written, oral, and graphic methods.
  6. Apply professional ethics, accountability and equity to demonstrate, value, and respect diversity across global and societal contexts.
  7. Design and develop robust software systems that meet specified functional and non-functional design requirements validated in accordance with industry best practices and standards as well as legal, environmental, cultural and societal considerations.
  8. Mitigate risk using software quality assurance principles and project management practices to support decisions in high quality computing systems development processes.