Departmental Notes
Subject Code for Biomedical Computing: BMCO
Subject Code for Cognitive Science: COGS
Subject Code for Computer Science: CSCI
Subject Code for Computing: COMP
Subject Code for Computing and Information Science: CISC
Subject Code for Computing, Mathematics and Analytics: COMA
Subject Code for Computing and the Creative Arts: COCA
Subject Code for Software Design: SODE
World Wide Web Address: www.cs.queensu.ca
Director of the School: Hossam Hassanein
School Office: Goodwin Hall, Room 557
School Telephone: 613-533-6050
School Fax: 613-533-6513
School E-Mail Address: inquiries@cs.queensu.ca
Chair of Undergraduate Studies: Yuanzhu Chen
Undergraduate Program Assistant: Karen Knight
Chair of Graduate Studies: Mohammad Zulkernine
Graduate Program Assistant: Debby Robertson
Overview
The School of Computing offers many broad, flexible Plans, each providing you with a solid foundation in the science and principles of computing. Theory and application are balanced as you put your knowledge to work under the guidance of award-winning researchers. Choose from a Computing-specialist Plan (Computer Science, Software Design), a multi-disciplinary Plan (Biomedical Computing, Cognitive Science, Computing and the Creative Arts, Computing and Mathematics), or design your own program by incorporating a Major or Minor Plan in Computing with another Plan in the Creative Arts, Humanities, Languages, Social Sciences, or Natural and Physical Sciences.
Advice to Students
Students should seek academic advising by emailing advising@cs.queensu.ca. Please remember to send your questions from your Queen's email account with your student number included.
Introductory Courses
Introductory Courses. Students considering pursuing any Plan offered through the School of Computing must take CISC 102 or MATH 110. Students without programming experience should take either CISC 101 or CISC 110 or CISC 151 before CISC 121.
Special Study Opportunities
Computing Facilities
Undergraduates in the School of Computing can take advantage of over 20 research labs such as labs for Big-data Analytics and Management, Computational Genomics, Collaborative Gaming Technology, Percutaneous Surgery, Medical Informatics, Robotics, Modeling and Analysis in Software Engineering, Reliable Software Technology, Smart Information Management, Software Analysis and Intelligence, and Telecommunications. Through the School’s network of labs, students access leading software such as Unity and Matlab. Our hosted cloud services give students a platform to learn industry-leading technologies like managing virtual hosts and collaborative development using Gitlab.
Professional Internship Program
Qualified students in any of the Plans leading to a Bachelor of Computing (Honours) degree may register in a 12- or 16-month Professional Internship program for their degree. Students who meet the minimum GPA requirement of 1.90 in at least 54.00 units and no more than 90.00 units must seek approval of the Chair of Undergraduate Studies in the School of Computing. These students have the opportunity to pursue a 12- or 16-month paid work term in a career-related position after completing their second or third year of study. Upon successful completion of the internship program, students’ transcripts will be annotated with a statement certifying that they have completed their degree with a Professional Internship.
The requirements for the Professional Internship versions of the B.Cmp.(Hons.) degrees are the same as the standard versions of these degree programs except for the following change.
The project course normally required in the Plan (i.e. CISC 496; CISC 498; CISC 499; COGS 499) is replaced by (for a 12-month internship) the courses COMP 390 and COMP 391, or COMP 390 and COMP 392, or COMP 393, COMP 391 andCOMP 392. In the case of a 16-month internship, they are replaced by COMP 390, COMP 391 and COMP 392. The unit requirements for the Professional Internship versions of B.Cmp.(Hons.) degrees are increased accordingly.
In all cases the internship report documents how the internship work has satisfied the requirements for a conventional CISC 496 or CISC 498 or CISC 499 or COGS 499 project.
Faculty
- Selim G. Akl
- Dorothea Blostein
- Robin W. Dawes
- Steven Ding
- Juergen Dingel
- Dave Dove
- Qingling Duan
- Jana Dunfield
- Randy E. Ellis
- Gabor Fichtinger
- Sidney Givigi
- T. C. Nicholas (Nick) Graham
- Ahmed E. Hassan
- Hossam S. Hassanein
- Ting Hu
- David Alex Lamb
- Margaret Lamb
- Richard Linley
- Alan McLeod
- Parvin Mousavi
- Christian Muise
- Wendy Powley
- David Rappaport
- Kai T. Salomaa
- David Skillicorn
- Sameh Sorour
- James Stewart
- Yuan Tian
- Farhana Zulkernine
- Mohammad Zulkernine
Specializations
- Biomedical Computing – Specialization (Computing) – Bachelor of Computing (Honours)
- Cognitive Science – Specialization (Computing) – Bachelor of Computing (Honours)
- Computing and the Creative Arts - Specialization (Arts) – Bachelor of Arts (Honours)
- Computing, Mathematics and Analytics – Specialization (Computing) – Bachelor of Computing (Honours)
- Computer Science – Specialization (Computing) – Bachelor of Computing (Honours)
- Software Design – Specialization (Computing) – Bachelor of Computing (Honours)
Major
Generals/Minors
Certificate
Courses
Computer and Information Science (CISC)
Introduction to algorithms: their definition, design, coding, and execution on computers. Intended for students who have no programming experience. All or most assignment work will be completed during lab time.
NOTE Also offered online. Consult Arts and Science Online. Learning Hours may vary.
NOTE Sufficient preparation for CISC 121; alternative to CISC 110 and CISC 151.
Introduction to mathematical discourse and proof methods. Sets, functions, sequences, and relations. Properties of the integers. Induction. Equivalence relations. Linear and partial orderings.
NOTE Also offered online. Consult Arts and Science Online. Learning Hours may vary.
Introduction to fundamental programming concepts in the context of visual, interactive media. Students may develop applications in any domain (e.g., fine art, education, commerce, physical or social sciences) while learning about algorithms, program design, logic, program control flow, functions, testing, etc.
NOTE Sufficient preparation for CISC 121; alternative to CISC 101 and CISC 151.
NOTE With permission of the School, students with programming experience may take this concurrently with CISC 121.
Introduction to design, analysis, and implementation of algorithms. Recursion, backtracking, and exits. Sequences. Elementary searching and sorting. Order-of-magnitude complexity. Documentation, iterative program development, translating natural language to code, testing and debugging.
NOTE Also offered online. Consult Arts and Science Online. Learning Hours may vary.
Introduction to object-oriented design, architecture, and programming. Use of packages, class libraries, and interfaces. Encapsulation and representational abstraction. Inheritance. Polymorphic programming. Exception handling. Iterators. Introduction to a class design notation. Numerical computation. Applications in various areas.
Introduction to algorithms: their definition, design, coding, and execution on computers, with applications drawn from data analytics, including simple prediction and clustering. Intended for students who have no programming experience. All or most assignment work will be completed during lab time.
NOTE Sufficient preparation for CISC 121; alternative to CISC 101 and CISC 110.
This introductory course provides a broad overview and ethical implications of technological topics and trends in the digital world such as the Internet of Things (IoT), Social Networks, Security and Privacy, Data Analytics, and Artificial Intelligence (AI). No programming experience is required.
Proof methods. Combinatorics: permutations and combinations, discrete probability, recurrence relations. Graphs and trees. Boolean and abstract algebra.
Elements of mathematical logic with computing applications. Formal proof systems for propositional and predicate logic. Interpretations, validity, and satisfiability. Introduction to soundness, completeness and decidability.
Basic concepts of Unix-like systems. Shells and scripting. System-level programming in the C language. Software development tools and techniques.
The descriptive levels of computer architecture. Instruction-set architectures. Assembly Language. Data representation. Support for operating-system management and high-level languages. Input/output and interrupts. Designing for performance. Digital Logic.
Introduction to techniques for specifying the behaviour of software, with applications of these techniques to design, verification and construction of software. Logic-based techniques such as loop invariants and class invariants. Automata and grammar-based techniques, with applications to scanners, parsers, user-interface dialogs and embedded systems. Computability issues in software specifications.
An introduction to techniques for designing elementary computer games. Topics will include game development tools and processes, principles of game design, game prototyping and game evaluation.
Design and implementation of advanced data structures and related algorithms, including correctness and complexity analysis.
Introduction to data analytics; data preparation; assessing performance; prediction methods such as decision trees, random forests, support vector machines, neural networks and rules; ensemble methods such as bagging and boosting; clustering techniques such as expectation-maximization, matrix decompositions, and bi-clustering; attribute selection.
Elements of linear algebra for data analysis, including: solution of linear equations; vector spaces; matrix decompositions; principal components analysis; linear regression; hyperplane classification of vectorial data.
This course surveys current best practices for implementing attractive, usable, secure and maintainable web applications. Other issues considered include: accessibility, platform and browser independence, licensing of intellectual property, scalability, user privacy, and using web technologies in mobile development.
Introduction to management of small and medium-scale software projects. Advanced programming methodology using the programming language C++. Includes a significant programming project.
Abstractions and patterns of interactions and relationships among modules. Design recovery; relationship of architecture to requirements and testing.
Layered operating systems for conventional shared memory computers: concurrent processes. Synchronization and communication. Concurrent algorithms. Scheduling. Deadlock. Memory management. Protection. File systems. Device management. Typical layers.
Developing usable software requires that human factors be considered throughout the design and development process. This course introduces a series of techniques for development and evaluating usable software, and shows how these techniques can be integrated into a process for software development.
An introduction to software architectural design through the application domain of game development. Abstractions and patterns of interactions and relationships among modules. Design recovery. Relationship to requirements and testing
Validation of software throughout the life cycle. Comparative effectiveness in defect removal of formal methods (proofs of correctness), inspection (walkthroughs and reviews), and testing (unit, integration, and system testing; white box versus black box).
Concepts of computer-integrated surgery systems and underlying techniques such as medical-image computing, robotics, and virtual reality, learned through real-life applications and problems. Techniques learned in class will be applied in a hands-on surgery session where students perform minimally invasive surgery with virtual-reality navigation tools.
Data models: relational, entity-relationship. Relational query languages: relational algebra and SQL. Relational database design. Application interfaces and embedded SQL. Storage and indexing.
Fundamental concepts in the design and implementation of computer communication networks, protocols, and applications. Overview of network architectures; applications; network programming interfaces (e.g., sockets); transport; congestion; routing and data link protocols; addressing; local area networks; wireless networks, mobility management; security.
Combinational circuits; sequential circuits; digital systems design; micro-programming; bus structures; data communications; interface design; microprocessor systems.
Design and implementation of complex analytics techniques; predictive algorithms at scale; deep learning; clustering at scale; advanced matrix decompositions, analytics in the Web, collaborative filtering; social network analysis; applications in specialized domains.
An introduction to the basic principles and tools of artificial intelligence. Problem solving methods and knowledge representation techniques.
Review of imperatives programming features. Introduction to other widely used programming paradigms. Functional programming languages, such as LISP and Haskell. Higher order functions, lazy evaluation, abstract and recursive types, structural induction, symbolic expressions. Logic programming languages, such as PROLOG. Operational interpretation of predicates and terms, proof search, unification, backtracking. Typical applications.
Principles of design, analysis and implementation of efficient algorithms. Case studies from a variety of areas illustrate divide and conquer methods, the greedy approach, branch and bound algorithms and dynamic programming.
Methods for nonlinear data analysis, particularly using numerical optimization. Applications may include: unconstrained data optimization; linear equality constraints; constrained data regression; constrained data classification; evaluating the effectiveness of analysis methods.
Inductive modelling of data, especially counting models; ensemble approaches to modelling; maximum likelihood and density-based approaches to clustering, visualization. Applications to non-numeric datasets such as natural language, social networks, Internet search, recommender systems. Introduction to deep learning. Ethics of data analytics.
Mathematical methods for describing software behaviour and structure. Topics include (but are not limited to) the following: Requirements specification. Module specification: axiomatic, algebraic, and trace specifications. Abstract models. Verification. Specification-based validation.
An integrated approach to discovering and documenting software requirements. Identification of stakeholders; customer, operator, analyst, and developer perspectives. Requirements elicitation. Transition from initial (informal) requirements to semi-formal and formal representations. Requirements analysis process; analysis patterns. Requirements specification techniques. Relation to architecture and user interface design; traceability of requirements.
Advanced user-interface styles such as eye-tracking input, digital desks, wearable computing, ubiquitous and context-aware computing, and tangible interfaces.
Design and implementation of real-time embedded applications. Specifying timing properties: formal and semi-formal methods; soft real-time versus hard real-time. Design notations; language constructs. Real-time operating systems. Abstract device interfaces.
Storage and representation of "big data", which are large, complex, structured or unstructured data sets. Provenance, curation, integration, indexing and querying of data.
Distributed systems goals, characteristics, and architectures. Processes: models, inter-process communication and coordination. Name services. Consistency and replication. Fault tolerance: design for reliable communication and recovery. Security. Development paradigms based on data types: object, file, and web-based systems.
Analytic and empirical evaluation of the performance of software systems. Performance modeling. Experimental design and statistical techniques for empirical performance analysis.
An introduction to cybersecurity covering a wide range of vulnerabilities, attacks, and defense mechanisms in individual computers, networks, the Internet and the Web and applications that use them, and storage and computational clouds. The human side of cybersecurity, and the legal and ethical constraints on both attack and defense.
Software dependability and other related concepts, software process models and methods for reliable software. Software reliability engineering process, software fault tolerance and run-time monitoring. Software security engineering process, secure software design, program security vulnerabilities and software security testing
Content will vary from year to year; typical areas covered may include: tools for large scale data analytics (Hadoop, Spark), data analytics in the cloud, properties of large scale social networks, applications of data analytics in security.
Introduction to neural and genetic computing. Topics include associative memory systems, neural optimization strategies, supervised and unsupervised classification networks, genetic algorithms, genetic and evolutionary programming. Applications are examined, and the relation to biologic systems is discussed.
Investigation of selected areas of artificial intelligence research. Possible topics include natural language understanding, computational perception, planning, learning, and neurocomputing.
Introduction to computer graphics, including a review of current hardware; modelling and transformations in two and three dimensions; visual realism: perspective, hidden surface elimination, and shading; colour models; applications in several fields. James Stewart.
Building, applying and studying algorithms based on the Darwinian principles of natural evolution. A creative approach to AI able to create novel solutions. Genetic algorithms, evolution strategies, and genetic programming. Application to optimization and learning problems.
Introduction to fundamental concepts and applications in image processing and computer vision. Topics include image acquisition, convolution, Discrete Fourier Transform, image enhancement, edge detection, segmentation, image registration, human contrast perception, colour perception and reproduction, stereo vision.
Introduction to the systematic construction of a compiler: grammars and languages, scanners, top-down and bottom-up parsing, runtime organization, symbol tables, internal representations; Polish notation, syntax trees, semantic routines, storage allocation, code generation, interpreters.
Turing machines and other models of computability such as µ-recursive functions and random-access machines. Undecidability. Recursive and recursively enumerable sets. Church-Turing thesis. Resource-bounded complexity. Complexity comparisons among computational models. Reductions. Complete problems for complexity classes.
Specifying syntax and semantics; operational and denotational semantics. Lambda calculi, type systems and logical foundations. Meta-theoretic properties. Semantics of imperative languages.
A continuation of CISC 365/3.0. Lower bound theory. Average-case analysis of algorithms. Approximation algorithms. Probabilistic algorithms. Parallel algorithms.
History of fuzzy theory; fundamental concepts of fuzzy theory: sets, relations, and logic operators. Approximate reasoning, fuzzy inference, possibility theory. Separation from probability. Fuzzy control systems. Fuzzy pattern recognition. Advanced topics may include fuzzy expert systems, financial systems, graph theory, optimization.
Fundamentals of cryptographic algorithms: secure pseudorandom number generators, hash functions, symmetric-key cryptography (stream ciphers, block ciphers); public-key cryptography (encryption and decryption, digital signatures, key agreement). Applications of cryptography to secure communication protocols and systems.
Advanced computational approaches to the problems in molecular biology. Techniques and algorithms for sequence analysis and alignment; molecular databases; protein structure prediction and molecular data mining.
Current topics in the application of information technology to medical image computing and its use in image-guided medical interventions.
Design of deep neural networks based on leading-edge algorithms such as Restricted Boltzmann Machines, Recurrent Neural Networks, Convolutional Neural Networks, Long-Short Term Machines. Autoencoding as a clustering technique. Applications to prediction problems in natural language and images.
Formal and heuristic approaches to problem-solving, planning, knowledge representation and reasoning, Markov decision processes, dynamic programming, temporal-difference learning, Monte Carlo learning, function approximation, integration of learning and planning. Implementing simple examples of logical reasoning, clustering or classification.
An introduction to 'engines' used in networked 3-dimensional games. Topics include game-engine architecture and components providing 3-dimensional rendering, physics simulation, sound, artificial intelligence and networking services.
Content varies. Not offered every year.
NOTE Learning Hours will vary.
Content varies. Not offered every year.
NOTE Learning Hours will vary.
Content varies. Not offered every year.
NOTE Learning Hours will vary.
Team-based project involving the development of a game using modern tools and software engineering techniques.
A wide range of topics of current importance in computing, including technical issues, professional questions, and moral and ethical decisions. Students make presentations, deliver papers, and engage in discussion.
Topic selected under the supervision of a faculty member. Emphasis is on the application of software engineering techniques to the development of a substantial software system. Group work, oral presentation, participation in design and code review meetings, and delivery of complete software specification and design are required.
Topic selected under the supervision of a faculty member. Emphasis may be on the development of a large program, or on more theoretical issues. Independent research, an oral presentation, and a written report are required.
Individual research project under the supervision of a School of Computing faculty member. Evaluation is based on an oral presentation and a written thesis. It is the responsibility of the student to make a research proposal and secure a supervisor prior to enrolling in the course.
Computing and the Creative Arts (COCA)
A multidisciplinary studio-oriented overview of computer-based applications in Art, Music, Drama and Film. History of human-computer interaction. Critical and philosophical issues. Animation. Virtual reality. Computer-aided design. Computer games. Enrollment is limited.
Cognitive Science (COGS)
A multidisciplinary approach to the study of the mind combining approached from philosophy, psychology, linguistics, neuroscience, anthropology, and artificial intelligence. Logic, rules, concepts, and other mental representations used to generate thought and behaviour. Implementation of computational and cognitive models of mental processes.
NOTE Also offered online. Consult Arts and Science Online. Learning Hours may vary.
Introduction to the computational aspects of the mind. Implementation of computer programs for reasoning, decision making, and problem solving to understand these mental processes. Information theory and behaviourism; computational models of cognition, perception and memory processes demonstrating modeling approaches, and cognitive architectures.
Importance and challenges of building cognitive models; steps of model building, programming simple models using computational and statistical techniques and tools such as Matlab. Recent models from research publications.
Artificial Neural Networks (ANN) and Genetic Algorithms (GA) for problem solving and prediction tasks such as classification, clustering, optimization and data reduction and modeling human cognition, with application to real world problems. Ongoing research in this area in various application domains.
Topic selected under the supervision of a member of one of the faculties of CISC, LING, PHIL, PSYC. Emphasis may be on experimental, theoretical, or computer implementation topics. Independent research, an oral presentation, and a written report are required.
Computing (COMP)
An introduction to concepts and novel technologies used in computer-integrated surgery, including image based navigation, medical robotics and virtual reality. Concepts and techniques learned in class will be applied in a hands-on surgery session where students perform minimally invasive surgery with virtual-reality navigation tools.
NOTE MATH P06/3.0 or one Mathematics 4U level courses is required.
NOTE Not available for credit towards a BCMP/BCMPH program. Computing students should take CISC 330/3.0.
A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, resumé preparation and work performance. Career Services manages the non-academic aspects of the program.
A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, resumé preparation and work performance. Career Services manages the non-academic aspects of the program.
A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, resumé preparation and work performance. Career Services manages the non-academic aspects of the program.
A Computing Internship involves spending twelve to sixteen months in a paid internship position in the private or public sectors. Students in a 12-month internship register in COMP 390/6.0 and either COMP 391/3.0 or COMP 392/3.0, or all of COMP 393/3.0, COMP 391/3.0 and COMP 392/3.0. Students in a 16-month internship register in COMP 390/6.0, COMP 391/3.0 and COMP 392/3.0. The Internship Coordinator must be satisfied that the work carried out has educational merit. Successful completion of the course requires submission of a satisfactory report on the experience within thirty days of completion of the work period. The Internship Coordinator is responsible for evaluating the report. The QUIP program includes prior workshops on interviewing, resumé preparation and work performance. Career Services manages the non-academic aspects of the program.