Course Descriptions CSCI 5001   Privacy & IT
CREDIT HOURS: 3
This course will discuss the concepts, culture, and legislative requirements of privacy viewed through a lens of Information Technology. While giving a global overview of privacy, the class will provide students with a practical grounding of the administration of privacy in Canada.

CSCI 5100   Communicating Computer Science Ideas
CREDIT HOURS: 3
In this course, we will focus on creating the appropriate document or presentation in a variety of situations. Emphasis will be on reducing/removing noise (anything that distracts from the message) and on increasing/adding relevance (things that reinforce understanding of the message).
FORMAT: Lecture
LECTURE HOURS PER WEEK: 3

CSCI 5193   Technology Innovation
CREDIT HOURS: 3
Technology Innovation combines elements of design thinking, rapid prototyping, and software development that can be used to validate ideas that could yield new technologies and new business models. The students work in interdisciplinary teams to address a Design Challenge posed by industry. The ideas advanced by teams will reflect the powerful synergies that exist between software development, design thinking and entrepreneurship.
PREREQUISITES: CSCI 5100.03, CSCI 5308.03, CSCI 5408.03

CSCI 5306   Applied Program Comprehension
CREDIT HOURS: 3
This course examines the topic of Program Comprehension - the art of code reading, understanding, and analysis. Students will learn how to study, read, diagram, and maintain large (millions of lines of code) programs using both formal and informal techniques. The goal is to achieve comfort in approaching large, unfamiliar systems upon which some form of development or maintenance must be performed.
PREREQUISITES: CSCI 5100.03, CSCI 5308.03, CSCI 5408.03

CSCI 5308   Advanced topics in Software Development
CREDIT HOURS: 3
This course will provide students with the fundamentals of producing high quality code in a team-based programming environment. The concepts covered in class will be implemented during the group project. After establishing the coding environment using Agile methodology; efficiently automating builds, deployment, and configuration; and integrating source control, students will learn to write clean, readable code using S.O.L.I.D principles, the proper use of cohesion and coupling, and design patterns. Other topics include establishing data, business logic and display logic boundaries; error handling and logging; refactoring; and test-driven development.
RESTRICTIONS: Restricted to students enrolled in the Master of Applied Computer Science (MACS) degree program.

CSCI 5408   Data Management, Warehousing, and Analytics
CREDIT HOURS: 3
In this course, we will focus on three pillars for managingand analyzing data in distributed and cloud environments: Management of data in distributed systems, Data Warehousing, and Data Analytics.
FORMAT: Lecture
LECTURE HOURS PER WEEK: 3
EXCLUSIONS: CSCI 6405.03

CSCI 5409   Advanced Topics in Cloud Computing
CREDIT HOURS: 3
Cloud computing provides users with the ability to access and use computational, storage, and interconnect resources as services offered by cloud providers. This course provides the students with the theoretical foundations of the cloud computing as well as with hands-on experience in using various cloud technologies. Topics covered are related to the types of cloud services, cloud infrastructure, distributed storage models, and programming models offered as general services and also developed for Big Data. Topics will also include underlying technologies, such as virtualization.
PREREQUISITES: CSCI 5100.03, CSCI 5308.03, CSCI 5408.03
RESTRICTIONS: Restricted to students in the Master of Applied Computer Science (MACS) degree program.
EXCLUSIONS: CSCI 4145.03

CSCI 5410   Serverless Data Processing
CREDIT HOURS: 3
Students will learn about serverless cloud architectures using the real-world problem domain of large-scale data analytics. The course views a serverless cloud architecture as a utility computing or Function as a Service (FaaS). Students will gain experience in designing and provisioning cloud infrastructure for large scale applications. The course uses framework/ tools in an optimized manner to speedup large scale data analysis and to improve robustness of the cloud platform. Further, the course focuses on solving real-world problems where security, robustness, and completeness of data analysis are the primary concerns.
PREREQUISITES: CSCI 5100, CSCI 5308, CSCI 5408

CSCI 5601   Designing for User Experience
CREDIT HOURS: 3
This is a hands-on course that focuses on existing and emerging design principles and practices that should be considered when designing systems for quality user experience. Topics include understanding and designing for user needs and experience, applying design guidelines, prototyping and evaluation techniques.
PREREQUISITES: CSCI 5100.03, CSCI 5308.03, and CSCI 5408.03

CSCI 5708   Mobile Computing
CREDIT HOURS: 3
This course covers the principles of mobile computing and the concepts and techniques underlying the design and development of mobile computing applications. Mobile computing is discussed from technological, application, and user perspectives. Topics include mobile and wireless communication technologies, development environments, applications design for resource limited and failure-prone environments, user interface issues in the mobile computing setting, and the future of mobile computing.
NOTES: Students are expected to have Computer Organization and Computer Networks at the undergraduate computer science level.
PREREQUISITES: CSCI 5100.03, CSCI 5308.03 and CSCI 5408.03
EXCLUSIONS: CSCI 4176.03

CSCI 5709   Advanced Topics in Web Development
CREDIT HOURS: 3
This course provides a hands-on learning environment for advanced web development techniques, such as HTML5 APIs for the creation of dynamic web graphics as well as adding offline functionality to web applications, and server-side APIs for extending the back-end functionality of web applications. Advanced security, performance monitoring, and testing approaches are also covered to facilitated the creation of efficient and secure web applications. Finally, this hands-on course also highlights the importance of ethical web development principles and documentation.
PREREQUISITES: CSCI 5100.03, CSCI 5308.03, CSCI 5408.03
RESTRICTIONS: This course is restricted to those in the Master of Applied Computer Science (MACS) degree programs.
EXCLUSIONS: CSCI 4177.03

CSCI 5901   Special Graduate Topics in Applied Computer Science
CREDIT HOURS: 3

PREREQUISITES: CSCI 5100.03, CSCI 5308, CSCI 5408.03
RESTRICTIONS: Restricted to those students enrolled in the Master of Applied Computer Science (MACS) degree program.

CSCI 5902   Special Graduate Topics in Applied Computer Science
CREDIT HOURS: 3

PREREQUISITES: CSCI 5100.03, CSCI 5308, CSCI 5408.03
RESTRICTIONS: Restricted to students registered in the Master of Applied Computer Science (MACS) degree program.

CSCI 6001   Programming Language Learning
CREDIT HOURS: 3
This course is designed to introduce students to current issues and challenges in the theoretical, methodological, and empirical foundations for research in learning and teaching programming skills. Students will explore issues that are of interest to computer science educators that include student knowledge and misconceptions, principles for instructional design, and computing applications that serve as tools to support effective instruction. By the end of the course, students will be able to distinguish skills, provide guidance on how they should be taught, and will gain deeper understanding of the development, implementation, and evaluation of instructional approaches.

CSCI 6055   Research Methods and Statistics
CREDIT HOURS: 3
Students will gain an understanding empirical science principles as they relate to computer science research. Each student will determine the research methods most appropriate for their research area and will design a research study. the course covers both quantitative and qualitative research issues and provides a practical introduction to statistics.
FORMAT:
  • Lecture
  • Lab
  • Tutorial

FORMAT COMMENTS: lab for hands-on exercises and stats tutorials

CSCI 6057   Advanced Data Structures
CREDIT HOURS: 3
Data structures play a central role in many modern applications, and are essential building blocks of efficient algorithms. This course covers classical results and recent advancements on data structures. This includes data structures that improve search efficiency under various machine models, text indexing structures, and data structures for large data.
FORMAT: Lecture
PREREQUISITES: CSCI 3110.03 or equivalent

CSCI 6061   Advanced Quantitative Research Methods
CREDIT HOURS: 3
This project-based course presents advanced quantitative research methods for computer science, software engineering and related fields. It combines theoretical foundations and practical experience in a variety of research approaches including: controlled experiments, panel studies, systematic reviews, case studies, and questionnaires. Topics include instrumentation, sampling, measurement, epistemology, advanced statistical analysis and academic writing.
NOTES: Students should have already completed an introductory course in research methods such as CSCI 6055, or have a good understanding of fundamental quantitative research method topics.

CSCI 6062   Advanced Qualitative Research Methods
CREDIT HOURS: 3
This project-based course presents qualitative research methods as they are applied to human-centered research in areas of computer science like Human-Computer Interaction and software engineering. This course will provide students with theoretical foundations combined with hands-on experience to apply qualitative research theories and techniques to real-world, technology design challenges. Topics will cover i) methodologies for data collection; ii) an overview of data analysis methods; and iii) the non-trivial transformation of qualitative findings to implications for technology design. A strong emphasis will be placed on the ethical treatment of human participants, as well as how to navigate cross-cultural methodology challenges when collecting and analyzing data from a culturally diverse participant sample.
COREQUISITES: A foundational knowledge of Human-Computer Interaction is recommended but not required.

CSCI 6101   Advanced Topics in Analysis of Algorithms
CREDIT HOURS: 3
This research oriented course covers advanced material in the design and analysis of algorithms. It combines mathematically rigorous coverage of traditional topics with recent research results. Problems are taken from a wide range of areas including combinatorics, numerical computation, graph algorithms, string matching, approximation algorithms, computational geometry, NP-completeness.
PREREQUISITES: CSCI 3110.03 or equivalent
EXCLUSIONS: COMP 5130.03

CSCI 6105   Algorithm Engineering
CREDIT HOURS: 3
This course presents techniques and methodologies for Algorithm Engineering. Students will learn best practices for developing efficient algorithms and easy-to-use, well-tested, and high-performance implementations of algorithms for real world use. Practical algorithm concerns include maintaining numerical precision, optimizing for realistic rather than worst case inputs, cache efficient computing for processing big data, analysis of parallel and GPU algorithms, predicting the results of design choices and running experiments to verify those choices. The course includes lectures, hands-on labs exploring each aspect, reading assignments and discussions, and a course project providing the opportunity to gain hands on experience with algorithm engineering techniques.
EXCLUSIONS: CSCI 4118