Course Catalog

LANGUAGES & DATA STRUCTURES (CS2071)

Uses predefined classes and class libraries to introduce standard data structures (stacks, queues, sets, trees, and graphs). Studies and implements algorithms for string-searching, sorting, trees and graph traversals. Introduces algorithm complexity analysis and big-Oh (O,,) notation.

TOPICS IN COMPUTER SCIENCE (CS2091)

Covers a current CS topic of interest. Content changes each semester the course is offered.

COMPUTER NETWORKS (CS3015)

The course explains through an architecture perspective the principles and practice of computer networking, with emphasis on the Internet and on pervasive computing. The following topics will be covered: structure and components of distributed systems, layered ISO/OSI architectures, protocols, local Area Networks, wide area networking issues including routing, flow control. Some advanced topics will also be covered such as pervasive computing, ad-hoc networks, security and privacy.

ARTIFICIAL INTELLIGENCE (CS3026)

Introduces some of the key ideas and concepts in artificial intelligence (e.g. knowledge bases, problem solving). Provides an overview of current applications (expert systems and rule-based systems, language understanding, perception, learning). Introduces some of the techniques (matching, goal reduction, tree-pruning, searching, etc.) that are typically used.

OPERATING SYSTEMS (CS3032)

Studies the design and implementation of general-purpose operating systems on digital computers: memory management, virtual memory, storage hierarchy evaluation, multiprogramming, process creation, synchronization, deadlock, message communication, parallel programming constructs, I/O management, and file systems. Includes case studies of major operating systems.

EFFICIENT ALGORITHMS (CS3046)

Develops skill in devising combinatorial algorithms and in analyzing their behavior. Starts with a brief introduction on formal systems, automata and Turing machines and continues with a study of algorithms for sorting, searching, string processing, geometry, graphs, numeric, and algebraic applications.

HUMAN-COMPUTER INTERACTION (CS3048)

Introduces theories of human-computer interaction and analyzes human factors related to the design, development, and use of Information Systems. Students will apply these theories with examples of design, implementation, and evaluation of multimedia user interfaces. The subject of this course is inherently interdisciplinary and the students attending the course normally represent several majors.

RESEARCH AND WRITING IN CS & MATHEMATICS (CS3050)

This course addresses writing in a professional context for both Computer Science and Mathematics. Students will learn to write technical material aimed at professionals, to engage in peer review and critique (including writing a reviewing report directed to the author) and appropriate styles of writing for different audiences (e.g. children, the general public, an evaluator, professional colleagues). Students will explore quantitative and qualitative research methodologies, as well as how to design, and report on, different types of studies, including observational studies, scientific experiments, usability studies and many others. Along the way, they will learn to write in mark-up language (such as LaTeX or other) appropriate to the context.

WEB APPLICATIONS (CS3051)

Much of the world’s population relies on online technologies, particularly online applications accessed through a web browser, otherwise known as websites. Understanding how websites work and being able to create powerful online applications is an important aspect of the software profession. More than other digital applications, complete web applications require the integration of numerous technologies. This course will introduce students to online technologies and provide the foundations and skills needed for creating professional web applications.

The course will cover HTML, CSS, Javascript, and Node.js. Students will create full-stack websites backed by a SQL database. Prior programming experience is required.

SOFTWARE ENGINEERING (CS3053)

In this course we will follow the Agile approach to software engineering. The course will use a SaaS project-oriented approach in order to teach key methodologies such as Behavior and Test Driven Development, Pair Programming, Design Patterns, Tools for Automation, Continuous Integration and others. Among technologies which will be learned are: git, github, linux, ruby, rails and various gems. Attending CS3051 and CS1050 before taking this course is recommended.