OVERVIEW
OVERVIEW

The BSc in Computer Science program is concerned with the theoretical foundations of information and computation. Computation is defined as any type of calculation or use of computing technology that follows well-defined models (such as algorithms and protocols) in the practice of information processing. The study of computer science involves systematically studying, building, and testing methodical processes (such as algorithms) in order to aid the acquisition, representation, processing, storage, and communication of information.

The program provides a strong understanding of the relationship between computer hardware and software and all related issues. It is key to many career opportunities in high-tech manufacturing, in software development, and in mobile and digital security. Students are offered opportunities to customize their education by selecting from a wide pool of technical elective courses.

Program Enrolment and Degree Data
Program Educational Objectives

The program’s graduates are expected to be able to:

  • Develop in their chosen profession and/or progress toward an advanced degree
  • Gain the trust and respect of others as effective and ethical team members
  • Achieve a reputation as a source of innovative solutions to complex problems in computer science and related areas; and
  • Reach positions of leadership in an organization and/or on teams.
Student Learning Outcomes

Students graduating with a BSc in Computer Science will attain the following:

(1)

An ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics.

(2)

An ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors.

(3)

An ability to communicate effectively with a range of audiences.

(4)

An ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts.

(5)

An ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives.

(6)

An ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions.

(7)

An ability to acquire and apply new knowledge as needed, using appropriate learning strategies.

Career Opportunities and Specializations

Computer Scientists usually work in research laboratories that design, build and test various types of computer software models. Most work in high-tech manufacturing firms in the software development, mobile and digital security industries. There are also computer systems opportunities in design firms, research and development firms, or in governmental bodies such as defense, armed forces, police, health care and information technology (IT).

Some indicative career specializations include:

  • Artificial Intelligence
  • Cloud Computing
  • Data Mining and Business Intelligence
  • Game Development
  • Digital Security/Cryptography
  • Mobile Applications Development
  • Robotics
  • Software development & Testing
  • Virtualization
  • Web and Multimedia Design
STRUCTURE & REQUIREMENTS
Course Descriptions

Course Description of Computer Science

 

COSC 101                             Foundations of Computer Science (2-1-3)

Prerequisites:    ENGR 112

 

The course provides a comprehensive high-level introduction to computer science. It exposes students to variety of topics from computer science and its applications, including: system software, computer network, cloud computing, databases, artificial intelligence & machine learning, and information security. Python programming language and basics of web development will be also covered.

 

COSC 201                             Computer Systems Organization (2-3-3)

Prerequisites:    COSC 101

 

This course provides a basic understanding of the fundamental logical organization of a computer (its parts and their relationship) and how it actually works; exposure to a central processor’s native language, and to basic computer components and basic architectures for high performance design. Topics include: Von Neumann architecture, C programming (low-level aspects), data representation, computer arithmetic, assembly language programming, digital logic design, registers, instruction counter, processor architecture, pipelining, memory hierarchies, caching, virtual memory, interrupts, input and output, buses.

 

COSC 301                             Automata, Computability, and Complexity (2-2-3)

Prerequisites:    COSC 101, MATH 234

 

This course is about fundamental ideas in the theory of computation, including formal languages, computability and complexity. In this standard computer science course, the students will gain the proficiency in the concepts of automata, formal languages, grammar, algorithms, computability, decidability, and complexity.

 

COSC 310                             Data Structures (2-3-3)

Prerequisites:    ECCE 230, MATH 234

 

Review of object-oriented design. Analysis of algorithm complexity. Fundamental data structures: Concept of Abstract Data Types (ADTs), Queues, Stacks, Lists, Trees; Java Collections Framework.  Fundamental computing algorithms: binary search trees, hash tables, heaps, balanced trees, sorting algorithms, searching algorithms.  

 

COSC 312                             Design and Analysis of Algorithms (2-2-3)

Prerequisites:    COSC 301, COSC 310

 

This course covers the most important algorithm strategies and solution techniques, independent of programming language or computer hardware. Topics include: Big-O notation; worst and average case analysis; recurrences and asymptotics; efficient algorithms for sorting, searching, and selection; algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, randomization; algorithms for fundamental graph problems; string algorithms; and numerical methods.

 

COSC 320                             Concepts of Programming Languages (2-3-3)

Prerequisites:    COSC 301

 

This course provides the students with a basic understanding and appreciation of the various essential programming-languages constructs, programming paradigms, evaluation criteria and language implementation issues. The topics covers concepts from imperative, object-oriented, functional, logic, and concurrent programming. These concepts are illustrated by examples from varieties of languages such as Pascal, C, C++, C#, Java, Python, Lisp, Scheme, Haskell, Prolog. Some basic aspects of compiler design like lexical and syntax analysis will also be covered.

 

COSC 330                             Introduction to Artificial Intelligence (2-3-3)

Prerequisites:    COSC 310 or ECCE 342

 

This course covers the fundamental aspects of classic and modern Artificial Intelligence. Topics include: AI History, solving problems by searching, knowledge representation and reasoning techniques, agents, decision tree, Bayes classifier, machine learning, game theory, reinforcement learning, and fuzzy logic.

 

COSC 340                             Introduction to Computer Security (2-2-3)

Prerequisites:    ECCE 354

 

Introduction to computer security. Fundamentals of cryptography: Substitution ciphers, hashing, symmetric and asymmetric crypto. Program Security: detect and exploit vulnerabilities in programs. Web vulnerabilities: SQL injection, cross site scripting. Identification and Authentication: Username and passwords, spoofing attack, password cracking. Access control: access control matrix and list, role based access control, multi-level security, access control in operating system such as Linux. Malware and Malware detection. Emerging threats: overview of other threats.

 

COSC 391                             Independent Study I (Variable course credits from 1 to 3)

Prerequisites:    Approval of department and junior standing

 

This course gives an upper level undergraduate student the opportunity to participate in an individual or group project, study, or research activity under the supervision of a faculty member.  A formal report is required.

 

COSC 395                             Special Topics in Computer Science (from 1 to 3 credits)

Prerequisite:      Topic specific

 

This course mainly deals with new trends in Computer Science and emerging technologies. Course is repeatable if title and content differ.

 

 

COSC 401                             Computational Social Science (2-3-3)

Prerequisites:    COSC 312, COSC 410

 

The course is concerned with using computational approaches to study social phenomena and address important questions in social science. The course provides an overview of the computational social science field and use of data science techniques for computational social research. The course covers various techniques for data analysis of digital traces of people in social media, telecommunication and clickstreams as well as web-based social experiments that can be conducted at a large scale. The topics covered include overview of computational social science, data analysis of digital traces and clickstreams, design of social web-based experiments, data analysis of mobile phones and wearable sensors data, data analysis of social media data, and data science crowdsourcing techniques.

 

COSC 410                             Parallel and Distributed Computing (2-3-3)

Prerequisite:      COSC 312, ECCE 354

 

This course covers a broad range of topics related to parallel and distributed computing, including parallel and distributed architectures and systems, parallel and distributed programming paradigms, parallel algorithms, and scientific and other applications of parallel and distributed computing. Course topics include: concepts of parallelism, parallelism in Python, multi-threading, networks and MPI for cluster computing, fork-join parallelism, shared-memory concurrency control, and practical parallel/distributed programming applications.

 

COSC 412                             Numerical Computing (2-3-3)

Prerequisite:      COSC 312

 

This course is an introduction to numeric and algorithmic techniques used for the solution of a broad range of mathematical problems, with an emphasis on computational issues. It covers basic concepts and methods in numerical analysis: Analysis of round off errors using floating-point arithmetic; Solution of non-linear equations in one variable; Polynomial interpolation and approximation; Numerical differentiation and integration; Initial-value problems for ordinary differential equations; Direct methods for solving linear systems; Singular-value approximation; and Optimization.

 

COSC 430                             Data Analytics (2-3-3)

Prerequisite:      COSC 330; MATH 242/ 243

Co-requisite:      COSC 434

 

This course covers various contemporary techniques in data analytics, which encompasses a broad set of computational and statistical methods and tools needed to draw insights from the growing amounts of data. Overall topics include: data acquisition, scraping, cleaning, manipulation; predictive data analysis; exploratory data analysis; statistical modeling of data; and communication of results via data visualization. The course will include significant programming in Python, and will introduce the statistical programming language R.

 

COSC 432                             Algorithmic Robotics (2-3-3)

Prerequisite:      COSC 330

 

In this course, fundamental disciplines of modern robotics are introduced: mechanics, control, and computing. These components are integrated to analysis, design, and control of mobile robots and manipulators to serve engineering or scientific needs. Students will learn: how to use mathematical methods to model mobile robots and manipulators and to plan their motion; how to process sensor information to form a perception of the environment; and how to implement algorithms through computer systems to achieve autonomy.

 

COSC 434                             Introduction to Machine Learning (2-3-3)

Prerequisites:    COSC 330, MATH 204, MATH 243/242

 

This course covers various contemporary techniques in machine learning. Overall topics include: classes of machine learning (supervised, unsupervised), feature engineering and selection, logistic regression, non-parametric methods, non-parametric methods, GMM and EM algorithms, neural networks, support vector machine, k-means and hierarchical clustering, etc. The course will use Python machine learning libraries extensively.

 

COSC 440                             Digital Forensics (2-3-3)

Prerequisite:      COSC 340

 

This module gives an introduction to principles, techniques, and tools to perform digital forensics, which encompasses the recovery and investigation of material found in digital devices in relation to cybercrime and other crimes where digital evidence is relevant. Students will learn evidence extraction and analysis on UNIX/Linux, Windows, and macOS systems, networks, web applications, and mobile devices; and gain exposure to available tools. Some legal/ethical aspects of digital forensics will also be discussed.

 

COSC 442                             Applied Cryptography (2-3-3)

Prerequisite:      COSC 340

 

This course builds upon the cryptography concepts covered in the course “Introduction to Computer Security” and it presents security protocol designs and advanced topics in applied cryptography. We cover a comprehensive set of topics including cryptographic protocol design, zero knowledge proofs, multi-party encryption protocols, blockchain technology, encrypted machine learning, and secure hardware technologies.

 

 

COSC 452                             Human-Computer Interaction (3-0-3)

Prerequisite:      ECCE 336

 

This course provides an introduction to and overview of the field of human-computer interaction (HCI).  HCI Theories Principles and Guidelines will be covered including   HCI Design and  principles of user interface design. In addition, the different types of user interface evaluation techniques will be covered including  expert reviews, predictive models and  usability testing. Students will work on team project to design, implement and evaluate computer interfaces.

 

COSC 454                             Computer Graphics (3-0-3)

Prerequisite:      COSC 312

 

This course will provide a comprehensive introduction to basic computer graphic technology in both theory and practice. Focusing on geometric intuition, it will provide the necessary information to understand how 2D and 3D synthetic images are modelled and generated using the complementary approaches of ray tracing and rasterization. Topics covered include introduction to graphics, mathematical foundations of graphics, raster images, ray tracing and shading, viewing transformations and projection, the graphics pipeline, surface shading, texture mapping, curves, computer animation, etc.

 

COSC 460                             Bioinformatics and Genomic Data Science (2-3-3)

Prerequisite:      COSC 312, COSC 410

 

This course introduces Computer Science students to bioinformatics, the scientific discipline at the intersection of Computer Science and Molecular Biology/Genetics. It aims to make sense at Big Data generated in biotechnology, first and foremost sequential data such as DNA and protein sequences. A central focus of this course is to bridge the gap between existing algorithms to the development of the next generation bioinformatics tools by understanding the algorithmic underpinnings incl. computational complexity, common data representations and file formats as well as state of the art storage strategies. The course will cover common sequence analysis techniques, phylogeny, common data formats and storage techniques and cutting edge topics such as CRISPR and Deep Learning.

 

COSC 462                             Mobile and Web Applications Development (2-3-3)

Prerequisite:      COSC 310

 

This practical-oriented course will enable the students to understand the fundamental concepts of web services and web & mobile app development. The techniques to design and develop static and interactive websites using HTML5, CSS3, Javascript, and other tools like JQuery, web-APIs, JSON, AJAX, etc. will be included. For the Android Platform, the app development including graphics and multimedia ones using Android Studio IDE will be discussed. For the iOS Platform, the app development techniques using iOS SDK with Swift and XCode will be covered.

 

COSC 464                             Natural Language Processing (2-3-3)

Prerequisite:      COSC 330, COSC 410

 

The course will provide a broad introduction to the field of Natural Language Processing or NLP, loosely defined as the study of systems and algorithms that can comprehend, communicate in or analyze data in human language. Students will gain a good understanding of the different problems faced by NLP systems, methods for addressing these problems, and their relative advantages or disadvantages. The class will devote significant time to recent data-driven approaches, in particular neural-network and/or deep learning methods that can be trained (rather than manually programmed) using labeled text corpora.

 

COSC 491                             Independent Study II (Variable course credits from 1 to 3)

Prerequisite:      Approval of department and senior standing

 

This course gives an upper level undergraduate student the opportunity to participate in an individual or group project, study, or research activity under the supervision of a faculty member.  A formal report is required.

 

COSC 495                             Special Topics in Computer Science

Prerequisite:      Topic specific

 

This course mainly deals with new trends in Computer Science and emerging technologies. Course is repeatable if title and content differ.

 

TYPICAL STUDY SEQUENCE