91´«Ă˝

Major Overview

ByĚýlearning how to apply computational and quantitative methodologies to diverse subject areas, whileĚýunderstanding the theoretical underpinnings of computing and software development, you will be prepared for fields where radical change is the norm.ĚýOurĚýcurriculum provides detailed instruction in topics as wide-ranging as java programming and discrete mathematics and will helpĚýdeepen yourĚýliberal arts foundation by enhancing your quantitative and abstract reasoning skillsĚýandĚýyour ability toĚýefficientlyĚýformulate and solve problems. Find immediate practical applications for your studies through ourĚýTechnology and Cognition Lab andĚýyour professors’Ěýongoing collaborative projectsĚýwith colleagues at world-renowned universities and research labs.Ěý

Ěý

Featured Course - Data Science: Methods and Contexts

LEARNING OUTCOMES

The educational goals for this major are as follows:

  • Knowledge: you will understand the theory, practices, and tools for the specification, design, implementation, and evaluation of digital systems.
  • Application: you will be able to apply the knowledge involved in creating and deploying digital devices to solve practical problems demonstrating a clear comprehension of the trade-offs involved in choices made throughout the lifetime of the system.
  • Communication and ethical practices: you will be able to communicate with various stakeholders about technical problems and their solutions. You will be able to analyse the ethical implications of system design.

Learning Environment

You will find yourself within a setting that stresses the importance of a contextualized and active learning approach,ĚýwhichĚýemphasizes interdisciplinary education and research through close ties with other AUP departments, as well as universities and industries around the world. Our small classes are meant to foster open discussion, guided individualĚýand group projects, as well asĚýbroaderĚýstudent-professor collaborations.Ěý

Major Components
Build your Degree

With every single one of our majors, you’ll find a carefully curated medley of core courses and electives, which will provide you with the tools you need to establish an unshakeable foundation in the principles and concepts fundamental to your growth within your disciplines of choice. Many majors also enable you to specialize further within the broader area of study.

Core Courses

Core Courses

We aim to help you develop a range of skills, capacities, and modes of inquiry that willĚýproveĚýcrucial since employers and graduate schools are looking for the critical thinking and innovative problem-solving skills that are associated with a liberal arts education. Many of ourĚýstudents continueĚýtheir studies at top institutions like MITĚýand Harvard,Ěýwhile othersĚýbegin careers inĚýfieldsĚýlikeĚýmobile application development.Ěý

Scroll to Core Courses

Electives

Electives

Each elective provides you with entry toĚýa variety of subject areas which you can choose among to further focus your studies. With the help of your academic advisor, you’ll be able to tailor your major so that it most effectively prepares you for the next step in your academic and professional journey.

Specialization

Specialization

You may choose to orient your Computer Science major towards the Information and Communication TechnologiesĚýspecialization. WhileĚýbuildingĚýthe groundworkĚýforĚýyour computer science studies, you will take complementary coursesĚýtoĚýlink your major withĚýanother, broader, interest. Previous students have chosen to combine computer science with subject areasĚýthat includeĚýbusiness, economics, art history, and psychology.

Ěý

Core Courses

The Computer Science core courses, which you must take as part of the major requirements, will provide you with the tools you’ll need to ground your present and future studies. Your introduction to the fundamentals of Computer Science will help pave the way for your successful completion of other Computer Science courses.

MA1020 Applied Statistics I

Introduces the tools of statistical analysis. Combines theory with extensive data collection and computer-assisted laboratory work. Develops an attitude of mind accepting uncertainty and variability as part of problem analysis and decision-making. Topics include: exploratory data analysis and data transformation, hypothesis-testing and the analysis of variance, simple and multiple regression with residual and influence analyses.

OR
MA1030 Calculus I

Introduces differential and integral calculus. Develops the concepts of calculus as applied to polynomials, logarithmic, and exponential functions. Topics include: limits, derivatives, techniques of differentiation, applications to extrema and graphing; the definite integral; the fundamental theorem of calculus, applications; logarithmic and exponential functions, growth and decay; partial derivatives. Appropriate for students in the biological, management, computer and social sciences.

Ěý
CS1040 Computer Programming I

This course is a gentle introduction to the field of Computer Science and the fundamental concepts of programming. It starts with a brief history of computing and the basic elements of the computers' architecture. It focuses on the correct and fluent use of appropriate terminology in CS to describe fundamental concepts and programs. It has has strong hands-on approach and leads to understanding fundamental concepts such as flow-charts representation of algorithms, conditional statements, iteration, primitive data types, collections and functions. Students learn to use the documentation of a programming language and understand error messages for debugging.

CS2040 Computer Programming II

This course teaches object-oriented programming (OOP) from the ground up. You’ll start with class and object design, then advance to key OOP principles: inheritance, polymorphism, and abstraction. Learn to write reusable, modular code and manage complexity through encapsulation. The curriculum also covers exception handling, debugging, and testing using modern IDEs, ensuring you can build robust applications. Finally, you’ll get an introduction to GUI design, enabling you to create interactive user interfaces. By the end, you’ll have the skills to develop well-structured software using OOP best practices.

CS2071 Algorithms & Data Structures

This course provides a practical introduction to essential data structures (including stacks, queues, sets, trees, and graphs) and foundational algorithms for sorting, searching, and traversal. You’ll learn how to select and implement the right structure or algorithm for real-world problems, balancing efficiency and functionality. The course also emphasizes algorithm complexity analysis, teaching you to use Big-O notation to evaluate and compare the performance of different approaches. Through hands-on exercises using predefined software libraries, you will apply these fundamental concepts in real problem solving. By the end, you’ll be equipped to choose data structures and algorithms effectively in your programming projects.

MA2400 Discrete Mathematics

This course is designed to highlight discrete mathematical structures. Discusses propositional logic, proofs and mathematical induction, matrices of relations and digraphs, set theory and number bases, combinatorial analysis, graph theory and Boolean algebra.The prerequisite for this course is MA1010 or above or CS 1040.

CS3015 Computer Networks

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.

CS3032 Operating Systems

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.

CS3048 Human-computer Interaction

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.

CS3050 Research And Writing In Cs & Mathematics

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.

CS3051 Web Applications

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.

CS3053 Software Engineering

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.

CS3068 Database Applications

Introduces databases from the programmer's perspective. IT and CS students have common lectures but different projects. IT students learn the fundamentals of database design, SQL, and how to integrate a database into applications. CS students learn the fundamentals of database design, application integration, query motors, and space management.

Ěý
CS4095 Senior Project

A Senior Project is an independent study representing a Major Capstone Project that needs to be registered using the Senior Project registration form. (Download: https://aupforms.formstack.com/workflows/senior_project)

OR
CS4098 Capstone Internship

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.