Department Head C. Saavedra
Chair of Undergraduate Studies J. Ni - ceugradchair@queensu.ca
Undergraduate Assistant I. Pavich, J. Battle
Office Walter Light Hall, Room 416
Telephone (613) 533-2925
E-mail irina.pavich@queensu.ca, j.battle@queensu.ca
Departmental Web Site http://www.ece.queensu.ca/
Computer Engineers deal with the architecture, design, implementation, and verification of the hardware and software for computing systems that are increasingly being used in embedded or networked environments. The Computer Engineering plan offers a broad range of supporting course material to prepare graduates for entry into the profession. In the hardware area, courses cover digital logic and digital systems engineering, computer organization and system architecture, microprocessors, and integrated circuit engineering. Software courses include programming languages, data structures and algorithms, operating systems, real-time software design, databases, compilers, software requirements analysis, formal methods in software engineering, and techniques for human-computer interaction. Computer communication network courses include material on reliable and secure information transfer protocols, switching and routing through multipath networks, and wireless networking.
The Computer Engineering plan is "streamed". Through choice of elective courses in third and fourth year, students can either focus their studies in one or more areas of specialization ("streams"), or pursue a broader coverage of the subject field. Streams are detailed on the Departmental web pages.
First Year courses in Computer Science (APSC 142 Introduction to Computer Programming for Engineers 2), Mathematics (APSC 171 Calculus I, APSC 172 Calculus II and APSC 174 Introduction To Linear Algebra), Engineering Practice (APSC 100 Engineering Practice 1) and Physics (APSC 112 Physics II) form the basis for further study in Computer Engineering. Good performance is advisable for students planning to enter this academic plan.
Programs
- Computer Engineering, B.A.Sc. (Class of 2025)
- Computer Engineering, B.A.Sc. (Class of 2026)
- Computer Engineering, B.A.Sc. (Class of 2027)
- Computer Engineering, ECEi Stream, B.A.Sc. (Class of 2025)
- Computer Engineering, ECEi Stream, B.A.Sc. (Class of 2026)
- Computer Engineering, ECEi Stream, B.A.Sc. (Class of 2027)
- Computer Engineering: Electives
K3(Lec: Yes, Lab: No, Tut: No)
Course Learning Outcomes:
- Construct a syntactic proof as a series of rigorous inference steps in a logical deduction.
- Represent logical statements and descriptions declaratively in a logical language.
- Analyze the semantics of a set of logical statements in a logical framework.
- Synthesize a rigorous human-understandable English description of a set of logical statements.
(Lec: 3, Lab: 1, Tut: 0)
Course Learning Outcomes:
- CLOs coming soon; please refer to your course syllabus in the meantime.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Design specifications for the functional behaviour of algorithmic code fragments.
- Formally verify the correctness of simple code fragments involving conditional statements and loops using logic based techniques.
- Design regular expressions, state transition diagrams and context-free grammars for formal languages.
- Appraise the limitations of regular expressions and context-free grammars and to demonstrate that a language is nonregular.
- Appraise the limitations of algorithmic computation and prove that the halting problem is unsolvable.
K3(Lec: Yes, Lab: No, Tut: No)
Course Learning Outcomes:
- CLOs coming soon; please refer to your course syllabus in the meantime.
COURSE DELETED 2019-2020
(Lec: 3, Lab: 0, Tut: 0)
(Lec: 3, Lab: 0, Tut: 1)
Course Learning Outcomes:
- Design and construct medium-sized console and GUI programs in both procedural and object-oriented paradigms.
- Design and construct 500 to 1000 line console and GUI C++ programs using both Object Oriented and procedural C++ code.
- Contribute to the design and construction of a larger software project as a member of an agile programming team.
- Use software engineering techniques and tools to aid in the development of larger scale software projects.
K4(Lec: Yes, Lab: 0, Tut: No)
Course Learning Outcomes:
- Recognize and describe the various architecture styles and design patterns.
- Analyze the tradeoffs between competing software architecture styles and design patterns.
- Recover, document, present, and discuss the architecture of a pre-existing software system using high level diagrams (such as UML and basic box and arrow diagrams).
- Specify, design and possibly implement a feature in a pre-existing code base.
- Work effectively in a group setting.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Learn some foundations about operating systems: process management, interrupts handling, context-switching, and threads.
- Learn the concept of synchronization and how to enforce synchronization using different synchronization tools. e.g., semaphores.
- Learn how operating systems manage resource allocation in a time-sharing system, and how to deal with deadlocks.
- Learn different memory management schemes and how operating systems manage the memory.
- Learn how to design and develop safe multithreaded applications.
- Learn basic concepts in operating system security.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Critique the usability of an interactive system.
- Design for people with diverse abilities.
- Apply a user-centered design process.
- Design and prototype Graphical User Interfaces.
- Perform user evaluation of user interfaces.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Choose appropriate software process models.
- Describe the inspection process, and the advantages of inspection.
- Compare and contrast different testing methods, including black and white box approaches.
- Explain different metrics used to evaluate software complexity.
- Outline and implement quality requirements at different phases of the software life-cycle.
- Build a foundation for further learning by exposure to multiple computer languages, development tools, and methodologies.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Design and partly implement computer-integrated surgery systems.
- Analyze the mechanism of computer-integrated surgery systems.
- Produce high level design of computer-aided surgery systems.
- Implement key components in software.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Apply database design techniques and tools to create a database schema and database instance for an application.
- Apply an application design method and development tools to create a web application to support users in querying and manipulating the database for an application.
- Compose queries on a database in both SQL and the relational algebra.
- Assess the quality of database schemas and queries.
- Apply methods to improve the performance and security of a database application.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- To provide an in-depth knowledge on the design of advanced data analytics techniques.
- To discuss how to design data pipelines for real-world applications and what are the key factors to consider.
- To understand implementation of data solutions involving advanced analytics techniques and diagnose problems.
- To critically analysis of existing data solutions and design new data analysis pipelines in context.
(Lec: 3, Lab: 1, Tut: 0)
Course Learning Outcomes:
- Possess a strong understanding of computational complexity, up to and including: Polynomial time Reducibility; classes P and NP; NP-Completeness; Proofs of NP-Completeness.
- Be able to recognize classical NP-Complete problems.
- Be able to prove that new problems are NP-Complete using polynomial time reductions from known NP-Complete problems.
- Apply key algorithm paradigms, both in the abstract and through concrete examples: Divide and Conquer; Greedy Algorithms; Dynamic Programming; Branch and Bound.
- Have some understanding of an advanced topic, which varies from year to yearRecent choices have included: Linear Programming; Computational Geometry; String Matching.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Use and explain formal specification languages based on, e.g., propositional logic, predicate logic, relational calculus, and finite state machines.
- Use and explain notations and techniques to define the semantics of a language precisely.
- Use and explain analysis techniques for formal specification languages such as theorem proving, satisfiability checking, automatic test input generation, and exhaustive state space exploration together with their capabilities and limitations.
- Use and explain tools supporting formal specification languages together with their capabilities and limitations.
- Design, construct, and analyze small formal specifications.
- Explain the advantages and disadvantages of formal specification languages and tools.
- Explain the role and potential uses of formal methods for different software development activities.
NOT OFFERED 2024-2025
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- CLOs coming soon; please refer to your course syllabus in the meantime.
NOT OFFERED 2024-2025
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Create distributed storage structures for complex datasets.
- Organize, integrate and process data from distributed storage systems.
- Create metadata for complex datasets.
- Articulate issues in data provenance and curation.
- Build workflows and query the results.
NOT OFFERED 2024-2025
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- CLOs coming soon; please refer to your course syllabus in the meantime.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Explain the concepts behind the operation of biological neurons and the evolution of artifical neural network (ANN) to model connections as a representation of information.
- Design and implement different types of ANNs using a variety of design techniques and learning algorithms for prediction, clustering, classification, storage, and function approximation
- Apply optimization techniques such as simulated annealing and genetic algorithms with ANN training algorithms
- Describe with reference to recent research work how ANNs are used to simulate human cognition, vison, and memory, and are applied to intelligent systmes for language and image processing, decision support systems, and predictive systems.
- Explain the power and limitations of neural network systems.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- CLOs coming soon; please refer to your course syllabus in the meantime.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- CLOs coming soon; please refer to your course syllabus in the meantime.
(Lec: 3, Lab: 0, Tut: 1)
Course Learning Outcomes:
- Use real software engineering tools to maintain and enhance existing software systems.
- Apply component-based software engineering and table-driven programming to multi-phase software systems.
- Follow standard practices for software quality assurance and testing in a small-team project.
- Employ domain-specific languages and model-driven engineering to develop software.
NOT OFFERED 2024-2025
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Describe state-of-the-art algorithms in Bioinformatics with emphasis on the strengths and limitations of these techniques.
- Distill information provided by a biologist and discern appropriate and effective algorithmic solutions.
- Critically assess an algorithm for its correctness and efficiency, and argue about the algorithms correctness, performance bounds, and approximation ratio as appropriate.
- Make sensible pragmatic algorithmic choices of standard packages or implementations for specific applications.
(Lec: 3, Lab: 0, Tut: 0)
Course Learning Outcomes:
- Analyze the inner workings of medical image manipulation and registration methods for use in image-guided computer-assisted intervention systems.
- Design solutions in which modern information technology is used to solve applied problems in the medical field.
- Analyze the specifics and limitations of dataflow in a medical environment, especially in the area of medical image analysis.
- Design and develop basic medical image analysis and image registration methods for use in typical computer-assisted surgery and intervention applications.