Undergraduate Programme Courses Description
CS 111 Discrete Structures in Computer Science and Computation
Foundations: sets and functions. Logic: Propositional Logic, basics of Predicate Logic. Mathematical reasoning: methods of proof, induction. Counting: basics of counting, pigeonhole principle, permutations and combinations. Relations: properties and applications, equivalence relations, partial orders. Graphs: basic concepts.
CS 121 Digital Systems
Principles of design and construction of digital electronic systems and computers. Representation of data with binary sequences. Data storage and processing by electronic digital circuits. Consolidation of theoretical knowledge through practical exercises in the design and construction of digital circuits in the laboratory for Digital Systems Design and Microprocessors.
CS 131 Programming Principles I
Presentation of the software development process and introduction to the basic principles of programming and program design using the C language. Global overview of the C language with emphasis on data types, control structures, data structures, functions and modular programming.
CS 132 Programming Principles II
Advanced programming techniques and methodologies based on the C language. Topics include static and dynamic memory management, file management, pointers, recursion, dynamic data structures and C preprocessor. Introduction to the object-oriented programming model through the C++ language with emphasis on objects, abstraction and encapsulation, methods, classes and class inheritance.
CS 202 Explorations into Computer Science
Weekly lecturers/seminars that cover a broad spectrum of Computer Science and its basic areas, starting from its birth and reaching its modern evolutions. Revolutionary ideas for the foundation and development of Computer Science.
CS 211 Theory of Computation and Complexity
Formal methods of computation based on machines, grammars and languages: finite automata vs. regular languages; pushdown automata vs. contextfree grammars; Turing machines vs. unrestricted grammars. Models of computation equivalent to Turing machines and Church's Thesis. Computability and Uncomputability. Introduction to Theory of Computational Complexity with emphasis on the Theory of NP-completeness.
CS 221 Computer Organization and Assembly Language Programming
Introduction to computer organization and architecture. Types of instructions, coding of instructions, Arithmetic and Logic Unit. Basic principles of the organization of the main functional units of a computer system at machine level: Central Processing Unit (CPU), memory, and Input/Output. Interfacing CPU and peripheral units. Programming in assembly language for MIPS R2000/R3000 and Intel Pentium.
CS 222 Operating Systems
Introduction, history and evolution of operating systems. General structure, operations and characteristics of an operating system. Concurrency. Process management. Scheduling and dispatch. Real and virtual memory management. I/O management and disk scheduling. File management. Protection, security and reliability.
CS 231 Data Structures and Algorithms
Study of data structures for the organization and efficient processing of data. Linear and non-linear data structures. Hashing techniques. Issues of memory management. Sorting Algorithms. Graph Algorithms. Introduction to algorithm design techniques. Analysis of the average and worst-case complexity of algorithms.
CS 233 Object-Oriented Programming
Development of object-oriented way of thinking and capabilities to apply it to solving complex problems. Principles of object-oriented programming and implementation using the language JAVA. Problem-solving and programming using object-oriented methodologies. Introduction to Object-Orientation. Objects and classes. Abstraction and Information Hiding. Libraries. bject-oriented design. Inhertance Polymorphism. Interfaces. Inner classes in Java. Exceptions. Input / Output.
CS 241 Systems Analysis and Design
Study of the theory and the methodologies which have been developed over the years in the area of systems, with the objective to introduce techniques and methodologies for systems analysis and design of Information Systems. Special attention to the study of "Information Society" and its effect in system development and maintenance.
CS 323 Theory and Practice of Compilers
Fundamental principles of compiler design. Relation of translators to formal languages and automata theory. Lexical, syntactic and semantic analysis, code generation and optimization, etc. Practical exercises using lex and yacc.
CS 324 Communications and Networks
Data and computer communication fundamentals. Protocols and local and wide area networks. Open systems such as the Internet. TCP/IP protocol suite: Application Layer and protocols; Transport Layer; Network Layer and routing; Link Layer. Introduction to network and protocol erformance evaluation.
CS 342 Databases
The main objective of this undergraduate course is to provide an in-depth understanding of concepts related to the design and utilization of a database management system. Students will get a deeper understanding byimplementing these concepts in a commercial database management system. The course is organized in four parts: i) Introduction and Conceptual Modeling using the ER Model, ii) Relational Model and Relational Algebra, iii) Structured Query Language III, and iv) Database Design Theory and Methodology.
CS 361 Software Engineering
Methods, tools, and procedures for the development and maintenance of large-scale software systems within specified quality and cost constraints. Life-cycle models, specification techniques, software development methodologies, verification and validation, CASE, and other tools. Project planning and management. Practical experience with CASE tools for modeling data and procedures.
CS 371 Systems Programming
In this course, students will learn to develop complex system-level software in the C programming language while gaining an intimate understanding of the UNIX operating system (and all OS that belong to this family, such as Linux, the BSDs, and even Mac OS X) and its programming environment. Topics covered will include the user/kernel interface, fundamental concepts of UNIX, user authentication, basic and advanced I/O, fileystems, signals, process relationships, and interprocess communication. Fundamental concepts of software development and maintenance on UNIX systems will also be covered. The students are expected to have a good working knowledge of the C programming language (EPL132) and a good working knowledge of fundamental Operating System Concepts (EPL221).
CS 411 Semantics of Programming Languages
Basic types of semantics of programming languages: procedural, declarative and axiomatic. Relations among these basic types. Formal concepts of semantics and their applications to common programming languages. Introduction to Field Theory and Information Systems within the framework of semantics of programming languages.
CS 420 High-Speed Multimedia and Multiservice Networks
Introduction to computer networks and the Internet. The IPv6 Internet protocol. Multicast routing. The TCP protocol. Congestion control. Performance analysis. Multimedia networking applications. Real-time services and protocols. Quality of Service (QoS). QoS routing. MPLS Traffic engineering. Mobile and wireless networks. Issues in security for computer networks.
CS 421 Computer Architecture
Introduction to the state-of-the-art uniprocessor, high performance computer architecture. Emphasis on quantitative analysis and cost/performance trade-offs in the design of the basic units of a processor: instruction set, pipelining, memory system and input/output systems. Qualitative analysis of real machines and their performance data.
CS 422 Multimedia, Hypermedia and Cyberspace
Introduction to multimedia, hypermedia and the development of applications for telecooperation systems via computers. User interfaces, methods of communication and cooperation among the users, design of shared workspace, combining information. Emphasis on applications built on top of Internet and the World Wide Web.
CS 423 Microprocessor Systems
Microprocessor organization and Assembly Language Programming. Design of microprocessor based systems. Memory. Input/Output. Interrupts. Bus interfacing.
CS 424 Digital Signal Processing
Discrete signals and systems, sampling of signals, frequency analysis of discrete systems and signals, z-transform, Fourier-Transform, Discrete Fourier Transform, and Fast Fourier Transform, digital filters, application examples.
CS 425 Internet Technologies
Topics of Internet and World-Wide Web technologies, with an emphasis on WWW applications and Internet programming. The foundations of WWW applications including hypertext, navigation in hyperspace, hypertext usability, information overload, markup languages and methodologies of WWW application design. System issues related to Internet programming and performance: protocols, servers, WWW interactivity, Internet-based distributed systems.
CS 426 Computer Graphics
Scene construction, scene hierarchies, camera specification, projections of primitives, clipping, visible surface determination, polygon rasterisation (z-buffer), texture mapping, local and global llumination, shadows, ray tracing, radiosity, realtime acceleration techniques.
CS 427 Parallel Processing: Architectures and Languages
The entire spectrum of parallel machines as appearing in Flynn's classification: SISD, SIMD, MISD, MIMD. The main approaches for design and operation of multiprocessor systems. Conventional and non-conventional machines (Data-flow and reduction). Parallel programming approaches: (1) Automatic-parallelizing compilers, (2) Extending serial languages with parallelizing constructs, (3) parallel languages for Functional Programming. Special emphasis on parallel architectures and parallel programming.
CS 428 System Programming
Basic concepts of system programming. Shell programming (ksh/csh/bsh). Use of utilities (awk, sed, perl) and graphical tools (TCL/TK). Files and file-systems. Processes, threads and process synchronization. Network programming (socket programming) and the client-server model. Graphics programming (Xwindows).
CS 431 Synthesis of Parallel Algorithms
Introduction to parallel computing. Complexity and efficiency measurements of parallel algorithms. Parallel computing models. Basic techniques for the design of parallel algorithms. Efficient parallel algorithms in Combinatorics, Graph Theory, and Matrix Theory. Complexity analysis of algorithms on the Parallel Random Access Machine (PRAM). Comparison between various models of computation. Advanced topics (fault-tolerance, atomicity, synchronization, computational limitations of PRAM).
CS 432 Distributed Algorithms
Formal models of distributed computing: shared memory versus message passing, determinism versus randomization, concepts of synchronism, asynchrony and real-time. Design and analysis of distributed algorithms and impossibility/improbability results for fundamental problems such as mutual exclusion, consensus, synchronization, leader election, construction of minimum spanning trees. Fault tolerance: Byzantine generals, wait-free algorithms, fault degrees. Formal methods for proving correctness of distributed algorithms. Advanced topics. Special emphasis throughout the course on lower and upper bounds on time and memory.
CS 433 Constraint Programming and Satisfaction
Definition of constraint satisfaction problems. Constraint representation and complexity. Various forms of consistency. Backtracking and look-ahead techniques. Intelligent backtracking and condition for solution finding without backtracking. Heuristic and local methods for solution searching. Available commercial products. Study of problems from different application domains, their modeling and the complexity of various algorithms solving them.
CS 434 Logic Programming and Artificial Intelligence
Basic principles of Logic Programming and implementation using the language Prolog. Relation of Logic Programming to modern considerations regarding Artificial Intelligence. Solving application problems drawn from the fields of Artificial Intelligence and Databases, making use of Logic Programming and Constraint Logic Programming.
CS 435 Human Computer Interaction
Analysis of the human as a computer system user (knowledge models, graphical animation, cognitive models). Interactive technologies (input-output devices, window environments, systems for collaborative support, virtual reality). Methodologies for the design of interactive systems.
CS 436 Algorithms and Complexity
Topics in the design and analysis of efficient algorithms and their complexity. General techniques of algorithmic design (e.g. divide-and-conquer, backtracking, dynamic programming). Significant algorithms in Graph Theory, Algebra, Geometry, Number Theory, Combinatorics and Game Theory. Randomized algorithms. Approximation algorithms. Online algorithms. Lower bounds. Fast Fourier Transform. Advanced topics (such as sorting networks, cryptographic algorithms).
CS 441 Advanced Topics in Software Engineering
Introduction. History and revolution of software systems and software engineering. Fundamental issues on components. Components vs. objects. Component interface, Patterns and software architectures. Basic principles of component programming. Coordination programming. Software composition. Middleware platforms and standards.
CS 442 Informational Learning Systems
Introduction to Pattern Recognition, Perceptron, Multilayered Neural Networks, Recurrent Neural Networks, Reinforcement Learning, Hopfield Networks & Boltzmann Machines, Support Vector Machines, Radial Basis Functions, Self Organizing Maps, Genetic Algorithms. Studies of the basic methods of Machine Learning, including classical statistical methods such as Bayes rule, discriminant and cluster analysis; artificial neural network methods such as supervised and unsupervised networks; other knowledge representation techniques like genetic algorithms.
CS 443 Artificial Intelligence and Expert Systems
Artificial Intelligence from the perspective of problem solving through search and the use of heuristics, knowledge representation and reasoning C basic concepts, predicate logic, associative networks, frams, production rules. Information Systems that represent expert knowledge as a main application area of techniques of Artificial Intelligence. "Embodiment" of specialized knowledge in Expert Systems with high level of competence. Applications of the Expert Systems Technology in various disciplines, such as Engineering, Medicine, Finance, etc. Appreciation of the nature of human expertise and the technology of Expert Systems.
CS 444 Computational Intelligent Systems
Evolutionary Computing. Genetic Algorithms. Artificial Neural Networks. Fuzzy Systems. Artificial Life. Development and Implementation of Computational Intelligence Systems.
CS 445 Digital Image Processing
Binary Image Representation. Image Histogram and Point Operations. Discrete Fourier Transform. Linear Image Filtering. Non Linear Image Filtering Pipeling. Image Compression. Image Analysis I. Image Analysis II. Digital Video Processing.
CS 446 Advanced Database Systems
The main objective of this undergraduate course is to provide an in-depth understanding of Database Management Systems. In particular, students will be exposed to the internal structures and algorithms of a relational database system. Students will get a deeper understanding by implementing components of the Minibase database system in the C++ language. Minibase is a database management system intended for educational use that includes a parser, optimizer, buffer pool manager, storage mechanisms (heap files, secondary indexes based on B+ Trees), and a disk space management system. The course is organized in four parts: i) Storage and Indexing, ii) Query Optimization, iii) Transaction Management and iv) Advanced Topics (Distributed Databases and XML Data Management).
CS 447 Artificial Intelligence
Problem solving techniques in Artificial Intelligence. Formal methods of knowledge representation. Specific application areas such as multi-agent systems, robotics, expert systems, machine learning and natural language processing. Problems of current focus and investigation in Artificial Intelligence. Links between Artificial Intelligence and other fields of Computer Science such as Distributed Systems, Databases and Multimedia.
CS 448 Intelligent Agents and Multi-Agent Systems
Introduction to Distributed Artificial Intelligence (DAI). Intelligent Agents (basic concepts, applications). Software Agents (main types, applications). Agent Societies. Distributed Programming of Actions. Formalisms in DAI: representation and reasoning based on Logic. Industrial and practical applications of DAI.
CS 449 E-Business / E-Commerce
In-depth study of the technologies used for e-Business/e-Commerce. Fundamentals of the Internet and WWW technologies protocols such as TCP/IP, HTTP, HTML. Study of the different operational models and strategies of e-Commerce and practical experience with systems such as Javascript, Java, DHTML, ASP, PHP, Websphere, and NET. Study of e-Government that covers electronic transactions between Public authorities and Citizen/business. System security such as access security and cryptographic security, electronic signature and electronic payments.
CS 450 Computational Biology
Application of analytic methods from Statistics, Mathematics and Computer Science to biological data so as to extract useful knowledge. Introduction to Bioinformatics. Pairwise sequence alignment and multiple sequence alignment algorithms. Statistical significance of alignment results. Phylogenetic prediction. Database searching for similar sequences, efficiency of relevant algorithms. Protein classification and structure prediction. Statistical analysis of DNA microarray experimental data.