Basic components of object-oriented programming, provided structures in C++, inheritance and polymorphism (concept, application, memory management, and implementation by the compiler), abstract classes
System testing process
Software reliability, quality certification, ISO quality standards, error logging, design by contract, error categories, automatic detection and self-checking source code
Agile development processes, software entropy, creative restructuring (re-factoring), introduction to the philosophy of "extreme" programming, test-first programming
Introduction to code molds and design patterns
Creation, documentation, and use of standards, analysis of specific design patterns, introduction to the use of C++ templates
Learning Outcomes
Students will learn the main construction methods, processes, and techniques for transitioning from the microscopic scale of programming to the macroscopic scale of systems.
Course Objectives The primary aim of the course is to present and analyze the strategies and methods of software design and development (software engineering) to ensure not only the satisfaction of the functional specifications but also to guarantee:
Minimization of errors and easy error detection (error proneness, robustness, defect detection)
Extensibility
Easy and secure modification (effective and efficient modification support)
Reusability
Portability to other platforms
Code reduction
Simplicity and self-documentation
These properties, which collectively form a measure of software quality, will be studied primarily at the level of large-scale software development. This involves multiple software developers and various implementation technologies. The greatest emphasis will be placed on the role of:
Software architecture
Software design patterns
Elements of object-oriented design and programming
Defensive programming
Advanced and sophisticated techniques applied in large software systems today, such as extreme programming, will be presented.
Student Performance Evaluation
Specific details on grading can be found on the course’ s website
The courses of the Computer Science Department are designated with the letters "CS" followed by three decimal digits. The first digit denotes the year of study during which students are expected to enroll in the course.
First Digit
Advised Year of Enrollment
1,2,3,4
First, Second, Third and Fourth year
5,6
Graduate courses
7,8,9
Specialized topics
Code
Computer Science Area
A1
Computer architecture and microelectronics
A2
Computer systems, parallel and high performance computing
A3
Computer security and distributed systems
A4
Computer networks, mobile computing, and telecommunications
B1
Algorithms and systems analysis
B2
Databases, information and knowledge management
B3
Software engineering and programming languages
B4
Artificial Intelligence and machine learning
C1
Signal processing and analysis
C2
Computer vision and robotics
C3
Computer graphics and human-computer interaction
C4
Βioinformatics, medical informatics, and computational neuroscience
The following pages contain tables (one for each course category) summarizing courses offered by the undergraduate studies program of the Computer Science Department at the University of Crete. Courses with code-names beginning with "MATH" or "PHYS" are taught by the Mathematics Department and Physics Department respectively at the University of Crete.