Professor George A. Papadopoulos:
CS222 Operating Systems
Objectives: Introduction to the basic principles of design and operation of modern operating
systems. Familiarization with the various operation levels and mechanisms, case studies
involving typical operating systems like UNIX and Windows as well as the dual role of the
operating system, as manager of the various parts of the computer hardware and supplier of
offered services to the user.
Content: 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.
CS362 Software Engineering II
Objectives: Familiarization and understanding of advanced principles, concepts and
practices of software engineering. A number of contemporary areas of software engineering
will be covered. This course further serves as a "roadmap" for advanced electives and
graduate courses in software engineering.
Content: Agile software development. Model driven engineering. Legacy systems. Sociotechnical systems. Software reuse. Component Based systems. Distributed software engineering. Service oriented architectures. Embedded software. Aspect oriented software engineering.
CS603 Advanced Software Engineering
Objectives: Familiarization with advanced topics in Software Engineering with emphasis
on two main axes: (1) Principles of designing and implementing component-based systems
on the basis of modern techniques of development such as component-based software,
software architectures and middleware-platforms. (2) Special topics on the development of
software, such as requirements engineering, real-time software systems, and software cost
Content: Topics in Component-Based Software: Principles of development of componentbased systems based on component-based software. Modeling techniques. Software architectures. Coordination programming. Middleware platforms for the development of systems. Software composition. Elements of the distributed programming. Configuration management. Advanced topics in Software Engineering: Requirements Engineering Processes. Real-time Software Design. Design with Reuse. User Interface Design. Software Change.
Georgia M. Kapitsaki:
CS233 Object-Oriented Programming
Objectives: Familiarization with concepts of Object-Oriented Programming and the use of
Object-Oriented Methodology for the solution of computational problems. Familiarization
with advanced programming techniques and application of this with the use of the Java
Content: 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 Java programming language. Problem-solving and programming using objectoriented methodologies. Introduction to Object-Orientation. Objects and classes. Abstraction and Information Hiding. Libraries. Object-oriented design. Inheritance Polymorphism. Interfaces. Inner classes in Java. Exceptions. Input/Output. Concurrency in Java. Collections. Advanced topics (e.g. Annotaions, Networking, Serialization).
CS361 Software Engineering I
Objectives: Familiarization with and assimilation of the approaches, methodologies, models
and tools used to develop quality software systems. Understanding of software
architectures, software modeling and testing. Understanding of software testing process and
of software architecture design patterns. Applications of software creation methodologies
on the construction of a real software system. Understanding of software testing
procedures. Use and application of architecture design patterns.
Content: Methods, tools, and procedures for the development and maintenance of largescale software systems. Existing life-cycle models (e.g. waterfall model). Introduction to Agile development. Requirements analysis and specification techniques. Software development methodologies. Unified Modelling Language (UML) and supported static and dynamic diagrams. Code transformation. Practical experience with CASE tools for modeling data and procedures (ArgoUML, StarUML). Prototyping for Web applications (HTML, CSS). Archetectural Design patterns (Model View Controller etc.). Software verification and validation. Unit testing and frameworks (JUnit etc.). CASE tools. Project planning and management.
CS363 Professional Practice in Software Engineering
Objectives: Embedding and practical application of the theoretical approaches and
methodologies of Software Engineering for the development of a product-software system
that serves the needs of an organization belonging to the local market. Practical use of
processes and tools, such as central and distributed version control systems (SVN and
GitHub), testing at different levels, group communication, professionalism, and ethical
Content: Undertake and carrying out to completion a significant software project by small student groups (of about 2-6 students each). All phases in the development of software. Some of the specific projects come from the industrial sector. Version control systems (SVN and GitHub). Testing. Software system analysis through software metrics. Speciaized issues depending on the project nature (e.g., deployment o web servers, GUI tools and frameworks etc.).