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 5411   Advanced Cloud Architecting
CREDIT HOURS: 3
Cloud architecting covers all the technologies of cloud computing. Students will learn the best practices for building a well-architected cloud framework on AWS that contains operational excellence, cloud security, cloud reliability, performance efficiency, cost optimization, and sustainability. Students will enhance their understanding of what they learn by real industry case studies and hands-on labs. Students will gain experience in designing and implementing robust cloud architectures using cloud resources like compute (e.g. EC2), network (e.g. VPC), storage (e.g. S3, EBS, EFS), security (e.g. IAM), database (e.g. RDS, DynamoDB). Students will investigate many AWS cloud services to analyze the best choices for given use cases. Students will build a real project by doing a series of challenge labs.
PREREQUISITES: CSCI 5100, CSCI 5308, CSCI 5408 and (CSCI 5409 or CSCI 5410). At the discretion of the course instructor, the successful completion of official cloud certifications, at any level, may be used to satisfy the prerequisite requirement for CSCI 5409 or CSCI 5410.

CSCI 5501   Deep Learning Applications
CREDIT HOURS: 3
Deep learning is a branch of machine learning that uses multiple layers of artificial neural networks (algebraic circuits) to automatically extract features and hierarchical representations from data. Deep learning’s ability to utilize and learn complex functions from vast amounts of data, its adaptability to a wide range of data types, and the availability of powerful computational resources, have enabled its application to numerous real-world tasks. Deep learning has transformed various fields by achieving unprecedented performance in tasks such as image classification, natural language dialog, and robot navigation, to name a few. This course is designed to provide an application-focused exploration of deep learning. Students will learn about the various applications of deep learning and the underlying concepts and methods (in the context of the applications) to build and utilize deep learning methods effectively.
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 5990   Software Development Concepts
CREDIT HOURS: 6
This course covers the (i) application of standard abstract data types, fundamental data structures, and commonly used algorithms; (ii) design and implementation of databases; and (iii) the fundamental practice of software engineering. Students reinforce the skills and concepts covered in lectures through assignments and a project that integrates all three components. This course is intended to fill in the knowledge gaps that incoming Master of Applied Computer Science graduate students may have. Students must receive a B- or higher in this course to pass.
NOTES: This course may not be counted towards the elective requirement of any computer science graduate program. It can only be taken as an added program requirement as assigned by the program director.
COREQUISITES: CSCI 5100.03
EXCLUSIONS: CSCI 3901.06

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.