Computer Science

Bachelor of Science in Computer Science

Program Profile

Name of the program degree Bachelor of Science in Computer Science
Program duration to be completed in  4 years on a full-time basis
Total credits Option 1 Single major:  120 credits
Option 2  Major + minor in Robotics or Product Design or Technopreneur or another minor: 126 credits

Program Purpose

The purpose of the program is to develop computer scientists with a deep understanding of underlying computer science theoretical principles, software engineering practices and significant exposure to problem-solving, project-based, authentic and hands-on learning experience which will prepare them for work and allow them to contribute to society as creative, innovative and personally well-rounded, proactively leading and advancing it.

Program Educational Objectives

The educational objectives of the Bachelor of Science in Computer Science program are that within a few years of graduation, the majority of our graduates will demonstrate excellence in (i) top graduate programs; or (ii) technical and managerial leadership tracks in technology-based industries or sectors; or (iii) pursuing entrepreneurial ventures. In these roles, they will:

  1. Apply basic knowledge of computer science principles and in-depth knowledge of specific computing topics (such as artificial intelligence, machine learning, or software engineering practice) to address the full range of technical and societal problems;
  2. Conceive, design, and realize useful products, systems, and services, while properly respecting economic, environmental, cultural, life safety, and ethical standards or constraints;
  3. Discover and apply new knowledge, and develop new tools for the practice of computer science or software development;
  4. Be sensitive to professional and societal contexts, committed to ethical action, engaged in life-long learning and be prepared for future academic career, should they want one;
  5. Be leaders with an entrepreneurial mindset, and effective communicators as members of multidisciplinary teams, both in the profession and in the community;
  6. Engage with their communities, profession, the nation and the world.

Student Outcomes

Students should be able to:

  1. Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions;
  2. Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline;
  3. Apply computer science theory and software development fundamentals to produce computing-based solutions;
  4. Communicate effectively in a variety of professional contexts;
  5. Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles;
  6. Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.

In addition, they should have:

  1. An entrepreneurial mindset and an ability to lead themselves and others;
  2. A recognition of the importance of traditional values and national pride as well as global awareness.

No. Curriculum Components Number of Credits Credit Distribution (%/Total Credits)
I GENERAL EDUCATION 27 22.5 %
I.1 University Core Requirement 12 8.3 %
I.2 Distributional Requirement 12 14.2 %
I.3 Co-curricular Learning 3 2.5%
II PROFESSIONAL EDUCATION 93 77.5 %
II.1 College Core Requirement 30 25%
II.2 Major (Discipline) Requirement 32 26.7 %
II.3 Area of Concentration (Elective) 12 10 %
II.4 Free Electives (minor*) 8 (15*) 6.7 %
II.5 Science Courses 3 2.5%
II.6 Course-related Projects 2 1.7%
II.7 Practice/Internship Non-credit (640 hours)
II.8 Graduation Thesis/Capstone 6 5 %
  TOTAL 120 (127*) 100%

* Instead of taking 8 credits of free electives, students have an option of taking 15 credits to fulfill the requirements of a minor.

4 credits 

Pre-requisites: Introduction to Programming 

Course Description: 

This course covers program structure and organization, modular programming, advanced topics in object-oriented programming (abstract data types, polymorphism, interfaces, iterators), collections, basics of graphical user interfaces, recursion, data structures (lists, trees, stacks, queues, heaps, search trees, balanced trees, hash tables, graphs), and basic graph algorithms. Java is the principal programming language. 

4 credits 

Pre-requisites: Object-oriented Programming, Algorithms and Data Structures 

Course Description:  

This course provides an introduction to computer organization, systems programming and the hardware/software interface. Topics include instruction sets, computer arithmetic, datapath design, data formats, addressing modes, memory hierarchies including caches and virtual memory, I/O devices, bus-based I/O systems, and multicore architectures. Students learn assembly language programming and design a pipelined RISC processor. 

4 credits 

Pre-requisites: Object-oriented Programming, Algorithms and Data Structures 

Course Description: 

This course covers the topics of abstract data types, abstractions functions, interfaces, revisits recursion and regular expressions and grammars. It deals with parser generators, concurrency, thread safety, programming for sockets and networking, queues and message passing, multithreading, locks and synchronization, map and filter, streams and laziness. The course introduces the area of information and data management and how software can be designed to improve data management. It covers testing, code review, version control, designing specifications, debugging and developing complex graphical user interfaces.

4 credits 

Pre-requisites: Computer Organization 

Course Description: 

This course covers systems programming and introductory operating system design  and implementation. The basics of operating systems, namely structure, concurrency, scheduling, synchronization, memory management, filesystems, security and networking are covered. The course introduces parallel and distributed computing. 

4 credits 

Pre-requisites: Introduction to Programming; Probability and Statistics 

Course Description: 

This course covers the main areas of artificial intelligence, including symbolic and connectivist approaches to artificial intelligence, state search algorithms and biologically inspired optimization algorithms, Bayesian networks, the use of logic programming and inference algorithms for logical problems. As part of the course, students will learn about various approaches to representing uncertainty, get an introduction to the decision theory, planning and decision making under uncertainty, and learn how to apply various artificial intelligence methods to different problems. The course will consider ethical and societal issues related to artificial intelligence. 

4 credits 

Pre-requisites: Theory of Computation 

Course Description: 

This course covers four major algorithm design techniques (greedy algorithms, divide and conquer, dynamic programming, and network flow), and algorithmic techniques for intractable problems, including identification of structured special cases, approximation algorithms, and local search heuristics. Applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. 

4 credits 

Pre-requisites: Linear Algebra, Probability and Statistics, Object-oriented Programming, Algorithms and Data Structures 

Course Description: 

This course covers the principles and algorithms for turning training data into effective automated predictions. It covers the topics such as representation, overfitting, regularization, and generalization, clustering, classification, recommender problems, probabilistic modelling, reinforcement learning; and methods such as support vector machines and neural networks/deep learning. 

4 credits 

Pre-requisites: Object-oriented Programming, Algorithms and Data Structures 

Course Description: 

This course gives an introduction to relational and noSQL database systems. The topics covered include the relational model, relational algebra, entity-relationship model, schema design, normal forms, SQL, indexing, sorting, relational operators, query optimization, transactions, concurrency control, recovery, database design, and concepts and algorithms for building database management systems. 

3 credits 

Pre-requisites: Machine Learning, Linear Algebra, Object-oriented Programming, Algorithms and Data Structures 

Course Description: 

This course teaches introduction to computer vision. The goal of computer vision is to compute properties of our world-the 3D shape of an environment, the motion of objects, the names of people or things-through analysis of digital images or videos. The course covers a range of topics, including 3D reconstruction, image segmentation, object recognition, and vision algorithms from the Internet, as well as key algorithmic, optimization, and machine learning techniques, such as graph cuts, nonlinear least squares, and deep learning. This course emphasizes hands-on experience with computer vision, and several large programming projects.

3 credits 

Pre-requisites: Computer Organization 

Course Description: 

This course teaches basic networking with an emphasis on the Internet. Examples of topics include: the World Wide Web, Email and Peer to Peer networks, data transmission and data encoding, circuit vs. packet switching, local area network technology, routing and switching, congestion control, network security, wireless networks and multimedia. Though the emphasis will be on the Internet, application modules on 4G/5G cellular, WiFi (802.11), and Bluetooth will be presented. 

Min 1 credit 

Pre-requisites: Determined by the course lecturers 

Courses for the project: Computer Organization, Algorithm Design, Operating Systems, Artificial Intelligence, Machine Learning, Human-Computer Interaction, Robotics, Cybersecurity and Data Mining and Big Data. 

Course Description: 

Students work in multidisciplinary teams on a course-related problem guided by the course instructor. 

3 credits 

Pre-requisites: Introduction to programming, statistics and probability, data mining and big data analytics 

Course Description: 

This course teaches techniques and algorithms for creating effective visualizations of large datasets and their analytics, based on principles from graphic design, visual art, perceptual psychology and cognitive science. In addition to participating in class discussions, students will have to complete several short data analysis and visualization design assignments as well as a final project. Data visualisation tools  such as Tableau are considered as lab exercises.

3 credits 

Pre-requisites: Machine Learning, Object-oriented Programming, Algorithms and Data Structures 

Course Description: 

This course covers the introduction to natural language processing (NLP), the goal of which is to enable computers to use human languages as input, output, or both. It examines NLP in context of including machine translation, automatic conversational assistants and Internet search. Possible topics include summarization, machine translation, sentiment analysis and information extraction as well as methods for handling the underlying phenomena (e.g., syntactic analysis, word sense disambiguation, discourse analysis, their shortcomings and solutions). 

3 credits 

Pre-requisites: Object-oriented Programming, Algorithms and Data Structures, Discrete Mathematics 

Course Description: 

This course covers the topics of technical and social understanding of how and why security and privacy matter, how to think adversarial, how (and how not) to design systems and products. Topics include user authentication, cryptography, malware, behavioural economics in security, human factors in security, privacy and anonymity, side channels, decoys and deception, and adversarial modelling. Real-world systems and attacks, including Bitcoin, Stuxnet, retailer breaches, implantable medical devices, and health apps are covered. The course discusses societal and ethical issues in cybersecurity. 

3 credits 

Pre-requisites: Linear Algebra, Object-oriented Programming, Algorithms and Data Structures, Machine Learning 

Course Description: 

This course covers the statistical aspects of data mining, the effective analysis of large datasets. It covers the process of building and interpreting various statistical models appropriate to such problems arising in scientific and business applications. Topics include preparing data for data mining and interpreting and representing knowledge from big data analysis. Assignments are done using one or more data mining. 

3 credits 

Pre-requisites: Theory of Computation, Linear algebra 

Course Description: 

This is an introductory course in Cryptography. Topics include one-way functions, encryption, digital signatures, pseudo-random number generation, zero-knowledge and basic protocols. The emphasis will be on fundamental notions and constructions with proofs of security based on precise definitions and assumptions. 

Non-credit course 

Pre-requisites: Determined jointly by the faculty and internship company representatives. 

Course Description: 

Students work on a problem jointly defined by the faculty and a company or an organization. The problems need to be higher-level and designs problems requiring students to work in teams and to engage in various phases of company operation during the practice/internship semester. 

6 credits 

Pre-requisites: Practice/Internship; Determined by the advisor 

Course Description: 

Students work on a problem defined by their advisor and apply knowledge from the practice/internship and the courses completed by the student. 

4 credits 

Pre-requisites: None 

Course Description: 

This course covers notions, techniques and algorithms of discrete mathematics with the special emphasis on sets and proof techniques, functions and relations, number theory, combinatorics, probability, logic, the basics of graph theory and the basics of cryptography. 

3 credits 

Pre-requisites: Probability and Statistics 

Course Description: 

This course teaches advanced topics in probability and statistics. Topics include random processes, convergence of random processes, Markov Chains, Bayesian statistics, and nonlinear regression.