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)

One of the most critical factors in the success of an idea is effective communication.

This course addresses written communication in different contexts for both Computer Science and Mathematics.

Students will learn to choose the appropriate styles for different audiences (e.g. textbooks, articles/reviews, posters, general public, professional colleagues).
They will be asked to research and report on small practical tasks in bot CS and Math, such as proof, empiric complexity analysis of algorithmic strategies, data analysis and visualization and software documentation, producing well structured and formatted documents. Along the way, they will learn to use mark-up languages (such as LaTeX and markdown) and dedicated software for plotting and graphics editing.

WEB APPLICATIONS (CS3051)

This course introduces core web technologies and the fundamentals of building web applications. Students learn how web-apps work, explore key internet concepts, and examine ethical considerations in web design (e.g. intellectual property and accessibility). The course will use up-to-date tools and frameworks for web development. Students will create a full-stack web app. 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.

INTERNSHIP (CS3098)

An Internship can replace one elective from the ICT curriculum. It may be done in France or elsewhere. Internships may be taken for 1 or 4 credits. Students may do more than one internship, but internship credit cannot cumulatively total more than 4 credits.