COS 120 Software Development Using C++
The purpose of the course is to introduce 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, applying a software development method, and the concept of a software life cycle. No prerequisites. Cr. 3. (6 ECTS Cr.) Offered every semester.
COS 150 Discrete Structures
Presents fundamental discrete mathematics concepts which 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 in the Spring.
COS 220 Concepts of Programming Languages
The underlying principles and fundamental paradigms of modern programming languages are covered. A comprehensive description of typical programming constructs including data declarations, operators, expressions, statements and program units will be given. Lexical, syntactic and semantic aspects of programming languages are studied using precise formal definitions. The formalisms provide a sound background for the critical evaluation of various programming paradigms such as the procedural, object-oriented, logic and functional styles. Prerequisite: COS 120 or placement test exemption Cr. 3 (6 ECTS Cr.) Offered at least once every two years.
COS 221 Fundamental Data Structures
The fundamental data structures and algorithms to manipulate collections of objects are introduced. 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. The course is based on the object-oriented paradigm, and, specifically, the C++ programming language. Prerequisite: COS 120 and COS 150. Cr. 3 (6 ECTS Cr.) Offered in the Fall.
COS 231 Introduction to UNIX
An introduction to the UNIX operating system from the user's point of view. 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. Important security issues and proper configuration of the access permissions in a multi-user and multitasking operating system environment are considered. The course programming project trains students to work effectively in teams, share responsibilities, duties, analyze ideas objectively, and build a consensus. Cr. 3 (6 ECTS Cr.) Offered in the Fall.
COS 235 Computer Architecture
Examines the design and organization of modern computer systems, concentrating on the structure and operation of the processor, memory and I/O subsystems, as well as the critical role of performance in driving computer design. Some of the issues involved in multiple processor and vector processing organizations are covered. Implementation of the basic storage elements and circuits in digital logic, specifically with combinational and sequential circuits, is also considered. Cr. 3 (6 ECTS Cr.) Offered in the Spring.
COS 240 Object-Oriented Programming
This course examines the main features supported by object-oriented programming languages such as classes, instances, inheritance, polymorphism, etc. 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 for writing small programs that implement object oriented features in the above languages. Prerequisite: COS 221. Cr. 3 (6 ECTS Cr.) Offered in the Spring.
COS 260 Assembly Language Programming
The course focuses on writing and debugging programs at the machine level. The main goal is to broaden the student's interest and knowledge in topics related to assembly language programming based on the Intel IA-32 processor architecture. The course demonstrates how to use assembly language to create both system-level software and application programs. Cr. 3. (6 ECTS Cr.) Offered at least once every two years.
COS 301 Compiler Theory
The course examines the theory and practice of compiler construction. A variety of formal grammars, formal languages and recognizers are described - regular expressions, linear grammars, context-free grammars, finite state automata and stack automata. Distinct models of a compiler are discussed and strategies for lexical analysis, syntax analysis and code generation are described and evaluated. Software tools for the computer aided design and the implementation of compilers are highlighted. Prerequisite: At least junior standing. Cr. 3. (6 ECTS Cr.) Offered at least once every two years.
COS 315 Software Engineering
Presents a broad view of software engineering with different software engineering techniques that can be applied to practical projects. Provides the knowledge and tools necessary for the specification, design, implementation and maintenance of reliable, non-trivial software. Topics include process models, human factors, software design and specification methodologies, programming techniques and tools, and validation principles. The emphasis will be on using the object-oriented approach to the software development life-cycle using UML. Course INF 350 "Managing Software Development Projects" is highly desirable. Prerequisite: COS 240. Cr. 3. (6 ECTS Cr.) Offered in the 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 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. Preliminary UNIX experience (COS 231) is desirable. Prerequisite: At least junior standing. Cr. 3. (6 ECTS Cr.) Offered at least once every two years.
COS 460 Algorithms
The 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, geometric, graph, and mathematical algorithms. The development is in two stages: analysis of the algorithms' complexities using their informal descriptions; and 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
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 semi formal notation. The ideas for building practical systems are provided in the supporting programming language LISP through interactive experiments. Prerequisite: At least junior standing. Cr.3. (6 ECTS Cr.) Offered at least once every two years.
COS 481 Internship
Senior 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, 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's permission one term in advance of the experience, and complete a learning contract. AUBG University guidelines on internship must be met. At least Junior standing. Cr. 1-3. (2-6 ECTS Cr.) Offered every semester as contracted.
COS 491 Senior Project I
This course is an undergraduate research project in computer science under the direction of an approved supervisor. An individual will work on the conception, design and implementation of a significant computer science project that will result in the development of a demonstrable software package. Course INF 280 "Data Base Systems" is highly desirable. Prerequisite: COS 315 and permission of a supervisor. Cr. 3. (6 ECTS Cr.) Offered every semester as contracted.
COS 492 Senior Project II
This course is an undergraduate research project in computer science under the direction of an approved supervisor. An individual will work on the conception, design and implementation of a significant computer science project that will result in the development of a demonstrable software package. This may be an extension of the project undertaken in COS 491 or an entirely different project. Prerequisite: COS 491 and permission of a supervisor. Cr. 3. (6 ECTS Cr.) Offered every semester as contracted.
INF 110 Visual Basic Programming
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. In addition, the basic use of Visual Basic for constructing visual user interfaces, etc. will be described. The use of extensive practical exercises will emphasize the use of Visual Basic facilities for computer problem solving. The course assumes no or little prior knowledge of programming. Cr. 3 (6 ECTS Cr.). Offered in the Fall.
INF 120 Basics in Java Programming
This course is intended as a first year initial Java course. It provides the fundamental principles of procedural programming (both structured and object oriented approaches), as well as emphasizing the basic skills of efficient problem solving and software development using as a template the Input-Process-Output model of a computing process and conventional concept for software development life cycle. The major topics covered include: algorithms, various technologies to build Java programs, problem-solving, object-oriented programming, and GUI programming. Examples illustrate syntax and semantics of the language constructs introduced - primitive data types, reference variables, operators, expressions, statement control level structures, methods, classes, objects, and programs (applications and applets) as a collection of classes. INF120 serves as an extradata bases, Web and Internet technologies, where more advanced programming concepts are introduced. Recommended Prerequisite: INF110. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.
INF 140 Basics in C# Programming
This is a first year programming course that introduces students to efficient problem-solving using the C# programming language. Fundamental principles of procedural programming like structured (thinking in functions) and object-oriented (thinking in classes and objects) approaches, input data validation, exception handling techniques, and event driven programming techniques are presented. Microsoft Visual Studio development environment is introduced to develop various sets of console, window dialog boxed and graphic user interface C# applications. Examples will illustrate the syntax and semantics of the C# primitive data types, reference variables, operators, expressions, statement level control structures, methods, classes, objects and programs as a collection of classes. INF 140 serves as an extra prelude to a set of COS and INF courses in the area of data structures, algorithms, data bases, Web and Internet technologies, where more advanced programming concepts are introduced. Recommended Prerequisite: INF 110. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.
INF 150 Personal Productivity with Information Technologies
The course trains students on effective and efficient use of Information Technologies to increase the productivity. The course covers word processing, spreadsheets, presentation tools, Access, etc. Emphasis is on supporting decision making with Excel and interchanging data between Office applications and Web sites. Cr. 3 (6 ECST Cr.). Offered in the Spring.
INF 160 Information Systems Development Environments
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 the course will describe traditional Web page development using HTML and CSS, together with multimedia enhancements. The second part of the course will look at newer Web developments, including interactive Web pages and the XHTML standard. The course will be highly interactive and hands-on with students gaining practical experience. Cr. 3 (6 ECST Cr.). Offered at least once every two years.
INF 250 Emerging Technologies
The course introduces to students a set of emerging programming and computing technologies. The course covers technologies to develop various types of applications, including different models of a computing process, processing standard, and developing user-defined, class libraries. Computing technologies present software packages supporting mobile devices (e.g. personal digital assistant), emerging alternative input/output devices, and data exchange between computing devices. Cr. 3 (6 ECTS Cr.). Prerequisite INF 110. Offered at least once every two years.
INF 270 Principles of Information Systems
The course introduces students the discipline of information systems, providing a broad overview on conceptual and practical aspects of design and use of information systems in social organizations. The scope includes topics such as Overview of Information Theory, General Systems Theory, Cybernetics, Information Systems Analysis and Design, Categories of IS in social organizations, Decision Making under Risk and Uncertainty and Utilization and Management of Information Resources. Cr. 3 (6 ECTS Cr.). Prerequisite INF 150. Offered in the Fall.
INF 275 Web Client Technologies
INF 280 Database Systems
The course introduces the fundamental concepts of the database theory and its applications. Topics include: foundations of databases, database design through entity-relationship model, relational database model, normalization, SQL, organization of physical data storage, query optimization and transaction processing. Assignments require use of an available DBMS. Cr. 3 (6 ECTS Cr.). Offered in the Spring.
INF 335 Web Server Technologies
The course will explore a set of key approaches and technologies currently used to design and develop Web server-based applications. The course provides students with an understanding of the technologies that support Web server-based interactions and their impact on the World Wide Web. Focus is on the investigation of the most current technologies, such as PHP and ASP.NET. The future direction of Web applications will also be explored. Recommended prior to INF 335: INF 240. Prerequisite: INF 280. Cr. 3 (6 ECTS Cr.). Offered in the Fall.
INF 350 Managing Information Systems Development Projects
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, software tools. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.
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 440 Technologies for e-Business
The course focuses on opportunities the network information technologies offered to enrich business strategy and to implement a rich variety of business models. Emphasizing the technological aspects of e-business, the course provides also introduction to e-business strategies; e-business modeling; development and architecture of e-business solutions and their components; information privacy, reliability and security. Prerequisite: INF 335. Cr. 3 (6 ECTS Cr.). Offered in the Spring.
INF 480 Data Warehousing and Data Mining
The course introduces to a class of computer applications designed to integrate effective information retrieval from heterogeneous sources with analytical tools, data evaluation, and inference techniques. Data-mining uses a wide range of algorithms and techniques, drawn from areas as statistics, databases, artificial intelligence, machine learning, neural networks, pattern recognition, knowledge based systems, knowledge acquisition, information retrieval, data visualization, etc. Data Warehouses are a further evolution of relational databases oriented to support business decision-making. The course gives a broad overview of the area of data warehouses and data mining, its basic concepts and techniques from database perspective. Prerequisite: INF 280. Cr. 3 (6 ECTS Cr.). Offered at least once every two years.
INF 491 Senior Project
This course is supposed to demonstrate the ability of the student to solve real world problems in the Information Systems area individually under supervision of department faculty. The student is expected to present the progress of his project during the semester and finally to demonstrate the working project in its entire functionality. Prerequisite: Senior standing. Cr. 3 (6 ECTS Cr.). Offered every semester.