Courses

Computer Science

COS 120 C++ Programming
This course introduces the basic concepts of computer science using the C++ programming language. Major topics covered include a review of the organization of a general computer, an introduction to algorithms, and a detailed description of programming constructs. Extensive lab exercises emphasize the use of the programming language’s facilities for computer problem solving, the application of a software development method, and the concept of a software life cycle. Cr. 3 (6 ECTS Cr.). Offered every semester.

COS 150 Discrete Structures
This course presents fundamental discrete mathematics concepts that are essential to understanding the capabilities and limitations of computers. The material develops a practical command of mathematical structures through a wide selection of problems. The concepts covered include propositional logic and Boolean algebra, sets, relations, functions, counting, graphs, and computability on abstract machines. The discrete structures are presented in a formal framework useful for further study in the field of computer science. Cr. 3 (6 ECTS Cr.). Offered every spring.

COS 220 Concepts of Programming Languages
This course covers the underlying principles and fundamental paradigms of modern programming languages and provides a comprehensive description of typical programming constructs, including data declarations, operators, expressions, statements, and program units. Lexical, syntactic, and semantic aspects of programming languages are studied using precise formal definitions that provide a sound background for the critical evaluation of various programming paradigms, such as procedural, object-oriented, logic, and functional styles. Prerequisite: COS 120 or INF 130. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 221 Fundamental Data Structures
This course introduces the fundamental data structures and algorithms to manipulate collections of objects. Topics presented include the construction of abstract data types, the analysis of algorithms, the implementation and application of data structures (e.g., vectors, strings, lists, queues, and trees), and the study of related classical algorithms. This course is based on the object-oriented paradigm, and, specifically, the C++ programming language. Prerequisites: COS 120 and COS 150. Cr. 3 (6 ECTS Cr.). Offered every other semester.

COS 230 Basics in Java Programming
This course introduces students to efficient problem solving using the Java programming language. The major topics covered include algorithms, various frameworks to develop Java programs, problem solving, object-oriented programming, event-driven and GUI programming. Examples illustrate the syntax and semantics of the Java language. The language constructs introduced include primitive data types, operators, expressions, control structures, arrays, strings, reference variables, classes, properties, methods, objects, and programs as a collection of classes, and packages. Prerequisite: COS 120 or INF 130. Cr. 3 (6 ECTS Cr.). Offered every spring.

COS 231 Introduction to UNIX
This course introduces students to the UNIX operating system from the user’s point of view and covers the basic structure of UNIX, the basic set of commands, the file system, editors and utilities, shell programming and programming tools, scripting languages, and Perl programming. This course also considers important security issues and proper configuration of the access permissions in a multiuser and multitasking operating system environment. This course’s programming project trains students to work effectively in teams, share responsibilities and duties, analyze ideas objectively, and build a consensus. Cr. 3 (6 ECTS Cr.). Offered every fall.

COS 235 Computer Architecture
This course examines the design and organization of modern computer systems by concentrating on the structure and operation of the processor, memory and I/O subsystems, and the critical role of performance in driving computer design. This course also covers some of the issues involved in multiple processor and vector processing organizations and considers the implementation of the basic storage elements and circuits in digital logic, specifically with combinational and sequential circuits. Cr. 3 (6 ECTS Cr.). Offered every spring.

COS 240 Object-Oriented Programming
This course examines the main features supported by object-oriented programming languages, such as classes, instances, inheritance, polymorphism, and others. These features will be illustrated with examples taken from the C++, Java, and C# programming languages. Although not a course that teaches advanced programming in such languages, it will cover the rudiments of writing small programs that implement object-oriented features in these languages. Prerequisite: COS 120. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 301 Compiler Theory
This course examines the theory and practice of compiler construction and describes a variety of formal grammars, formal languages, and recognizers, including regular expressions, linear grammars, context-free grammars, finite state automata, and stack automata. This course also discusses distinct models of a compiler, describes and evaluates strategies for lexical analysis, syntax analysis, and code generation; and highlights software tools for computer-aided design and the implementation of compilers. Prerequisite: junior standing. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 310 Topics in Computer Science
This course encompasses the study of a particular topic in computer science. Topics vary with instructor and student interest, with credits and specific prerequisites being decided for each particular offering. Cr. 1-3 (2-6 ECTS Cr.). Offered irregularly.

COS 315 Software Engineering
This course describes the process of software development, with the main focus being on the modern agile methodologies of Scrum Framework and Extreme Programming (XP). Additionally, this course introduces the industry-standard Unified Modeling Language (UML) for modeling software via diagrams, along with software design principles, design patterns, test-driven development, refactoring, software architectures, and other modern software development concepts. This course stresses the importance of software architectures, such as MVC, for developing real-world applications. As well as lectures, this course includes several lab sessions that illustrate the material covered in lectures. Prerequisite: COS 230. Cr. 3 (6 ECTS Cr.). Offered every fall.

COS 331 Operating Systems
This course introduces the fundamental concepts of a general operating system, examining such topics as the process and thread models for operating system design, process scheduling, memory management, I/O management, process synchronization, and resource management. The theoretical concepts will be reinforced via practical programming assignments. Preliminary UNIX experience (COS 231) is desirable. Prerequisite: COS 235. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 340 Programming in Python
This course introduces students to efficient problem solving using the Python programming language. Basic aspects of Python programming are presented, including numeric and symbolic data, operators, expressions, control structures, functions, methods, objects, and classes. OOP Python syntax, including class abstraction and encapsulation, inheritance, polymorphism, and exception handling, will be explained. A variety of data collections, including lists, multidimensional lists, tuples, sets, and dictionaries are discussed. Techniques for file manipulation, data format and encoding, and regular expressions are described. Prerequisite: COS 120 or INF 130. Students are recommended to take COS 230 first. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 440 Computer Networks
This course introduces the fundamental concepts of data communications and computer networks. It examines such topics as physical media for data communications, data communication devices, protocol stacks, such as TCP/IP and OSI, the operation of local-area networks such as Ethernet, packet routing, and application protocols such as e-mail and WWW. The theoretical concepts will be reinforced via practical programming assignments. Prerequisites: COS 230 and junior standing. Cr. 3 (6 ECTS Cr.). Offered at least once every two years

COS 460 Algorithms
This course provides a comprehensive introduction to the modern study of computer algorithms. The emphasis is on the creative aspects of the design and analysis of efficient computer algorithms. A variety of practical algorithms are developed in each of the following areas: sorting, searching, string processing; and geometric, graph, and mathematical algorithms. The development is in two stages: (1) analysis of the algorithms’ complexities using their informal descriptions and (2) implementation of the algorithms in the C++ programming language. Prerequisite: COS 221. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 470 Artificial Intelligence and AI Programming
This course introduces the essential principles of artificial intelligence. The material includes knowledge representation, methods of reasoning, machine learning, neural networks, and genetic programming. The corresponding computational algorithms for simulating intelligent behavior are given in a semiformal notation. The ideas for building practical systems are provided in the supporting programming language LISP through interactive experiments. Prerequisite: junior standing. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 480 Data Mining
This course introduces students to the field of data mining and covers numerous techniques and algorithms. Data mining is a computational process of discovering patterns in large data sets involving methods at the intersection of artificial intelligence, machine learning, statistics, and database systems. The overall goal of the data-mining process is to extract information from a data set and transform it into an understandable structure for further use. It involves database and data management aspects, data pre-processing, model and inference considerations, interestingness metrics, complexity considerations, and visualization. The actual data-mining task is the automatic or semi-automatic analysis of large quantities of data to extract previously unknown interesting patterns such as groups of data records (cluster analysis), unusual records (anomaly detection), and dependencies (association rule mining). This course balances between theory and practice. Prerequisites: COS 221, INF 280, and STA 105 or permission of the instructor. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

COS 481 Internship
Students in Computer Science participating in a formal, academically structured work experience may seek faculty sponsorship for an internship. Internship opportunities must have observable, measurable, and documented learning outcomes. An internship consists of supervised, practical experience focused on the major. To enroll, a student must secure faculty sponsorship of the internship, receive the Department’s and Dean of Faculty’s permission one term in advance of the experience, and complete a learning contract. AUBG guidelines on internship must be met. Prerequisite: junior standing. Cr. 1-3 (2-6 ECTS Cr.). Offered every semester as contracted.

COS 491 Senior Project I
This course is a capstone software-development project in computer science for individual students carried out under the direction of a COS faculty supervisor. The student will work on the conception, design, and implementation of a significant project that will result in a demonstrable software package. COS 491 and INF 491 may not be taken in the same semester. Prerequisites: COS 315 and senior standing. Cr. 3 (6 ECTS Cr.). Offered every semester.

COS 492 Senior Project II
This course is a software development project in computer science for individual students carried out under the direction of a COS faculty supervisor. The student will work on the conception, design, and implementation of a significant project that will result in a demonstrable software package. This project may be an extension of the project undertaken in COS 491 or an entirely different project. Prerequisites: COS 491 and permission of a supervisor. Cr. 3 (6 ECTS Cr.). Offered every semester.

Information Systems

INF 130 Basics in C# Programming
This course introduces students to efficient problem solving using the C# programming language. Examples illustrate the syntax and semantics of the C# language. The language constructs introduced include primitive data types, arrays, strings, reference variables, operators, expressions, control structures, classes, properties, methods, objects, and programs as a collection of classes and namespaces. This course also introduces Microsoft’s Visual Studio development environment for the development of console and Windows-based C# applications. Cr. 3 (6 ECTS Cr.). Offered every semester.

INF 150 Personal Productivity with Information Technologies
This course trains students in the effective and efficient use of information technologies in order to increase productivity. This course covers word processing, spreadsheets, presentation tools, access, and other technologies and emphasizes supporting decision making with Excel and interchanging data between Office applications and websites. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 210 Programming in Visual Basic
This course introduces the basic concepts of programming to students who have little or no programming experience using the Visual Basic programming language. The major constructs of “structured” programming will be covered, such as the sequential execution of program statements; the selective execution of program statements; and the repetitive execution of program statements. Also, this course describes the basic use of Visual Basic for constructing visual user interfaces and emphasizes extensive practical exercises that use Visual Basic facilities for computer problem-solving. This course assumes little to no prior knowledge of programming. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 240 Website Development
This course provides an introduction to the fundamental concepts and technologies involved in the design and publishing of web pages. The first part of this course describes traditional web page development using HTML and CSS, together with multimedia enhancements. The second part of this course looks at newer web developments, including interactive web pages and the XHTML standard. This course will be highly interactive and hands-on with students gaining practical experience of popular web page development software. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 270 Analysis and Design of Information Systems
This course introduces students to the discipline of information systems and provides a broad overview of conceptual and practical aspects of the analyses, design, and impact of information systems in social organizations. The scope includes topics such as information theory, general systems theory, cybernetics, maturity models, business models, and business processes, categories of I.S., decision making, and management of information resources. Prerequisite: INF 130. Cr. 3 (6 ECTS Cr.). Offered every other semester.

INF 280 Database Systems
This course introduces the fundamental concepts of database theory and its applications. Topics include foundations of databases, database design through the entity-relationship model, relational database model, normalization, SQL, the organization of physical data storage, and query optimization and transaction processing. Assignments require the use of an available DBMS. Prerequisite: INF 130. Cr. 3 (6 ECTS Cr.). Offered every other semester.

INF 310 Topics in Information Systems
This course encompasses the study of a particular topic in information systems. Topics vary with instructor and student interest, with credits and specific prerequisites being decided for each particular offering. Cr. 1-3 (2-6 ECTS Cr.). Offered irregularly.

INF 320 Mobile Computing
This course provides an introduction to the development of applications for mobile computing devices such as smartphones and tablets, specifically concentrating on native app development using the Android and iOS operating systems, two of today’s most popular platforms for mobile devices. The emphasis will be on application development. Additionally, there will be introductory lectures on Java (for Android), and Swift (for iOS) programming languages. As well as lectures, there will be several lab sessions to illustrate and reinforce the material covered in class. Students will learn to write applications for Android devices using the Android Studio IDE and to write applications for iPhones and iPads using the iOS Xcode IDE. Prerequisite: COS 120 or INF 130. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 335 Web Server Technologies
This course provides an introduction to the development of dynamic web applications via server-side programming. Specifically, two modern and popular web server technologies will be studied in detail, namely PHP with the Apache web server, and ASP.NET with the Microsoft IIS web server. Both technologies will include the development of web applications with database connections – MySQL DBMS for PHP, and Microsoft SQL Server DBMS for ASP.NET. The ASP.NET part of the course will touch on the traditional Web Forms technology but focus more on the more modern MVC and Web API technologies. The Entity Framework and LINQ language extensions for C# will be introduced. The PHP part of the course will introduce students to the syntax of PHP, including the object-oriented style, and the PDO interface for MySQL. This course stresses the importance of the use of software architectures, such as MVC, for developing real-world applications. As well as lectures, this course includes several lab sessions that illustrate the material covered in lectures. Development of real-world type of applications will be given as projects. Prerequisites: INF 130 and INF 280 (INF 240 is recommended, but not required). Cr. 3 (6 ECTS Cr.). Offered every fall.

INF 370 Information Security
This course provides an introduction to the various technical and administrative aspects of information security and assurance. This course provides the foundation for understanding the key issues associated with protecting information assets, determining the levels of protection and response to security incidents, and designing a consistent, reasonable information security system with appropriate intrusion detection and reporting features. Previous coursework that addresses security issues, such as INF 280 and/or INF 335, is highly desirable. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 375 Web-Client Technologies
This course introduces the concepts and technologies relating to the development of interactive and animated web applications, with emphasis on client-side programming. This course will focus on the use of JavaScript, which is, by far and away, the most popular language for implementing browser-based web applications. This course will show how JavaScript may be used for creating interactive and animated web pages that form the basis for modern web applications. The use of JavaScript frameworks such as JQuery will also be introduced, as will the use of AJAX for creating Rich Internet Applications (RIAs) or mashups, such as those using Google Map APIs, etc. Finally, emerging technologies, such as WebExtensions and WebAssembly, will be introduced. As well as lectures, there will be several lab sessions to illustrate and reinforce the material covered in class. Prerequisites: INF 130 and INF 240. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 440 Technologies for Web-based Information Systems
The explosive growth of the internet and the web has created a brand new “world” of web-based information systems. This world is founded on the use of modern Information and Communication Technologies (ICT). This new breed of information systems pervades every facet of life. Such systems range from everyday applications such as Google search, through e-commerce applications such as Amazon, to web service apps. As the world becomes increasingly interconnected, this course will prepare students to participate in emerging opportunities in information systems and services, wherever they may be. The broad objective of this course is to help students understand current and emerging information and communication technologies. In particular, this course looks at how modern information and communication technologies may be used to implement, support, and enrich information systems. This course focuses on opportunities that modern ICT has to offer to information systems development. Technologies studied include modern software development practices, including software architectures; the internet and its protocols; wireless and cellular networks; security of information; cloud and mobile computing; web analytics and data interchange technologies such as XML, JSON, and REST. This course stresses the importance of the use of software architectures, such as MVC, for developing real-world applications. As well as lectures, this course includes several lab sessions that illustrate the material covered in lectures. The development of a real-world type of application will be given as a project. Prerequisites: INF 335 and senior standing. Cr. 3 (6 ECTS Cr.). Offered every spring.

INF 450 Information Systems Project Management
This course covers the factors necessary for successful management of information systems development or enhancement projects. Both technical and behavioral aspects of project management are applied. Topics include: managing the system life cycle (requirements determination, design, implementation); project tracking and monitoring; metrics; system performance evaluation; cost-effectiveness analysis; management of changes; team collaboration techniques and tools. This course is based on the Project Management Body of Knowledge (PMBOK). Prerequisite: INF 270. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 480 Big Data Analytics
This course introduces a class of computer applications designed to integrate effective information retrieval from heterogeneous sources with analytical tools, data evaluation, and inference techniques. This course emphasizes the Extract-Transform-Load process in building data warehouses, data cube modeling and building algorithms, online analytical processing, and visualization to support managerial decisions. This course develops skills to assess the readiness of an organization to adopt and benefit business intelligence application. Prerequisite: INF 280. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.

INF 481 Internship
Senior students in information systems participating in a formal academically structured work experience may seek faculty sponsorship for an internship. Internship opportunities must have observable, measurable, and documented learning outcomes and consist of supervised, practical experience focused on the major. To enroll, a student must secure faculty sponsorship of the internship, receive the Department’s and Dean of Faculty’s permission one term in advance of the experience, and complete a learning contract. AUBG’s guidelines on internships must be met. Prerequisite: junior standing. Cr. 1-3. (2-6 ECTS Cr.). Offered every semester.

INF 491 Senior Project
This course allows a student to demonstrate the ability to individually solve a real-world problem in the information systems area under the supervision of department faculty. The student is expected to present the progress of the project during the semester and finally to demonstrate the working project in its entire functionality. INF 491 and COS 491 may not be taken in the same semester. Prerequisite: INF 335 and senior standing. Cr. 3 (6 ECTS Cr.). Offered every semester.

We are Social