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 estimation.
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 programming language.
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 conduct.
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.).