Bachelor of Computer Science

Faculty of Computer Science

General Office: Computer Science Information Technology Centre, Room ITC314
Mailing Address: Faculty of Computer Science,
University of New Brunswick,
P.O. Box 4400, Fredericton, N.B.,
Canada, E3B 5A3 
Phone: (506) 453-4566
Fax: (506) 453-3566
Website: //


Dean: Luigi Benedicenti, PhD, PEng, SMIEEE, FEC

Assistant Dean (Teaching & Undergraduate Affairs): Paul Cook, BSc, MScCS, PhD

Assistant Dean (Research, Graduate Studies, Industry Outreach): Patricia Evans, BScCS, MScCS, PhD

  • Aubanel, Eric, BSc (Trent), PhD (Qu.), Prof - 2002
  • Bateman, Scott, BSc (UPEI), MSc, PhD (Sask), Assoc Prof - 2015
  • Benedicenti, Luigi, Laurea, PhD (Universita di Genova), Prof and Dean - 2017
  • Bidlake, Leah, BCS, BEd, MCS (UNB), Senior Instructor - 2016
  • Bremner, David, BSc (Calg), MSc (S.Fraser), PhD (McG.), Prof (Cross Appt – Mathematics and Statistics) - 1999
  • Cook, C. Paul, BSc (UBC), MScCS, PhD (Tor), Assoc Prof and Assistant Dean (Teaching and Undergraduate Affairs) - 2014
  • Evans, Patricia, BScCS (Alta), MScCS, PhD (UVic), Prof and Assistant Dean (Research, Graduate Studies, Industry Outreach) - 1997
  • Fleming, Michael, BSc (Mt.All.), MMath, PhD (Wat.), Prof - 2003
  • Ghorbani, Ali Akbar, BSc (Tehran), MScCS (GWU), PhD (UNB), Prof - 1999, Canada Research Chair Cybersecurity - 2016
  • Habibi Lashkari, Arash, BS (IAU), MSC (UM), PhD (UTM), Asst Prof - 2017
  • Kent, Kenneth, BSc (MUN), MSc, PhD (UVic), Prof - 2002
  • Lu, Rongxing, BSc, MSc (Tongi), PhD (Shanghai), PhD (Wat.), Assoc Prof - 2016
  • MacIsaac, Dawn, BPE (McM.), BEd (Qu.), BEng (McM.), MScE (UNB), PhD (UNB), Assoc Prof (Joint ECE) - 2002
  • Mandal, Kalikubjar (Kali) - BSc, MSc, M.Tech. CS (India), PhD (Wat.), Asst Prof - 2020
  • McAllister, Andrew, BA, MSc (CS) (UNB), PhD (Sask), Prof - 1994
  • Pochec, Przemyslaw, BEng (Warsaw), MSc(CS), PhD (UNB), Assoc Prof - 1989
  • Ray, Suprio, BE (NIT), MSc (UBC), PhD (Tor), Assoc Prof - 2015
  • Rea, Daniel, BCS, MCS, PhD (Man), Asst Prof - 2020
  • Song, Wei, BSc (HBU), MSc (BUPT), PhD (Wat), Assoc Prof - 2009
  • Webber, Natalie, BCS, MCS (UNB), Sr. Teaching Associate - 2000
  • Wightman, Richard, BScF, MScF (UNB), Sr. Teaching Associate - 2000
  • Zhang, Huajie, BSc (China), MSc (China), PhD (WOnt), Prof - 2002

Adjunct Professors:*

  • Alhadidi, Dima, MSc (Jordan), PhD (Concordia), Adjuct Prof - 2019
  • Bagheri, Ebrahim, BSc, MSc, PhD, Adjunct Prof - 2016
  • Buffett, Scott, BCS, MCS, PhD (UNB), Adjunct Prof - 2005
  • Herpers, Rainer, PhD, Adjunct Prof - 2018
  • Hinkenjann, Andre, PhD, Adjunct Prof - 2010
  • Mamun, Mohammad, Adjunct Prof - 2020
  • Munro, Ian, BA (UNB), MSc (Br Col), PhD (Tor), Adjunct Prof - 2005
  • Patros, Panos PhD, Adjunct Prof- 2019
  • Ploeger, Paul, PhD, Adjunct Prof  - 2018
  • Spencer, Bruce, BSc (Dal), MMath, PhD (Wat), Adjunct Prof - 1990
  • Stakhanova, Natalia, PhD Adjunct Prof - 2019

* Adjunct professors are involved in the graduate programs and research of the Faculty and are not usually involved in the undergraduate curriculum.

General Information

The Faculty of Computer Science was established at UNB on May 1, 1990, thereby becoming the first such faculty in Canada. Computer Science at UNB was established as a Department in 1968 and offered only the graduate MCS degree. Subsequently, in 1973, Computer Science became a School, administratively affiliated with the Faculty of Engineering, and offered the undergraduate BCS degree, conferring its first such degree in 1974. The Ph.D. program was approved in 1987, with its first degree awarded in 1990.

The Faculty offers a four-year undergraduate program leading to the degree of Bachelor of Computer Science. An Honours degree program is also offered. The program of studies is designed to enlarge the student's view of the world as well as to provide the background and qualifications to pursue careers in the field of computing. It is based on a set of core subjects which are intended to develop problem solving ability and provide a basic understanding of concepts fundamental to information processing. Students, through a choice of electives, may deepen their knowledge in computing subjects or develop an understanding in some complementary discipline.

The Faculty of Computer Science also offers the following degree program:

  • Bachelor of Science in Software Engineering (offered jointly with the Faculty of Engineering)

Co-operative Education Program

  1. The Faculty operates a full Co-operative Education (Co-op) Program that is available to academically qualified Computer Science students who have completed one year of study. Co-op is "hands-on" education, extending the learning process beyond the classroom into the workplace by alternating academic study terms with paid periods of career related work experience. This allows students to put classroom knowledge to practical and profitable use in the Canadian workplace. At UNB the Co-op Program in Computer Science consists of eight study terms and four to six work terms of four months each. This program is normally completed in five years, compared to the regular four year program, and allows students to obtain a Honours designation in addition to Co-op. Students normally apply for this program during their second term of study and enter the program at the end of their first year, although later application and entry into the program is possible.
  2. Co-op is a designated option within the BCS, BA/BCS, BCS/BSc, and BScSwE programs in the Faculty of Computer Science.
  3. To be eligible for a co-op work term, students must normally have achieved a minimum of a 2.7 GPA in the study term preceding their application for employment. 
  4. Students must register for each work term in order that they be considered as full-time students while working.
  5. A work term fee will be charged for each 4 month work term registered.
  6. The overall assessment of the work period is the responsibility of the Faculty of Computer Science. The work period assessment shall consist of two components: 1) student performance as evaluated by a coordinator, given input from the employer, and 2) a work report graded by a coordinator or a member of faculty.
  7. Students must have a minimum of four work terms of four months each, alternating with study terms, with satisfactory employer evaluations and work term reports in order that the Co-op designation appear on their transcripts. Two back-to-back work terms are possible, giving periods of work up to eight months in duration.
  8. A co-op student’s first work term will normally be 4 months in duration. After the first 4-month work term, the student shall return to UNB to study for at least one term before going out for another work term.
  9. A co-op student will normally complete at least one Summer study term during their degree program. This Summer study term will normally be completed before the student applies for their third work term. (i.e. Normally, no more than two 4-month work terms should be completed before the Summer study term.)
  10. Students will normally have at least one study term after their last work term.
  11. Each successful work term will be noted on the student's transcript.
  12. Upon graduation, Co-op students will have the designation "Co-operative Education" following the degree designation on their transcript.
  13. Students must be registered as full-time students in order to be eligible to apply for Co-op jobs.

Professional Experience Program (PEP)

This program adds flexibility to the work experiences available to our students by providing opportunities to work for employers who prefer the PEP model over the Co-op model. Moreover, many transfer students into Computer Science find it easier to fit a PEP with their academic program than a traditional sequence of Co-op work terms.

  • Program Description
  1. The PEP requires an extended period of continuous work experience, the duration of which may be 12 or 16 months.
  2. A Co-op coordinator provides the necessary liaison and support activities for students in this program.
  3. The overall assessment of the PEP experience is the responsibility of the Faculty of Computer Science. The work period assessment shall consist of two components: 1) student performance as evaluated by a coordinator, given input from the employer, and 2) a work report graded by a coordinator or a member of faculty.
  4. While no specific course credit will be assigned to the PEP, a negotiated component of a PEP project may form an integral part of the student's senior project, based on a written proposal, progress reports, and faculty supervision in accordance with standard CS 4983 regulations.
  • Program Registration
  1. The PEP is a designated option within the BCS, BA/BCS, BCS/BSc, and BScSwE degree programs in the Faculty of Computer Science.
  2. The PEP will be open to all Faculty of Computer Science students with good academic standing, who will have completed between 80 and 120 credit hours at the beginning of the PEP work term, including having completed 50% of the required Computer Science courses, and having completed at most 2 Co-op work terms. To be considered in good academic standing for the purpose of PEP registration, a student must normally have achieved a minimum of a 2.7 GPA in the study term preceding their application for employment.
  3. Students may transfer from CS Co-op to PEP under the restrictions of not having completed more than 2 Co-op work terms. Students who have registered for a PEP normally will not be eligible to enter, or re-enter, the CS Co-op program.
  4. Registration in this option is contingent upon receiving an offer of employment from an approved PEP employer and will depend on the number of PEP positions available. Each student normally will be allowed only one such PEP registration during their degree program.
  5. Official University registration is required for each student in the PEP. This will enable PEP students to remain on the Registrar's list in good standing during the time encompassed by their off-campus PEP period.
  6. Each student in this program will be charged a PEP fee.
  7. A suitable notation will be placed on each student's transcript in recognition of this PEP option.

University Regulations

Students are strongly advised to read the General University Regulations, Section B of this Calendar, and in particular the subsection headed "Grading System and Classification". Any point not covered in the following regulations will be governed by the General University Regulations.

Students applying for a second undergraduate bachelor's degree, transferring from other institutions, or changing degree programs are particularly advised to consult Section B of this Calendar. Questions concerning the application of regulations should be directed to the Registrar in writing.

General Regulations

  1. To earn a BCS degree, a student must complete at least 40 courses, as specified below. Completing these requirements involves, completing at least 133 credit hours worth of courses.
  2. Any course taken to satisfy any of the requirements for a BCS degree must be passed with a minimum grade of C.
  3. Developments in the BCS program may lead to changes in the requirements for the degree. The University reserves the right to require candidates already enrolled to meet the revised requirements where practicable.


The basic curriculum for the BCS program and a specialization in cybersecurity are given below to assist the student in planning a program of studies.

Students will typically take 5 or 6 courses per term to complete the program in 8 study terms. Students whose grade point average drops below 2.7 (B-) should restrict their course load to 5 courses, or fewer.

Every student must complete at least 12 credit hours of courses with an extensive English writing component with a minimum grade of “C”. These courses are indicated with a “W” in the Calendar. AESL 1011 and AESL 1012 will not count for credit towards the BCS degree, nor will they count towards the writing component requirement.

Core Curriculum (Required)

Computer Science Core Requirement

(Please note: As of the 2016-2017 academic year the following set of core courses is in effect for students admitted to the BCS program).

CS 1073 Introduction to Computer Programming I (in Java)
CS 1083 Introduction to Computer Programming II (in Java)
CS 1103 Introduction to Databases
CS 1303 Discrete Structures
CS 2043 Software Engineering I
CS 2253 Machine Level Programming
CS 2263 Systems Software Development
CS 2333 Computability and Formal Languages
CS 2383 Data Structures and Algorithms
CS 3383 Algorithm Design and Analysis
CS 3413 Operating Systems I
CS 3853 Computer Architecture and Organization
CS 3873 Net-centric Computing
CS 3997 Professional Practice

Technical Elective Requirement

In addition to the courses listed above, students are required to select a total of 7 approved technical elective courses totalling minimum of 21 ch (worth a minimum of 3 ch each, except that CS 4983 is permitted), as follows:

  • 7 CS/SWE courses, at least 3 of which must have an extensive computer programming component (indicated with a [P] in the Calendar).

At least 4 of these 7 technical elective courses must be 3rd year or above, and at least 1 of these must be 4th year or above. CS 4983 does not satisfy the requirement for the 4th year course.  NOTE: Courses worth 6 credit hours or more will count as two courses toward this requirement. 

Mathematics and Statistics Core Requirement

1. MATH 1003 Introduction to Calculus I
2. MATH 1013 Introduction to Calculus II
3. One of:
MATH 1503 Introduction to Linear Algebra
MATH 2213 Linear Algebra I

One of the following two options:

4. STAT 3083 Probability and Mathematical Statistics I
5. STAT 3093 Probability and Mathematical Statistics II


4.STAT 2593 Probability and Statistics for Engineers
5. One of:
CS 3113       Introduction to Numerical Methods
MATH 2003  Intermediate Mathematics I
MATH 2513  Multivariable Calculus for Engineers 
MATH 3033 Group Theory
MATH 3063 Geometry
MATH 3093 Elementary Number Theory
MATH 3213 Linear Algebra II
MATH 3333 Combinatorial Theory
MATH 3343 Networks and Graphs
MATH 3353 Computational Algebra
MATH 3363 Finite Math
MATH 3373 Introduction to Game Theory
MATH 3383 Introduction to Mathematical Logic
MATH 3413 Introduction to Numerical Methods
MATH 3803 Introduction to Mathematics of Finance
STAT 3303 Survival Analysis
STAT 3373 Elementary Experimental Design
STAT 4083 Multivariate Methods for Statistical Learning

Another approved MATH/STATS elective at the 2000 level or above, approved by the Assistant Dean (Undergraduate) in the Faculty of Computer Science.

Breadth Core Requirement

BCS students must complete at least 10 approved courses (minimum of 30 ch) in subjects other than computer science and mathematics, which means that CS, SWE, MATH, and STAT courses are not eligible for this requirement. Selected ECE courses may be taken toward this requirement with prior approval from the Assistant Dean (Undergraduate). One or more of ENGL 1103 and ENGL 1145 are strongly encouraged.

At least 2 of these courses (minimum of 6 ch) must be at the 2000 level or above.


  • Courses worth 6 credit hours or more will count as two courses toward this requirement.
  • AESL 2011 and AESL 2012 (or equivalent) count as first-year English.
  • See the GENERAL NOTES section below for a list of courses that are not for BCS credit.

Free Electives

In addition to the courses taken to satisfy the core curriculum requirements, BCS students must complete at least 4 approved free electives (minimum of 12 ch). Students can choose combinations of electives to allow them to complete a specialization in cybersecurity with the BCS degree (see below), to complete a Minor in another area, or simply to acquire more breadth in their studies. Note: Courses worth 6 credit hours or more will count as two courses toward this requirement.

General Notes

  1. Credit is not given toward the BCS degree for MATH 1823, MATH 1833, MATH 2633, ADM 2623, PHIL 3101.
  2. UNIV 0101 (formerly UNIV 1001), AESL 1011 and AESL 1012 will not be counted for credit toward degree programs offered by the Faculty of Computer Science.
  3. Credit will not be given for both CS 1303MATH 2203.
  4. None of ECE 2213, ECE 2214, ECE 2215, or ECE 3221 will normally be counted for credit toward the BCS degree.

Common First Year (5 courses each term)

CS 1073 Intro to Computer Programming I (in Java)
CS 1083 Introduction to Computer Programming II (in Java)
CS 1103 Introduction to Databases
CS 1203 Overview of Computer Science
CS 1303 Discrete Structures
MATH 1003 Intro to Calculus I, or MATH 1053 Enriched Intro to Calculus I
MATH 1013 Intro to Calculus II, or MATH 1063 Enriched Intro to Calculus II

Three  term courses toward the Breadth Core Requirement, selected from Arts, Business Administration, Engineering and Science.

Honours in Computer Science

The requirements for the Bachelor of Computer Science with Honours are the following:

  1. At least 5 of the student's 7 Technical Elective courses must be 3rd year or above, and at least 2 of these 7 courses must be 4th year or above. 
  2. The student must have a cumulative grade point average of 3.0 or above.
  3. As one of the two required 4th year Technical Elective courses, the student must complete CS 4997 (Honours Thesis) with a grade of B or better.

Students satisfying the requirements for an Honours degree will receive a "First Class Honours" designation if their CGPA is 3.5 or above, and "Honours", if their CGPA is 3.0 or above and less than 3.5.

Students may elect to combine Honours with the specialization in cybersecurity mentioned below, but an Honours designation can be obtained without completing this specialization.

Specialization in Cybersecurity

Emphasizes the protection of information assets from cybersecurity threats. The requirements for the Specialization in Cybersecurity are to complete the following courses, each with a grade of C or better:

First and second year courses should be carefully chosen to include courses which are prerequisites to courses intended to be taken in third and fourth years. 

Minor in Computer Science

Students who are not registered in a degree program in the Faculty of Computer Science may complete a Minor in Computer Science by completing 8 approved term courses from CS, INFO, or SWE, including the following six required courses:

CS 1073,
CS 1083
CS 1303 (or MATH 2203),
CS 2043,
CS 2263 and
CS 2383.

For students graduating with a Bachelor of Science in Engineering in Electrical Engineering, the set of six required courses may alternatively be:

CS 1003,
CS 1023,
CS 1303 (or MATH 2203),
CS 2383,
CS 3413 (or ECE 4251), and
ECE 4403

In addition to the six required courses, all students pursuing a Minor in Computer Science must complete two additional CS or SWE courses, one of which must be at the second year level or above, with the second of those being at the third level or above. 

Courses of 1 or 2 credit hours cannot be counted for credit towards the Minor. CS courses that are designated for non-CS students will not count towards the Minor. A grade of C or better is required in all courses offered for the Minor. Students working towards a Minor in Computer Science are encouraged to make their intentions known to the Faculty of Computer Science.

Concurrent BA/BCS Degree Program

The Faculty of Computer Science, in cooperation with the Faculty of Arts, offers students the opportunity to obtain both a BCS degree and a BA degree by selecting a well-planned choice of courses. To complete the concurrent degree, students must satisfy both the BA and BCS degree requirements. Completing these requirements will involve completing at least 151 credit hours worth of courses over a five year period. In order to meet the requirements for this program, it is necessary for the student to obtain advice from both faculties. By completing this program, the student will meet the core requirements for the basic BCS degree; participation in the Computer Science Co-op program will lengthen the student's program. For specific details on course planning, see the Faculty of Arts sections of the Calendar.

Admission requirements:
Students must satisfy the admission requirements for both the Bachelor of Computer Science and the Bachelor of Arts as given in section B.

Concurrent BCS/BSc Degree Program

Most scientific careers now require a thorough background in computing. Many careers in the computing field require primary knowledge in a scientific application area. The Faculty of Science and the Faculty of Computer Science offer students a program in which to pursue a science major and a complete computer science education. Students may enrol in a concurrent degree program in which at the end of five to five-and-a-half years of study a student will graduate with both a BSc with a major in Biology, Chemistry, Earth Sciences, Mathematics, or Physics, and a BCS. Participation in the Computer Science Co-op program will lengthen the student's program. The program is designed so that if a student decides to opt for BCS alone, the adjustments can be easily made. Students in the concurrent degree program are able to count many of their courses toward the requirements of both degrees so it is important to select courses carefully from the outset, in consultation with an advisor.

Admission requirements:
Students must satisfy the admission requirements for both the Bachelor of Computer Science and the Bachelor of Science as given in Section B.

Course Selections
While the first and second years given below are typical, the third, fourth and fifth year will depend on the CS and Science degree programs chosen (Major, Honours, etc.)

Year 1 CS 1073, CS 1083, two of (CS 1103, CS 1203, or CS 1303), MATH 1003, MATH 1013, (or MATH 1053, MATH 1063) plus four term lecture courses in first year science, all four of which are accompanied by labs, chosen from Biology, Chemistry, Physics, and Earth Sciences. The particular sciences and labs chosen will depend on the intended Science program. MATH 2203 may be substituted for CS1303. Students planning to major or honour in Mathematics are strongly recommended to choose MATH 2203 rather than CS 1303. Credit will be given for only one of CS 1303 and MATH 2203.

Year 2 One of (CS 1103, CS 1203, or CS 1303), CS 2043, CS 2263, MATH 2213, one of (CS 2333, CS 1103, or CS 2383), MATH 2003, plus 6 term courses in Science (minimum 18 ch) chosen in consultation and with the approval of the advisor in your chosen Science discipline.

Year 3, 4, 5 These must be arranged in consultation with your CS and Science advisors and will be different for each student.

Certificate in Software Development


This certificate program is designed to provide individuals, especially working adults, with an opportunity to acquire the formal background necessary to become effective participants in the Information Technology industry. This program is directed towards people who are not currently enrolled in an undergraduate degree program at UNB. It is expected that applicants will have good command of high school mathematics. If not, they will have to take MATH 0863 (pre-calculus math) before applying to the program. Credits earned in the certificate program may subsequently be recognized for credit in an undergraduate degree program.

The program consists of 6 core courses and 4 elective courses.

Core Courses

CS 1073 Introduction to Computer Programming I (in Java)
CS 1083 Introduction to Computer Programming II (in Java)
CS 1303 Discrete Structures
CS 2043 Software Engineering I
CS 2263 Systems Software Development
CS 2383 Data Structures and Algorithms

Elective Courses: 4 courses (at least 3 credit hours each) chosen from:

  • CS 1103: Introduction to Databases
  • CS/SWE courses at the 2000 level or above that can be taken for credit by Bachelor of Computer Science students.

Any course taken to satisfy any of the requirements for a Certificate in Software Development must be passed with a minimum grade of C.

This program is intended as a part-time program. The program can be completed in 16 months with effort. Sample schedules can be found below.

Fastest Possible Completion Schedule (16 months):

Fall: CS 1073, CS 1303.
Winter: CS 1083, one elective
Summer: CS 2263, two electives
Fall: CS 2043CS 2383, one elective

Two courses per term (20 months):
Fall: CS 1073, CS 1303.
Winter: CS 1083, one elective
Summer: CS 2263, two electives
Fall: CS 2043, CS 2383
Winter: Two electives

Work Term Component

An optional four month work term for students in the Undergraduate Certificate in Software Development is available as specified by the following regulations:

  1. The work term will be administered by the CS Co-op Program. A work term evaluation and work term report will be part of the experience.
  2. Certificate students are eligible for at most one work term, available only between September and April.
  3. Certificate students must have achieved a minimum of a 2.7 gpa on all courses taken relevant to the Certificate Program.
  4. Students must have completed at least 8 ch in the Certificate Program before being eligible to apply for a work term.
  5. Students must normally have a minimum of one study term remaining following their work term.
  6. There will be a work term fee associated with the work term experience. This fee will be the same as the work term fee for a Co-op work term.

Computer Science (BCS) Entrance Program

  1. High School students who do not meet the admission requirements noted in the Admission Chart for direct entry to the BCS program but have a passing grade in each of the required courses and a minimum admission average of 60% may be considered for full time admission to an Entrance Program to the extent that capacity allows.
  2. Students enrolled in the BCS Entrance program are restricted to a maximum of 28 ch in the first year of studies. This is a prescribed set of courses as determined by the Faculty, including Math 1003, five courses in Computer Science one breadth course (e.g., Arts, Business Administration) and UNIV 0101.
  3. Students are required to meet with their Faculty Advisor on a semi-annual basis.
  4. Students who successfully complete their first year with a minimum grade of C in at least 20 ch of courses, obtain a minimum GPA of 2.0 regardless of the total number of credit hours completed, successfully complete UNIV 0101 and other conditions as may be outlined by the Faculty, will be approved for admission to the BCS program for the upcoming academic year.
  5. Students who do not succeed in completing the program requirements may not be permitted to continue in the BCS Entrance program nor enter the BCS degree program.
  6. Students can only register in the BCS Entrance program once.