List of regular courses

  • COMP 6901 Applied Algorithms (credit restricted with old COMP 6783)
    • Design and analysis of algorithms is a foundation of Computer Science, and algorithms play an essential role in many related fields. This course aims to consolidate and advance student knowledge of algorithms, by presenting both traditional and contemporary algorithm design paradigms (backtracking, greedy, dynamic programming, divide-and-conquer, randomized, parallel/multithreaded and approximation algorithms). A significant part of the course will be devoted to in-depth exploration of some algorithms in real-world application areas; in particular, text searching/pattern matching, and graph algorithms will be covered.
  • COMP 6902 Theories of Computation (same as ENGI 9867)
    • This course covers a selection of topics in the theory of computation. These may include the semantics of programming languages; the specification and verification of programs; theoretical models of computation such as finite state machines, context free grammars, and Turing Machines; computability and undecidability; the efficiency of computations; the complexity of problems and complexity classes such as LOGSPACE, P, NP, and PSPACE.
    • OLD VERSION: Theoretical Foundations of Computer Science. This course illustrates the content and methodologies in three core areas of theoretical computer science: i) programming language semantics; ii) automata and computability, and iii) complexity theory. Block i) focuses on denotational semantics, which provides a link between this block and ii) (computability) through lambda calculus models and functional programming. Block ii) covers computability theory (Turing machines, undecidability, reductions) and basic automata theory. Block iii) focuses on resource bounded computations, in particular time and space complexity classes, including the P vs. NP question.
  • COMP 6903 Advanced Concurrent Programming - (same as ENGI 9869)
    • Survey of parallel and distributed architectures. Patterns of concurrent program design. Correctness of concurrent programs (safety and liveness properties, proof of properties). Synchronization using locks, semaphores, and monitors. Communication using message passing and remote procedures. Parallelization for high-performance computation. Advanced topics selected from scientific applications, distributed systems, model checking, transaction processing, and parallel computing on graphics hardware may also be discussed.
  • COMP 6904 Modern Computer Systems - (credit restricted with ENGI 9861)
    • This corse builds on an undergraduate background in computer architecture and operating systems. Key topics include multicore and multiprocessor systems, multiprocessor shared memory cache coherence, concurrency management, load balancing, process management in tightly and loosely coupled parallel systems, and virtualization. General principles applicable to parallel and concurrent systems are included.
  • COMP 6905 Software Design, Specification & Implementation (same as ENGI 9874; credit restricted with old COMP 6713)
    • This course covers techniques for software design, including precise specification, transforming the specification to architecture, implementation, verification and testing. Some techniques can include UML, OCL, Z, Object-Z, Alloy, Design Patterns and CASE tools.
  • COMP 6906 Scientific Computing (credit restricted with old COMP 6731)
    • The development of algorithms for the numerical solution of mathematical problems, and the study of the numerical stability of some of these algorithms is the main objective of this course. The efficiency of these algorithms with respect to speed (computation, data communication) and storage requirements is considered as well. Emphasis will also be placed on the study of the sensitivity of selected problems to perturbations in the data.
  • COMP 6907 Data Mining (credit restricted with old COMP 6762)
    • This course Introduces the basic theories and methodologies behind the common data mining tasks, with the main emphasis being on two types of tasks, model- description and pattern-discovery. It shows how to define and manipulate the summary data in multi-database systems for decision-support purpose. It introduces the concepts and approaches for efficient mining of association rule patterns. It covers two basic model-description learning classes, supervised and unsupervised learning, by introducing both algorithmic solutions and underlying statistic background. Other related topics covered include feature selection, maximum-likelihood method and outlier detections.
  • COMP 6908 Database Technology and Applications (credit restricted with old COMP 6751)
    • The course will cover several current topics related to database and information retrieval applications. Topics include: Review of database design and relational databases; Transaction concepts, concurrency control and recovery methods; Homogeneous and heterogeneous distributed database systems; Workflow management systems; Mobile database systems; Web services; and Data management in a Cloud.
  • COMP 6909 Logic and Knowledge Based Systems
    • This course provides students with a solid foundation in mathematical logic, essential for many areas of computer science. In addition to propositional and predicate logic fundamentals, the course will cover a variety of areas, including automated reasoning and problem solvers, PROLOG, knowledge representation and knowledge-based systems, heuristic searching and uncertainty, as well as cutting-edge topics from instructor's area of expertise.
  • COMP 6910 Services Computing, Semantic Web and Cloud Computing
    • This course will cover the fundamental concepts and technologies behind services computing, semantic Web and cloud computing. Services Computing deals with all aspects relating to services, including creation, registration, discovery, composition and delivery. The core concept behind Semantic Web is the representation of data in a machine-interpretable way. Ontologies facilitate the means to realize such representation. Cloud Computing advocates the concept that any computation can be done anywhere and at anytime. Scalability, elasticity, security and confidentiality are important requirements.
  • COMP 6911 Evolutionary Computation (credit restricted with old COMP 6776)
    • The field of evolutionary computation encompasses machine learning methods inspired by biological evolution and the computational intelligence techniques modeling the problem solving process in nature. These methods and techniques have been used to solve real-world problems such as engineering design, optimization, modeling, bioinformatics and financial prediction, among others. This course is a hands-on introduction to these techniques and the theory behind them.
  • COMP 6912 Autonomous Robotics (credit restricted with old COMP 6778)
    • This course examines the technologies, constraints, and algorithms of autonomous robotics and introduces students to this topic as an active research area. The following topics will be covered: major paradigms in robotics, kinematics, feedback control, sensor technologies, feature extraction, uncertainty modeling, localization, mapping, local navigation, path planning, multi-robot systems, and biologically- inspired robotics.
  • COMP 6913 Advanced Rendering and Animation
    • This course starts with fundamental knowledge on 3D computer graphics, such as 3D modeling and graphics APIs. It then focuses on advanced rendering and animation techniques. The topics on rendering include both photorealistic and non-photorealistic rendering, as well as image-based rendering. The part on animation covers both physics-based simulation and data-driven animation.
  • COMP 6914 Mobile Computing
    • Mobile computing is concerned with movable computing devices that rely on battery power and use wireless communication technologies. These devices can range from tablet computers, mobile phones, to nodes in a sensor network. This course discusses the communication architecture and the software architectures of these devices and related issues. Possible topics of the course include: Software development on mobile devices; Creativity in mobile applications; Role of mobile computing in Computer Science research; Wireless link layer technologies; TCP/IP design principles and implications
  • COMP 6915 Human-Computer-Interaction (same as BUSI 9913)
    • This human-computer interaction (HCI) course focuses on the theory and practice of the design, development, and evaluation of human-centred information and communication technologies (ICT) and software systems. It lies at the intersection between the social and behavioural sciences on the one hand, and computer and information technology on the other. Topics include: ICT design and development, such as interface design, interaction design, and usability requirements; ICT use and evaluation, such as human cognition and emotion during the interactions between human and ICT, and evaluation methodologies. Applied examples may draw on areas of specific interest such as electronic commerce and the web, collaboration support, personalization technologies, and data visualization.
    • OLD VERSION: Human-Computer Interaction focuses on the theory and practice of the design, development, and evaluation of human-centred software systems. Topics to be covered include human cognition and interaction, usability requirements, design methods, interface programming frameworks, and evaluation methodologies. Applied examples may draw on areas of specific interest such as visualization, novel interaction paradigms, mobile computing, computer-supported cooperative work, web interfaces, and game design
  • COMP 6916 Security and Privacy
    • Privacy and security concerns are ubiquitous in the modern computing environments. This course will examine system threats and vulnerabilities, from the perspectives of programs, operating systems and network security, security in database systems and internet applications, as well as privacy issues and basic cryptography. In particular, this course will look at several types of security and privacy breaches, relevant methods of prevention and mitigation of consequences.
  • COMP 6917 Research Methods in Computer Science
    • This course aims to develop students' ability in technical communication and general research methodology. In small groups, participants explore advanced topic areas in Computer Science. Each student is expected to present a number of mini lectures, critique fellow students' presentations, actively participate in discussions, provide written reviews of conference/journal papers and write a literature survey for the considered area.


Department of Computer Science

230 Elizabeth Ave, St. John's, NL, CANADA, A1B 3X9

Postal Address: P.O. Box 4200, St. John's, NL, CANADA, A1C 5S7

Tel: (709) 864-8000