Demetris Zeinalipour's Teaching

Online Resources

  1. Online Course Listing (http://www.cs.ucy.ac.cy/Education/courses.html)
  2. Helpdesk (http://helpdesk.cs.ucy.ac.cy/)
  3. Moodle eLearning Platform (http://moodle.cs.ucy.ac.cy/)
  4. Colloquiums (http://www.cs.ucy.ac.cy/colloquium/) 
  5. WebCT (http://www.ucy.ac.cy/WebCT/)
  6. Class Rosters / Grades (http://sunsrv.sunlabgp.ucy.ac.cy/icons/grading/grading.htm)
  7. WebMail (https://hermes.csrv.ucy.ac.cy/)
  8. Systems Inventory and Information (http://si2.cs.ucy.ac.cy/)
  9. Studying at UCY (http://www.ucy.ac.cy/fmweb/)
  10. Banner Web (http://www.new.ucy.ac.cy/goto/mainportal/en-US/webtools.aspx)
  11. UCY Academic Calendar (http://www.ucy.ac.cy/fmweb/AcademicCalendar.pdf)

Student Resources

Admissions
  1. Undergraduate Admissions (http://www.ucy.ac.cy/fmweb/spoudon.htm)
  2. Graduate Admissions (http://www.ucy.ac.cy/fmweb/metaptihiaka.htm)
Technical Writing
  1. Jennifer Widom: Tips for Writing Technical Papers, January 2006 (http://infolab.stanford.edu/~widom/paper-writing.html)
  2. Patrick Valduriez: Some Hints to Improve the Writing of Technical Papers. Correspondence in Engineering of Information Systems 2(3) (1994) (http://www.eecs.umich.edu/~klefevre/eecs584/Papers/valduriez_1994.pdf)
  3. Peter Denning: What is Experimental Computer Science? Communications of the ACM 23(10):543-544 (1980) (http://www.eecs.umich.edu/~klefevre/eecs584/Papers/denning_1980.pdf)
Math Resources
  1. Theoretical Computer Science Cheat Sheet (http://www.tug.org/texshowcase/cheat.pdf)
Typesetting (Formatting)
  1. Typesetting for MSc Thesis (http://www2.cs.ucy.ac.cy/~chryssis/master-specs.html)
  2. Typesetting for PhD Thesis (http://www2.cs.ucy.ac.cy/~chryssis/phd-specs.html)


Spring 2009 - (University of Cyprus)

EPL446 - Advanced Database Systems: Spring 2009, Spring 2010
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).

Outline: Introduction to Storage and Indexing, Storing Data: Disks and Files, Tree-based Indexing and Hash-based Indexing, Overview of Query Evaluation, External Sorting, Evaluating Relational Operators, Structure of a Typical Relational Query Optimizer, Overview of Transaction Management, Introduction to Concurrency Control (2PL, Serializability, Recoverability, Lock Conversions, Deadlocks), Concurrency Control with Locking, Dynamic Databases and the Phatom Problem, CC in B+trees, Multigranular locking, Concurrency Control without Locking (Optimistic, Timestamp, Multiversion), Introduction to Crash Recovery (ARIES, LOG, WAL, Checkpointing), Recovering from a System Crash (Analysis, Redo, Undo), Media Recovery, Distributed Databases (Architectures, Storage, Catalog Management and Query Processing) and XML Data Management (Models, Query Processing and XQuery)

EPL371 - Systems Programming: Spring 2009, Spring 2010
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).

Outline: Main concepts of System Programming, Introductory and Advanced UNIX commands, System utilities and stream editors (awk,sed), Advanced Shell programming with an emphasis on Bash, Low-Level I/O in C, Files and Filesystem, Processes: Environment, Control and Signals, Interprocess Communication (IPC) with an emphasis on Pipes and Named Pipes (FIFO) in C, XSI IPC (Semaphores, Shared Memory and Message Queues) in C, Network IPC (TCP Sockets) and the client/server model in C, Multithreading in C, Performance evaluation (profiling). Issues in system security and system engineering, Systems Programming in Windows (threads, processes, IPC, sockets and Powershell programming), Scripting Languages: Perl, PHP, Python, TCL/TK.

EPL342 - Databases: Fall 2009
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

Outline: Introduction: Databases and Database Users, Database System Concepts and Architecture, Data Modeling Using the Entity-Relationship (ER) Model, The Enhanced Entity-Relationship (EER) Model, The Relational Data Model and Relational Database Constraints, Relational Algebra, Relational Database Design by ERand EER-to-Relational Mapping, SQL-99: Schema Definition, Constraints, Queries, and Views, Introduction to SQL Programming Techniques, Functional Dependencies and Normalization for Relational Databases, Relational Database Design Algorithms and Further Dependencies, Practical Database Design Methodology, Introduction to Data Storage, Indexing, Query Processing, and Physical Design

Previous Courses

2008-2009 (Open University of Cyprus)

Fundamental Specialization in Theory and Software: 2007-2008; 2008-2009
  1. Programming: Introduction to the principles of programming with emphasis on structured programming, abstraction, and the design, implementation and debugging of modular programns, Introduction to C Programming, Structured Program Development in C, C Program Control Flow , C Functions, C Arrays (definition, passing to functions, linear and binary search, multidimensional arrays), C Formatted Input/Output, C Pointers, C Character and Strings, C File Processing, C Structures, C Data Structures (Self-Referencial Structures and Dynamic Memory Allocation), C Preprocessor (#include, #define, #error, #pragma, assertions), Other C Topics (Variable Length Argument Lists, Command Line Arguments, Compiling Multiple-Source-Files, exit, volatile and others), Basic Bash scripting under Cygwin, eClipse IDE, Debugging with gdb, Object Technology, Classes and Objects, C++ as a better C, Object Oriented Programming with Inheritance
  2. Data Structures and Algorithms: Study of data structures for the organization and efficient processing of data. Linear and non-linear data structures, bit-vectors. Hashing techniques. Issues of memory management. Introduction to algorithm design techniques. Sorting Algorithms. Graph Algorithms. Analysis of the average and worst-case complexity of algorithms, Introduction to general algorithmic techniques (greedy algorithms, divide-and-conquer algorithms).
  3. Software Engineering: Methods, tools and procedures for the development and maintenance of software systems. Software life cycle: requirement analysis, specification and design, software architecture, implementation, testing, deployment, validation and maintenance. Data and procedure modeling through Data Flow Diagrams, Program Structure Diagrams, Entity Relationship Diagrams, Introduction to Object Oriented Design techniques.


2005-2007 (University of Cyprus)

EPL428 - Systems Programming: Spring 2007
Main concepts of System Programming, Introductory and Advanced UNIX commands, System utilities and stream editors (awk,sed), Advanced Shell programming with an emphasis on Bash, Low-Level I/O in C, Files and Filesystem, Processes: Environment, Control and Signals, Interprocess Communication (IPC) with an emphasis on Pipes and Named Pipes (FIFO) in C, XSI IPC (Semaphores, Shared Memory and Message Queues) in C, Network IPC (TCP Sockets) and the client/server model in C, Multithreading in C, Performance evaluation (profiling). Issues in system security and system engineering, Systems Programming in Windows (threads, processes, IPC, sockets and Powershell programming), Scripting Languages: Perl, PHP, Python, TCL/TK.

EPL231 - Data Structures and Algorithms: Fall 2005
Study of data structures for the organisation and efficient processing of data. Linear and non-linear data structures, bit-vectors. Hashing techniques. Issues of memory management. Introduction to algorithm design techniques. Sorting Algorithms. Graph Algorithms. Analysis of the average and worst-case complexity of algorithms

EPL111 - Discrete Structures in Computer Science and Computation: Spring 2006, Spring 2007
Foundations: Sets and Functions. Mathematical Reasoning: Methods of Proof, Induction. Counting: Basics of counting, Pigeonhole Principle, Permutations and Combinations. Program Specification and Correctness. Relations: Properties and Applications, Equivalence Relations, Partial Orders. Logic: Propositional logic, basics of Predicate Logic. Graphs: Basic concepts.

EPL035 - Data Structures and Algorithms for Engineers (EE and CE): Fall 2006
Study of data structures for the organisation and efficient processing of data. Linear and non-linear data structures, bit-vectors. Hashing techniques. Issues of memory management. Introduction to algorithm design techniques. Sorting Algorithms. Graph Algorithms. Analysis of the average and worst-case complexity of algorithms

EPL032 - Introduction to Programming and Problem Solving: Spring 2006
Introduction to the principles of programming with emphasis on structured programming, abstraction, and the design, implementation and debugging of modular programns. Mastering the material through laboratory exercises in the C programming language.

EPL003 - Computer Science and Information Systems: Fall 2005, Fall 2006
Fundamentals of Computer Science, the main historical events which have contributed in its development, and the possibilities it offers. Basic constituent elements of Computer Science and methods for making it valuable to other sciences and applications. Practical experience with application packages, basic of programming and programming in a fourth generation language such as Logo, Introduction to UNIX and Computer Security.

EPL001 - Introduction to Computer Science: Fall 2005, Spring 2007
Fundamentals of Computer Science, the main historical events which have contributed in its development, and the possibilities it offers. Basic constituent elements of Computer Science and methods for making it valuable to other sciences and applications. Practical experience with application packages, basic of programming and programming in a fourth generation language such as Logo.