The Computer Science program focuses on helping students gain the necessary skills to become productive leaders in computing and related industries. As such, our graduates are expected to be highly competent, well-qualified computer professionals with broad training in software development. Graduates are also expected to be well prepared for graduate study.

The Computer Science program cooperates closely with the computing industry, other universities, and AUBG alumni to provide a modern curriculum. For example, the program creates partnerships with regional and international universities and institutions and regularly organizes a seminar series with speakers from both academia and industry.

The Computer Science curriculum is designed according to the recommendations of the Association for Computing Machinery/Institute of Electrical and Electronics Engineers (ACM/IEEE) and enables students to meet the following skill- or competency-based outcomes:

- demonstrate an understanding of and ability to apply current theories, models, techniques, and technologies that provide a basis for problem-solving;
- work as an effective individual and as part of a team to develop and deliver quality software;
- communicate effectively both orally and in writing;
- be aware of critical ethical issues affecting computer science and the responsibilities of computer science professionals; and,
- learn new theories, models, techniques, and technologies as they emerge and appreciate the necessity of such continuing professional development.

Some of our graduates have gone on to complete postgraduate degree programs in prestigious universities in the United States and Europe, including Stanford, MIT, John Hopkins University, Oxford University, and University College – London, as well as many other top European universities. Others have joined international companies such as Microsoft, Google, IBM, Hewlett-Packard, and Accenture. Others have established their own successful software development companies, such as Progress Telerik, Melon, Eastisoft, MammothDB, and Transmetrics.

Total: 36 credit hours

*Required Courses (21 credit hours)*

COS 120 C++ Programming (or placement test)

COS 150 Discrete Structures

COS 221 Fundamental Data Structures

COS 235 Computer Architecture

COS 240 Object-Oriented Programming

COS 315 Software Engineering

COS 491 Senior Project I

As the basic programming language used across the COS major curriculum is C++, every student must either demonstrate an appropriate level of C++ expertise in a placement test or pass the COS 120 course. Students who pass the placement test may choose another course to take from the list of electives. Students who fail or do not take the placement test must take COS 120.

Note: A senior project counts as a Bulgarian Diploma Thesis and substitutes for the Bulgarian State Exam.

*Elective Courses (15 credit hours)*

Students may take no more than six credit hours from each of the groups below.

COS/INF/MAT 200-level:

COS 220 Concepts of Programming Languages

COS 230 Basics in Java Programming

COS 231 Introduction to UNIX

COS 260 Assembly Language Programming

INF 130 Basics in C# Programming*

INF 280 Database Systems*

MAT 201 Mathematical Statistics

MAT 214 Numerical Analysis

COS/INF 300-level:

COS 301 Compiler Theory

COS 331 Operating Systems

COS 340 Programming in Python

INF 320 Mobile Computing*

INF 335 Web Server Technologies*

INF 370 Information Security*

INF 375 Web-Client Technologies*

COS/INF 400-level:

COS 430 Cloud Computing

COS 440 Computer Networks

COS 460 Algorithms

COS 470 Artificial Intelligence and AI Programming

COS 480 Data Mining

INF 480 Big Data Analytics*

* Not more than three non-COS courses may be counted towards a COS major.

An additional group of general elective courses is represented by the following:

COS 310 Topics in Computer Science (one or more)

COS/INF 481 Internship

COS 492 Senior Project II

COS/INF L97 Special Topics in Computer Science (one or more)

COS/INF 498 Independent Study

The course COS 310 Topics in Computer Science and its description are defined for every particular offering. Students may take more than one COS 310 course. This designation is generally used to represent one credit, short courses.

The course COS L97 Special Topics in Computer Science and its description are defined for every particular offering. Students may take more than one COS L97 course. The letter L defines the level of the course.

Concentrations

The concentrations within the Computer Science major build upon the seven required COS courses to create a specific focus within the discipline. Students may declare one or more of the following concentrations if they take the appropriate electives in addition to the seven required COS courses. Students declaring a concentration must also meet the requirements for elective courses as defined by the major.

Foundations of Computing Concentration

Fifteen credit hours chosen from:

COS 220 Concepts of Programming Languages

COS 301 Compiler Theory

COS 331 Operating Systems

COS 430 Cloud Computing

COS 440 Computer Networks

COS 460 Algorithms

COS 470 Artificial Intelligence and AI Programming

COS 481 Internship

INF 280 Database Systems

MAT 214 Numerical Analysis

Software Development Concentration

Twelve credit hours chosen from:

COS 230 Basics in Java Programming

COS 231 Introduction to UNIX

COS 340 Programming in Python

COS 481 Internship

INF 130 Basics in C# Programming

INF 280 Database Systems

INF 320 Mobile Computing

INF 335 Web Server Technologies

INF 375 Web-Client Technologies

Three credit hours chosen from:

BUS 260 Marketing

ENT 300 Entrepreneurship

ENT 462 New Product Development

Independent Study or Special Topics courses, if relevant, may be counted towards a concentration at the discretion of the department chair.

Disciplinary Honors in Computer Science

Disciplinary honors may be given to a Computer Science major who upon graduation has

- achieved a GPA-in-major of at least 3.50;
- successfully completed and publicly defended a senior project in front of a panel of Computer Science faculty; and,
- received a grade of A for the senior project.

The panel will decide whether or not to recommend honors based on the project research, complexity, development, professionalism, presentation, demonstration, and documentation.