Σύντομη Περιγραφή Μαθημάτων
ΕΠΛ 111 Διακριτές Δομές στην Πληροφορική και τον Υπολογισμό
Θεμελιώδεις έννοιες: σύνολα συναρτήσεις. Λογική: προτασιακή και κατηγορική λογική. Μαθηματικός Συλλογισμός: μέθοδοι απόδειξης και επαγωγή. Απαρίθμηση: βασικά στοιχεία, αρχή περιστερώνα, μεταθέσεις και συνδυασμοί. Σχέσεις: ιδιότητες και εφαρμογές, σχέσεις ισοδυναμίας, μερικές διατάξεις. Βασικές έννοιες γράφων.
ΕΠΛ 121 Ψηφιακά Συστήματα
Αρχές σχεδίασης και κατασκευής ηλεκτρονικών ψηφιακών συστημάτων και υπολογιστών: Αναπαράσταση δεδομένων με δυαδικές ακολουθίες. Αποθήκευση και επεξεργασία δεδομένων με ηλεκτρονικά ψηφιακά κυκλώματα. Εμπέδωση της θεωρίας με πρακτική εξάσκηση στη σχεδίαση κα κατασκευή κυκλωμάτων στο εργαστήριο Ψηφιακής Σχεδίασης και Μικροεπεξεργαστών.
ΕΠΛ 131 Αρχές Προγραμματισμού Ι
Παρουσίαση της διαδικασίας ανάπτυξης λογισμικού και εισαγωγή των βασικών αρχών προγραμματισμού και της σχεδίασης προγραμμάτων μέσω της γλώσσας C. Γενική παρουσίαση της γλώσσας C με έμφαση στους τύπους δεδομένων, δομές ελέγχου, δομές δεδομένων, συναρτήσεις και αρθρωτό προγραμματισμό.
ΕΠλ 132 Αρχές Προγραμματισμού II
Προχωρημένες τεχνικές προγραμματισμού και μεθοδολογίας βασισμένες στη γλώσσα C. Στατική και δυναμική διαχείριση μνήμης, διαχείριση αρχείων και δεικτών, αναδρομικότητα, δυναμικές δομές δεδομένων και εντολές του προεπεξεργα-στή της C. Εισαγωγή στον αντικειμενοστρεφή προγραμματισμό με τη χρήση της γλώσσας C++, καλύπτοντας θέματα όπως αντικείμενα, αφαιρετικότητα και απόκρυψη, μέθοδοι, τάξεις και κληρονομικότητα.
ΕΠΛ 202 Εξερευνήσεις στην Πληροφορική
Εβδομαδιαίες διαλέξεις-σεμινάρια που καλύπτουν ένα ευρύ φάσμα περιοχών της Πληροφορικής και των βασικών περιοχών της, ξεκινώντας από τη γέννηση και φθάνοντας μέχρι τις σύγχρονες εξελίξεις της. Καταλυτικές ιδέες για τη θεμελίωση και την ανάπτυξη της Πληροφορικής.
ΕΠΛ 211 Θεωρία Υπολογισμού και Πολυπλοκότητας
Τυπικά μοντέλα υπολογισμού βασισμένα σε μηχανές, γραμματικές και γλώσσες: πεπερασμένα αυτόματα έναντι κανονικών γλωσσών, αυτόματα με στοίβα έναντι γλωσσών χωρίς συμφραζόμενα, μηχανές Turing έναντι γενικών γραμματικών. Μοντέλα υπολογισμού ισοδύναμα προς τη μηχανή Turing και το αίτημα του Church. Υπολογισιμότητα και Μη Υπολογισιμότητα. Εισαγωγή στη θεωρία της Υπολογιστικής Πολυπλοκότητας με έμφαση στη θεωρία της ΝΡ-πληρότητας.
ΕΠΛ 221 Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός
Εισαγωγή στην οργάνωση και τεχνολογία υπολογιστών. Είδη εντολών, κωδικοποίηση εντολών, Αριθμητική και Λογική Μονάδα. Αρχές οργάνωσης των βασικών λειτουργικών μονάδων ενός υπολογιστή σε επίπεδο μηχανής: Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ), μνήμη, και είσοδος/έξοδος. Διασύνδεση ΚΜΕ και περιφερειακών μονάδων. Προγραμματισμός στις συμβολικές γλώσσες MIPS R2000/R3000 και Intel Pentium.
ΕΠΛ 222 Λειτουργικά Συστήματα
Εισαγωγικές έννοιες. Ιστορική αναδρομή και εξέλιξη των λειτουργικών συστημάτων. Γενική δομή, λειτουργίες και χαρακτηριστικά ενός λειτουργικού συστήματος. Συντρέχουσες διεργασίες. Διαχείριση διεργασιών. Χρονοδρομολόγηση υψηλού και χαμηλού επιπέδου. Διαχείριση πραγματικής και ιδεατής μνήμης. Διαχείριση Συσκευών Ε/Ε και δίσκου. Διαχείριση αρχείων. Προστασία, ασφάλεια και αξιοπιστία.
ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι
Πολυπλοκότητα αλγόριθμων και ανάλυση μέσης και χείριστης περίπτωσης. Τύποι δεδομένων και αφηρημένοι τύποι δεδομένων. Τύποι λίστας, στοίβας και ουράς. Μη γραμμικές δομές δεδομένων. Δένδρα. Δένδρα διερεύνησης. Ισοζυγισμένα δένδρα. Bit- Διανύσματα. Τεχνικές κατακερματισμού (hashing). Ουρές προτεραιότητας. Αλγόριθμοι ταξινόμησης και ανάλυση της αποδοτικότητάς τους. Γράφοι και αλγόριθμοι επεξεργασίας τους.
ΕΠΛ 233 Αντικειμενοστρεφής Προγραμματισμός
Βασικές αρχές του Αντικειμενοστρεφούς Προγραμματισμού και υλοποίηση με τη γλώσσα JAVA. Επίλυση προβλημάτων και προγραμματισμός με χρήση αντικειμενοστρεφούς μεθοδολογίας. Εισαγωγή στην Αντικειμενοστρέφεια. Αντικείμενα και Κλάσεις. Αφαιρετικότητα και απόκρυψη πληροφορίας. Βιβλιοθήκες. Αντικειμενοστρεφής Σχεδίαση, Κληρονομικότητα, Πολυμορφισμός, Διαπροσωπείες, Εσωτερικές Κλάσεις, Εξαιρέσεις, Είσοδος/Έξοδος.
ΕΠΛ 241 Ανάλυση και Σχεδίαση Συστημάτων
Μελέτη της θεωρίας και των μεθοδολογιών που αναπτύχθηκαν στον τομέα
των συστημάτων, με στόχο την ανάπτυξη τρόπων ανάλυσης, παρουσίασης και σχεδίασης
πραγματικών Πληροφοριακών Συστημάτων. Ιδιαίτερη έμφαση στη μελέτη της Κοινωνίας
της Πληροφορίας μέσα στα πλαίσια της ανάλυσης και σχεδίασης συστημάτων.
Μεθοδολογίες και εργαλεία που χρειάζονται για την ανάλυση των απαιτήσεων του χρήστη
και τη σχεδίαση βιώσιμων λύσεων κατά τη μελέτη προβλημάτων εφαρμογών.
Μελέτη της θεωρίας και των μεθοδολογιών που αναπτύχθηκαν στον τομέατων συστημάτων, με στόχο την ανάπτυξη τρόπων ανάλυσης, παρουσίασης και σχεδίασηςπραγματικών Πληροφοριακών Συστημάτων. Ιδιαίτερη έμφαση στη μελέτη της Κοινωνίαςτης Πληροφορίας μέσα στα πλαίσια της ανάλυσης και σχεδίασης συστημάτων.Μεθοδολογίες και εργαλεία που χρειάζονται για την ανάλυση των απαιτήσεων του χρήστηκαι τη σχεδίαση βιώσιμων λύσεων κατά τη μελέτη προβλημάτων εφαρμογών.
ΕΠΛ 324 Επικοινωνίες και Δίκτυα
Θεμελιώσεις δικτύων. Πρωτόκολλα, τοπικά δίκτυα και δίκτυα τοπικής και ευρείας περιοχής. Ανοικτά συστήματα όπως το Διαδίκτυο. Η κατανόηση και χρήση των εννοιών που σχετίζονται με το Ιντερνετ. ΤCΡ/ΙΡ σουίτα πρωτοκόλλων: Επίπεδο Εφαρμογών, Επίπεδο Μεταφοράς, Επίπεδο Δικτύων και Δρομολόγηση, Επίπεδο Σύνδεσης. Η κατανόηση των εννοιών διαχείρισης πόρων (π.χ. έλεγχος συμφόρησης, ρομολόγηση) (Resource management: congestion control, routing, queuing disciplines, etc). Η κατανόηση της αξιολόγησης της αποδοτικότητας των Δικτύων Επικοινωνίας (performance evaluation). Η κατανόηση των εννοιών ασφαλείας στα δίκτυα υπολογιστών. Η διαφώτιση για τις διάφορες ερευνητικές περιοχές και δραστηριότητες των επικείμενων Δικτύων Ενοποιημένων Υπηρεσιών (Integrated Services Network) και νέων αρχιτεκτονικών και πρωτοκόλλων στο Ιντερνέτ (π.χ. Ipv6, DiffServ, MPLS, RTP, κοκ).
ΕΠΛ 342 Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις Δεδομένων. Μέθοδοι οργάνωσης και κατάλληλης διαχείρισης μεγάλων ποσοτήτων δεδομένων για χρήση σε εφαρμογές. Μοντέλα Βάσεων Δεδομένων όπως π.χ. μοντέλο σχέσεων οντοτήτων (ΕΚ), σχεσιακό, δικτυωτό και ιεραρχικό.
ΕΠΛ 323 Θεωρία και Πρακτική Μεταγλωττιστών
Βασικές αρχές σχεδίασης μεταφραστών. Συσχέτιση μεταξύ τυπικών γλωσσών, της θεωρίας αυτομάτων και των μεταφραστών. Θέματα λεξικής, συντακτικής και σημασιολογικής ανάλυσης, παραγωγής και βελτιστοποίησης κώδικα, κ.λ.π. Πρακτική εξάσκηση με χρήση lex και yacc.
ΕΠΛ 336 Αλγόριθμοι και Πολυπλοκότητα
Θέματα σχεδίασης και ανάλυσης ταχέων αλγορίθμων και της πολυπλοκότητάς τους. Σημαντικοί αλγόριθμοι στη Θεωρία Γράφων, Άλγεβρα, Γεωμετρία, Θεωρία Αριθμών, Συνδυαστική και Θεωρία Παιγνίων. Γενικές τεχνικές σχεδίασης αλγορίθμων (π.χ. δυναμικός προγραμματισμός, απληστία, οπισθοδρόμηση, διαίρει-και- βασίλευε). Πιθανοτικοί αλγόριθμοι. Προσεγγιστικοί αλγόριθμοι. Παραμετρικοί αλγόριθμοι. Κάτω φράγματα. Ταχύς Μετασχηματισμός Fourier. Εξειδικευμένα θέματα.
ΕΠΛ 341 Τεχνητή Νοημοσύνη
Μέθοδοι επίλυσης προβλημάτων στην Τεχνητή Νοημοσύνη. Τυπικές μέθοδοι αναπαράστασης γνώσης. Ειδικές περιοχές εφαρμογών, όπως π.χ. αυτόματη σχεδίαση δράσης, ρομποτική, έμπειρα συστήματα, μηχανική μάθηση και επεξεργασία φυσικής γλώσσας. Θέματα τρέχοντος προβληματισμού στην Τεχνητή Νοημοσύνη. Σύνδεσμοι της Τεχνητής Νοημοσύνης με άλλα πεδία της Πληροφορικής, όπως π.χ. Κατανεμημένα Συστήματα, Βάσεις Δεδομένων και Πολυμέσα.
ΕΠΛ 361 Τεχνολογία Λογισμικού
Μέθοδοι, εργαλεία και διαδικασίες για την ανάπτυξη και συντήρηση μεγάλων συστημάτων λογισμικού με ικανοποιητική ποιότητα και κόστος. Μοντέλα κύκλου ζωής, μέθοδοι συλλογής απαιτήσεων, τεχνικές ανάπτυξης προδιαγραφών, μεθοδολογίες σχεδίασης και υλοποίησης λογισμικού, έλεγχος και επαλήθευση, εργαλεία CASE, χρονοπρογραμματισμός και διαχείριση έργου. Πρακτική εξάσκηση στη χρήση εργαλείου CASE για μοντελοποίηση δεδομένων και διαδικασιών.
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.