COMPUTER SCIENCE and INFORMATION TECHNOLOGY

Computer Science Faculty
Stephen Howard, Associate Professor, Chair
Cezar Câmpeanu, Associate Professor
Wayne Cutcliffe, Associate Professor
David LeBlanc, Associate Professor
Qiang Ye, Associate Professor
Yingwei Wang, Assistant Professor

Departmental Website
Computer Science Major
Computer Science Honours
Computer Science Cooperative Education
Computer Science Minor
Specializations (Video Game Programming)
Post-Baccalaureate Certificate in Video Game Programming
Computer Science Courses
Information Technology Courses

DEGREE PROGRAMS
The Department of Computer Science and Information Technology offers a program of study leading to a Bachelor of Science degree with a major in Computer Science and honours in Computer Science. An optional co-operative education stream and a video game programming specialization are available for computer science majors.

ADMISSION TO PROGRAMS
Students intending to take a major in Computer Science must make their intent known to the Department as soon as possible so that the Department will be able to give early and continued advice for course selection and further study or employment after graduation. Such prospective majors should make their intent known to the Department during their Second Year but should do so no later than Third Year. Students wishing to pursue the computer science co-operative education stream should signify their intention during the first semester of their Second Year.

SELECTION OF COURSES
Students majoring in Computer Science are permitted to take courses with the Information Technology, IT, designation for degree credit only as general electives, except where otherwise noted. Courses with the IT designation can not count towards a Minor in Computer Science.
>>>top

REQUIREMENTS FOR A MAJOR IN COMPUTER SCIENCE
The program requires a total of 120 semester hours of course credit. A total of 48 semester hours of Computer Science is required:  42 semester hours of core courses, plus  6 semester hours of electives above the 100 level. The core consists of Computer Science 151-152, 241, 252, 261, 282, 332, 342, 352, 361, 371, 421, 481, and  482.  To receive credit towards a Major in Computer Science, all core computer courses listed require 60% as a minimum grade. All core courses have three semester hours of credit.  The required Mathematics courses are: Mathematics 151-152, 221, 242, 261.

Also required are 6 semester hours of credit from Biology, Chemistry or Physics; 9 semester hours of credit from the Faculty of Arts;  Global Issues 151 and 1 other Writing Intensive course, and 3 semester hours of credit from the School of Business Administration. An additional 9 semester hours of credit must be selected from either the Faculty of Science (other than Computer Science and Information Technology) or the School of Business Administration. Students are strongly encouraged to complete some of the Science and Business courses early in their program.
Note:  Students majoring in Computer Science with a specialization should consult their specific requirements which differ from the normal requirements listed above.

The following sequence of courses is suggested:

First Year 
Computer Science 151-152  6 credit hours 
Mathematics 151-152 6 credit hours
Global Issues 151 and one other Writing Intensive Course 6 credit hours
Science Electives  6 credit hours
Business & Arts Electives 6 credit hours 
Second Year 
Computer Science 241  3 credit hours 
Computer Science 252  3 credit hours 
Computer Science 261 3 credit hours 
Computer Science 282  3 credit hours 
Mathematics 242  3 credit hours 
Mathematics 261  3 credit hours
Electives 12 credit hours
Third Year 
Computer Science 332 3 credit hours 
Computer Science 342 3 credit hours
Computer Science 352  3 credit hours 
Computer Science 361  3 credit hours 
Computer Science 371  3 credit hours
Mathematics 221  3 credit hours
Electives  12 credit hours
Fourth Year
Computer Science 421 3 credit hours
Computer Science 481  3 credit hours 
Computer Science 482  3 credit hours
Computer Science Electives  6 credit hours
Electives  15 credit hours
 Total 120

>>>top

REQUIREMENTS FOR HONOURS IN COMPUTER SCIENCE
The Honours program in Computer Science is designed to provide research experience at the undergraduate level. It is intended for students who are planning to pursue postgraduate studies in Computer Science or a related discipline, or who are planning a career where research experience would be an asset.

The program requires a total of 126 semester hours of course credit. A total of 60 semester hours of Computer Science is required: 42 semester hours of core courses, a 6 semester hour Honours project (CS 490), plus 12 semester hours of electives above the 100 level, at least 3 semester hours of which must be at the 400 level. The core consists of Computer Science 151-152, 241, 252, 261, 282, 332, 342, 352, 361, 371, 411, 421, and 481. All core courses have three semester hours of credit. The required Mathematics courses are: Mathematics 151-152, 221, 242, 251, 261. Also required are 6 semester hours of credit from Biology, Chemistry or Physics, 9 semester hours of credit from the Faculty of Arts;  Global Issues 151 and 1 other Writing Intensive course, and 3 semester hours of credit from the School of Business Administration. An additional 9 semester hours of credit must be selected from either the Faculty of Science (other than Computer Science and Information Technology) or the School of Business Administration. Students are strongly encouraged to complete some of the Science and Business courses early in their program.

To graduate with the Honours in Computer Science, students must achieve a minimum average of 75% in all Computer Science courses combined, and must achieve a minimum overall average of 70% in all courses submitted for the degree.

First Year 
Computer Science  151-152  6 credit hours 
Mathematics 151-152  6 credit hours 
Global Issues 151 and one other Writing Intensive Course 6 credit hours
Science Electives  6 credit hours 
Business & Arts Electives  6 credit hours 
Second Year
Computer Science 241  3 credit hours
Computer Science 252 3 credit hours
Computer Science 261  3 credit hours
Computer Science 282  3 credit hours
Mathematics 242  3 credit hours
Mathematics 251  3 credit hours
Mathematics 261 3 credit hours
Electives 9 credit hours
Third Year
Computer Science 332  3 credit hours
Computer Science 342  3 credit hours
Computer Science 352  3 credit hours
Computer Science 361 3 credit hours
Computer Science 371  3 credit hours
Computer Science elective 3 credit hours
Mathematics 221  3 credit hours
Electives  9 credit hours
Fourth Year 
Computer Science 411  3 credit hours
Computer Science 421  3 credit hours
Computer Science 481  3 credit hours
Computer Science 490 (Honours Research Project) 6 credit hours
Computer Science Electives  9 credit hours
Electives  12 credit hours
 Total 126

>>>top

Entrance Requirements
Permission of the Department is required for admission to the program. Students must normally have a minimum average of 70% in all previous courses. The Department expects first-class or high second-class standing in all previous Computer Science courses. Admission is contingent upon the student finding a project advisor. Students interested in doing Honours are strongly encouraged to consult with the Department Chair as soon as possible, and no later than January 31 of the student’s third year. Students admitted to the program need acceptance by the Department of a topic for the Honours project by March 31 of their third year.

COMPUTER SCIENCE COOPERATIVE EDUCATION PROGRAM
The Computer Science Co-operative Education Program is an optional five-year program that complements the Bachelor of Science Program in Computer Science with a minimum of four (4) terms of supervised work experience divided between at least two placements. A placement is the continuous period a student spends with one employer. Each placement can be one work term or two work terms in duration and must start at the beginning of January, May or September. A work term is 14 to 16 weeks in duration but in exceptional circumstances a shorter duration work period may be permitted. Normally, the first work placement commences after the student has completed two years of the BSc degree program. 

Students should note that the Co-operative Education Program is not a summer work program. At least one work term will be taken during a regular academic term. A limited number of placements will be available in a given year. Eligibility for a placement will be decided by the Co-op Coordinator and Program Director while hiring decisions for Co-op students are made by the employers.

Students who successfully complete all requirements of the program will have a notation entered on their transcript and their degree parchment.

Admission Requirements
Applications to join the Computer Science Co-operative Education Program are made at the end of the first or second academic terms to the Computer Science Co-op Program Director. A student must be a full time student majoring in Computer Science at the time of application. In addition to their interest, motivation, and abilities assessed through an interview, students must complete the requirements for the first year of their undergraduate BSc program in Computer Science with a cumulative average of 70% or higher and a Computer Science average of 70% or higher to be admitted to the program. Requirements for a first work term normally include the completion of 60 credit hours towards the BSc Degree at the time of the placement including CS 151, CS 152, CS 241, CS 252, CS 261, and CS 282. Students not admitted may reapply upon completion of their next academic semester.

Continuance Requirements
To remain in the Co-op program, the student must continue to satisfy all the requirements of the BSc Program, and maintain cumulative and Computer Science averages of 70%, in addition to achieving satisfactory performance on previous work terms. Students must register for a Co-operative education work term before each work term. They must also attend the seminars and workshops organized to provide the required employment orientation and professional development. They may also be required to give talks to their peers introducing skills and methodology learned on the job. 

Program Requirements
In addition to satisfying the requirements for the BSc Program in Computer Science, Co-operative education students must fulfill the following work term requirements:

1. The completion of a minimum of four terms of work experience in approved, academically relevant, employment situations of 14 to 16 weeks duration each.

2.  A satisfactory employer evaluation for each co-op work term.

3.  The satisfactory completion of a written report as required for each work term. 

4.  Fulfillment of any other requirements specified by the Department, such as the participation in seminars and workshops. 

Withdrawal Conditions
Students may be required to withdraw from the Co-op Program if:

1.  They are dismissed from, discontinue, or fail an appropriate and approved Co-op work term due to a fault on their part;

2.  They fail to submit or successfully complete a work term report;

3.  They do not satisfy the continuance requirements including the required course grade average necessary for continuance in Cooperative Education; 

Students have the right of appeal under Academic Regulation 12 .

Work Term Registration
Students are required to register for all work terms according to normal course registration procedures. A work term course grade is placed on a students' academic transcript following completion of each work term and graded on a pass/fail basis.

Fees
Students pay for their academic courses as they are taken. Students accepted to the Cooperative Education Program are required to pay regular student fees and a Co-operative Education Program Fee ( (seeCalendar section on fees).
>>>top

Requirements for a Minor in Computer Science
Students may obtain a minor in Computer Science by completing at least 21 semester hours of courses in Computer Science defined as follows:

Computer Science 151-152  6 credit hours 
Computer Science 252  3 credit hours
Computer Science 261  3 credit hours
plus 3 semester hours of Computer Science at the 300 level or above, and an additional 6 semester hours of Computer Science at the 200 level or above.  

SPECIALIZATIONS
The department offers specializations in core areas of computer science and departmental expertise. Specializations provide the student with a suggested course of study concentrating in a particular field of computer science.

VIDEO GAME PROGRAMMING
To achieve a specialization in Video Game Programming, the student must complete the following courses in addition to the normal requirements for a major in computer science: IT 132, CS 212, CS 311, CS 312, CS 323, CS 362, CS 435 and CS 436. In addition, students must take CS 483 instead of CS 482.  

Students wishing to pursue a specialization in Video Game Programming must apply for admission to the specialization at the end of their second year. Students must have an overall average of 75% and cannot have a mark less than 70% in any of the courses CS 152, CS 261 and CS 212.

Students pursuing the specialization must maintain an overall average of 75% in subsequent terms. Furthermore, students in the specialization cannot receive a mark of less than 70% in the courses CS 311, CS 435 and CS 436.

The above requirements may be waived in exceptional cases by a decision of the department.  

POST-BACCALAUREATE CERTIFICATE IN VIDEO GAME PROGRAMMING
The Post-Baccalaureate Certificate in Video Game Programming is intended for students who already possess an undergraduate degree in computer science from an accepted recognized university. Students are required to take a total of 11 courses, all related to video game development. These courses include 2 background undergraduate level courses and 9 ‘500-level’ courses, all but 2 of which are cross-listed with advanced undergraduate level courses, but require an additional portfolio-building project. Upon completion of program, students will possess an in-depth knowledge of video game programming techniques and fundamental tools, development experience in a real-world environment, and a portfolio demonstrating programming proficiency as applied to video game development.

Program Requirements
To achieve a Post-Graduate Certificate in Video Game Programming, students must complete the following courses with a minimum mark of 60% in each course and an overall average at the end of each semester of 75%: IT 132, CS 212, CS 501, CS 511, CS 512, CS 523, CS 535, CS 536, CS 562, CS 581, and either CS 584 or CS 585. If a student can demonstrate to the department that they have already received credit (with a minimum mark of 75%) for one or more of these courses, the student may be allowed (solely at the discretion of the department) to complete the requirements of the course by completing a significant portfolio-building project.

Admission Requirements
To be considered for acceptance, applicants must possess an undergraduate degree in computer science, software engineering, or equivalent from an accepted recognized university with an overall average of 75% in all computer science (or equivalent) courses. Applicants meeting this requirement will be considered according to the Application Process described below.

Admission Process
The application deadline is February 1 (must be received by this date). If seats are still available after the applicants meeting the deadline have been considered, the department may review late applications.

Applicants must submit:

  • a completed copy of the university’s Undergraduate Application Form  (including a statement of English Proficiency),
  • the relevant application processing fee for an “advanced standing” student (detailed on the Undergraduate Application Form),
  • a full transcript of their relevant undergraduate degree (or transcript to date if degree is incomplete),
  • three letters of reference.

Letters of reference should address the applicant’s academic performance, work ethic and suitability for professional employment. Have each reference submitted directly to the UPEI Registrar's Office, or have your reference given back to you in a sealed envelope with the reference's signature over the seal and submit with your application. 

Applications will be ranked according to undergraduate academic performance and provided references. Leading applicants will then be interviewed (via telecommunications technology) by a committee made up of members of the department until the committee is satisfied it has identified a sufficient number of potential students. Acceptance letters, conditional offers, letters indicating that the applicant is on the waiting list, or letters indicating that the application will not be considered at this time, will be issued by the Registrar’s Office.

The successful applicant who receives either an unconditional or conditional offer must confirm his/her acceptance in writing and include a deposit of the program fee. This deposit is only refundable in exceptionable circumstances and solely at the discretion of the department. This confirmation must be received by the Registrar’s Office (for transmittal to the Accounting Office) by the date specified in the letter.

Final official transcripts for students who have either received conditional offers or have been placed on the waiting list must be received by the Registrar’s Office by June 15.  

Questions about this program should be directed to the Department of Computer Science & Information Technology: csit@upei.ca

COMPUTER SCIENCE COURSES

151 INTRODUCTION TO COMPUTER SCIENCE I
This course is the first of a two-course sequence designed to introduce the fundamentals of Computer Science and prepare students for further studies in this or related fields.  Emphasis is on problem solving and software development in a high level object-oriented language such as Java. Topics include computer fundamentals; the programming process; language syntax and semantics; simple data types, classes, methods, expressions, control structures, input/output, arrays, and graphical user interfaces.
PREREQUISITE: Grade XII academic Mathematics.
Three lecture hours and 1.5 hour of  laboratory session a week. 
NOTE: CS 151 and Engineering 132 cannot be double credited 

152 INTRODUCTION TO COMPUTER SCIENCE II
This course continues the development of object-oriented programming topics introduced in CS 151. Topics include elementary searching and sorting, inheritance, polymorphism, recursion, exception handling, graphical user interfaces, introduction to data structures (lists, stacks, queues, trees, graphs), threads, network programming. 
PREREQUISITE: CS 151 with a minimum grade of 60%
Three lecture hours and 1.5 hour of laboratory session a week.  

185 CO-OP WORK TERM I
This course is available to computer science co-op students only. It is an integration of professional development workshops with learning through productive work experiences. Through the workshops, students develop professional skills in writing resumes, conducting job searches, interviewing, and professional etiquette. A work term report related to a technical problem/issue within the organization where the student is working is required. Students are assessed on a pass/fail basis. 
PREREQUISITE: Acceptance into the Computer Science Co-operative Education Program. 
Hours of credit: 1 
>>>top

206 ADVANCED WEB DEVELOPMENT AND PROGRAMMING
(see Information Technology 206)

212 NON-TRADITIONAL PLATFORM COMPUTING
This course introduces the student to programming in non-traditional environments, including smart phones and other mobile platforms. The course will present a study of the architecture, operating system and native language of these devices.
PREREQUISITE: CS 261 and CS 252
Three lecture hours per week.

241 DIGITAL SYSTEMS
This course provides an introduction to digital systems, beginning with elementary components such as logic gates, from which are constructed components such as adders and comparators, and progressing to more complex systems such as programmable logic devices, memory and processor units. Students acquire skills in the design and analysis of combinational and sequential digital systems, CAD design and simulation tools for complex systems, and construction of digital systems based upon a modular methodology.
PREREQUISITE: CS 152 or Engineering 132,  three semester hours of Mathematics, or permission of the instructor (based on completion of CSC 151 with first class standing)
Three lecture hours and a three hour laboratory session a week.

252 COMPUTER ORGANIZATION AND ARCHITECTURE
This course provides a basic understanding of the organization and architecture of modern computer systems. It examines the function and design of major hardware components both from a designer’s perspective and through assembly language programming. Topics include components and their interconnection, internal/ external memory, input/output subsystems, processors, computer arithmetic, instruction sets, addressing modes, and pipelining.
PREREQUISITE: CS 152
Three hours a week. 
 
261 DATA STRUCTURES AND ALGORITHMS
This course continues the study of data structures, recursive algorithms, searching and sorting techniques, and general strategies for problem solving. It also introduces complexity analysis and complexity classes.
PREREQUISITE: CS 152 and six semester hours of Mathematics.
Three lecture hours a week.
 
262 COMPARATIVE PROGRAMMING LANGUAGES
This course examines the principal features of major types of programming languages, including procedural, logical, functional and object-oriented languages. Features include parameter-passing mechanisms, control structures, scope, and binding rules. Each language type is illustrated by considering a specific language.
PREREQUISITE: CS 261
Three lecture hours a week.

282 INTRODUCTION TO SYSTEM PROGRAMMING
This course introduces the student to development in the Unix/Linux environment, including C programming from the perspective of a second language. Topics include development tools, shell programming,  common utility programs, processes and file/directory management. 
PREREQUISITE: CS 152 or permission of the instructor (based on completion of CSC 151 with first class standing)
Three lecture hours a week  

285 CO-OP WORK TERM II 
This second work term enables students to further develop their computing professionalism by applying classroom theory with new technical skills acquired during the work term. In conjunction with developing their personal portfolio, students submit a report summarizing their work term achievements. Students are assessed on a pass/fail basis. 
PREREQUISITE: CS 185
Hours of credit: 0
Note: Transfer students and other special cases may obtain one semester hour of credit, provided the student did not receive a one-semester hour credit for CS 285, completes six professional development workshops, and submits a work term report. 
 
311 VIDEO GAME DESIGN
This course focuses on the process from initial idea to final design of a video game. Students will craft a game document from an original concept of their own creation and create a prototype of the game based on that document.
PREREQUISITE: CS 261
Three lecture hours per week
 
312 TOPICS IN NON-TRADITIONAL PLATFORM COMPUTING
This course concentrates on various emerging non-traditional platform technologies. Technologies vary from year to year, as selected by the department.
PREREQUISITE: CS 212 or permission of the instructor
Three lecture hours a week 
 
321 HUMAN COMPUTER INTERFACE DESIGN 
This course is an introduction to the design and evaluation of software interfaces and webpages. The course focuses on user-centered design and includes topics such as user analysis and modelling, iterative prototyping, usability testing, designing for the web, internationalization and localization.
Cross-listed with Information Technology (cf. Information Technology 321).
PREREQUISITES: for CS 321: CS 152 and for IT 321: IT 121.
Three hours a week. 
 
322 INTRODUCTION TO BIOINFORMATICS
This course is an introduction to bioinformatics, with a focus on a practical guide to the analysis of data on genes and proteins. It familiarizes students with the tools and principles of contemporary bioinformatics. Students acquire a working knowledge of a variety of publicly available data and computational tools important in bioinformatics, and a grasp of the underlying principles enabling them to evaluate and use novel techniques as they arise in the future.
Cross-listed with Biology (cf. Biology 322)
PREREQUISITE: CS 261 or BIO 223 or permission of instructor
Three lecture hours and a one-hour laboratory session a week

323 (formerly 222) PHYSICS OF GAMING
This course examines the elements of physics required in video game software. The first part of this course covers the mathematical basics that are related to physics; the second part deals with several important physics topics, including Newtonian Mechanics, Kinematics, Projectiles, and Collisions; and the third part applies physics concepts to real-life objects, specifically, discussing how to model physical objects such as cars, airplanes, boats, and rockets. 
PREREQUISITES:  CS 152, Physics 112 and MATH 152
Three lecture hours a week.
>>>top

332 THEORY OF COMPUTING
This course introduces automata theory, formal languages and computability. Topics include: finite automata; regular expressions; regular, context-free, and context-sensitive languages; computability models; algorithmic decidable and undecideable problems.
Cross-listed with Mathematics (cf. Mathematics 332)
PREREQUISITE: CS 261 and Math 242.
Three lecture hours a week.

342 COMPUTER COMMUNICATIONS
This course introduces the basic principles of modern computer communication: protocols, architectures and standards. Topics include layered architectures, data transmission, error and flow control, medium access, routing, congestion control and common internet application protocols.
PREREQUISITE: CS 252 and CS 282
Three lecture hours a week. 

352 OPERATING SYSTEMS
This course introduces the student to the major concepts of modern operating systems. Topics covered include: process management, memory management, file systems, device management and security. 
PREREQUISITE: CS 252, CS 261 and CS 282 
Three lecture hours a week. 

361 ANALYSIS AND DESIGN OF ALGORITHMS
This course, which introduces the study of algorithm design and measures of efficiency, is a continuation of Computer Science 261. Topics include algorithm complexity and analysis; techniques such as divide and conquer, greedy and dynamic programming; searching and sorting algorithms; graph algorithms; text processing; efficient algorithms for several common computer science problems and NP-completeness.
PREREQUISITE: CS 261, Math 242.
Three lecture hours a week.
>>>top

362 OBJECT-ORIENTED DESIGN
This course examines the principles of object-oriented design and their implications for software design, through the use of object-oriented languages such as C++ and Java. Topics include unified modeling language, encapsulation, inheritance, polymorphism, software reuse, object interactions, and principles of design patterns.
PREREQUISITE: CS 261 
Three lecture hours a week. 

371 DATABASE SYSTEMS
This course introduces the fundamental concepts necessary for the design, use and implementation of database systems. Topics discussed include: logical and physical organization of data, database models, design theory, data definition and manipulation languages, constraints, views, and embedding database languages in general programming languages. 
PREREQUISITE: CS 261
Three lecture hours a week.  

385 CO-OP WORK TERM III
This course is available to computer science co-op students only.  It is an integration of the third work term experience with professional development seminars designed to build career awareness and address workplace issues. Students develop a work term report, providing a critical analysis towards advancing a solution to a technical problem/issue of interest to their employer. Students are assessed on a pass/fail basis. 
PREREQUISITE: CS 285
Hours of credit: 1
 
392 NUMERICAL ANALYSIS
See Mathematics 392.
 
395 SPECIAL TOPICS IN COMPUTER SCIENCE
This course provides students with an opportunity to pursue special topics in Computer Science. Content varies from year to year. Prospective students should contact the department for a more detailed description of any particular year's offering.
PREREQUISITE: Permission of the instructor
Three lecture hours a week. 
 
411 ARTIFICIAL INTELLIGENCE AND AUTOMATED REASONING
This course introduces general problem-solving methods associated with automated reasoning and simulated intelligence. Topics include problem abstraction, state space heuristic search theory, pathfinding, flocking behaviour, knowledge representation, propositional logic, reasoning with uncertainty, machine learning and connectionism.
PREREQUISITE: CS 261 
Three lecture hours a week. 
 
421 PROFESSIONAL PRACTICE
This course prepares students to think critically about essential and potentially controversial issues in information technology. Topics discussed include ethics; security; privacy and civil liberties; risk and liability; intellectual property; and certification standards. Professional and academic writing and presentation skills are also addressed. 
PREREQUISITE: Global Issues 151 or English 101; and 3rd year standing in either the Computer Science program or Business Administration program pursuing a Minor in Business Information Technology.
Three hours a week.

435 COMPUTER GRAPHICS PROGRAMMING
This course introduces the student to the principles and tools of applied graphics programming including graphical systems, input and interaction, object modeling, transformations, hidden surface removal, and shading and lighting models. Languages, graphics libraries and toolkits, and video game engines are introduced, as well as relevant graphics standards.
PREREQUISITE: CS 261 and Math 261
CO-REQUISITE:  CS 362 (needs to be taken before or concurrently)
Three lecture hours a week
 
436 ADVANCED COMPUTER GRAPHICS PROGRAMMING
This course builds on the computer graphics programming concepts introduced in CS 435. Students are given a deeper understanding of the components of the 3D graphics pipeline, and how they are used in modern graphical applications. Topics include advanced texture mapping, practical uses of vertex and pixel shaders, screen post-processing, particle systems, and graphics engine design.
PREREQUISITE: Computer Science 435
Three lecture hours a week 
 
472 COMPILER DESIGN
This is a first course in compiler design. The course covers: compilation phases, lexical analysis, parsing, scope rules, block structure, symbol tables, run-time heap and stack management, code generation, preprocessing, compiler-compilers, and translation systems.
PREREQUISITE: CS 332
Three lecture hours a week.
 
481 SOFTWARE SYSTEMS DEVELOPMENT
This course emphasizes the theory, methods and tools employed in developing medium to large-scale software which is usable, efficient, maintainable and dependable. Project management is a major focus. Topics include traditional and agile process models, project costing, scheduling, team organization and management, requirements modelling/specification, user interface design, software design, software verification and testing, and re-engineering. 
PREREQUISITE: 4th year standing in Computer Science.
Three lecture hours a week.

482 SOFTWARE SYSTEMS DEVELOPMENT PROJECT
In this course students propose, complete and present a significant software project in a group setting using the system development skills learned in CS 481. The course applies object-oriented design principles through the use of UML. Students are encouraged to select (with the consent of the instructor) a project with a real-world client.
PREREQUISITE: CS 481 (May be taken concurrently in exceptional circumstances). 
Three semester hours: One and a half lecture hours a week plus project time 

483 VIDEO GAME PROGRAMMING PROJECT
In this course students work as a group to develop a single design into a fully functioning video game. This course applies the project management skills learned in CS 481 to the development of a professional quality video game based upon a single design and prototype emerging from CS 311.
PREREQUISITE: CS 311, CS 481 and enrollment in the video game programming specialization.
Six semester hours: One and a half lecture hours a week plus significant project time

485 CO-OP WORK TERM IV
This course is available to computer science co-op students only.  It is an integration of the fourth work term experience with professional development seminars designed to foster professionalism. Students may choose between submitting a work term report or giving a public presentation on a technical issue related to their work experience. In addition, students must participate in a reflective seminar based upon their overall co-op experiences. Students are assessed on a pass/fail basis. 
PREREQUISITE: CS 385
Hours of credit: 1

486 CO-OP WORK TERM V 
This optional work term is available to computer science co-op students only, electing for a fifth work term. The goal is to add further value for the student, integrating classroom theory with professional skills acquired during the work term. Students are assessed on a pass/fail basis.
PREREQUISITE:  CS 485
Hours of credit: 0

490 HONOURS RESEARCH PROJECT
This course is intended to give research experience to students planning to pursue graduate studies in computer science or a related area, or planning a career where research experience would be an asset. It provides students with the opportunity to do an independent research project on a computer science topic, under the supervision of a faculty member. Typically, some of the work will be conducted during the summer months.
PREREQUISITE: Acceptance to the Honours program and approval by the Department of the project topic (see Calendar listing for entrance requirements).
Six semester hours of credit.

491-492 DIRECTED STUDIES
These courses are designed and recommended for Computer Science students to encourage independent initiative and study. Reading and research will be conducted in one or more specialized areas. (See Academic Regulation 9 for Regulations Governing Directed Studies.)
 
495 ADVANCED TOPICS IN COMPUTER SCIENCE
This course provides students with an opportunity to pursue advanced topics in computer science. Content varies from year to year but is always at a fourth-year level. Prospective students should contact the department for a more detailed description of any particular year’s offering.
PREREQUISITE: Permission of the instructor.
Three lecture hours a week.
 
INFORMATION TECHNOLOGY COURSES

106 (formerly 205) DEVELOPMENT AND PROGRAMMING
This course focuses on the fundamentals of webpage and website development. Students are introduced to HTML5 and JavaScript, and learn basic programming and debugging skills. Students gain a working knowledge about creating webpages and websites.
Three hours a week.
 
111 INTRODUCTION TO MICROCOMPUTERS (offered in both semesters)
This course is designed to familiarize students with the use of microcomputers and their software. Topics include: major hardware components, the operating system, word processing, spreadsheet software, database management, data communications and technology trends.
Two lecture hours and one hour practical experience a week.
 
121 INTRODUCTION TO COMPUTER PROGRAMMING
This course is an introduction to computer programming for non-computer science majors. Students will be taught basic programming skills in a modern computer language. Topics include problem analysis, algorithm design, program structure, data types, selection, iteration, procedures, functions, and debugging of programs.
Three lecture hours and one laboratory session a week.
NOTE: Credit will not be allowed for IT 121 if taken concurrent with, or subsequent to, CS 151 or Engineering 132. Familiarity with microcomputer use is assumed.
 
132 INTERACTIVE STORYTELLING
This course will address traditional storytelling and the challenges of interactive narrative. Students will develop a solid understanding of traditional narrative theory as well as experimental approaches to storytelling in literature, theatre and film with relevance to game development.
Three lecture hours per week
>>>top

206  (formerly 306) ADVANCED WEB DEVELOPMENT AND PROGRAMMING
In this course, students learn to create a website that involves server-side scripting and database operations. While one specific scripting language is used to acquire web development and programming skills, students are exposed to a spectrum of scripting languages, enabling them to easily adapt to others. Cloud computing is introduced and used in this course.
Cross-listed with Computer Science (c.f. Computer Science 206).
PREREQUISITES: IT 121 or CS 152 or permission of instructor
Three hours a week.
 

321 HUMAN-COMPUTER INTERFACE DESIGN
(See Computer Science 321

371 (formerly 271) APPLIED DATABASES 
This course is an introduction to relational database concepts and design for non-computer science majors. Topics include the logical and physical organization of data, database models, design theory, data definition and manipulation languages, constraints, views, database security, data warehousing and data mining. 
PREREQUISITES: IT 121 or CS 151 or permission of instructor. 
NOTE: Credit will not be allowed for both IT 371 and CS 371. Computer science majors will not receive credit for IT 371. 
Three hours a week
>>top