The course provides an introduction to object-oriented programming (OOP) using the Java programming language. Its purpose is to teach the basic concepts and techniques that constitute the object-oriented programming paradigm. The course sections are as follows:
• Introduction to Programming Languages and Patterns: Why we need Object Oriented Programming
• Elements of Procedural Programming in Java: Types, Variables & Operators
• From Data Structures to Abstract Data Types: The concept of contract-based programming
• Classes : State (Snapshot Values) and Behavior (Methods) of Objects, Encapsulation and Overloading of Methods
• Class Inheritance: Method Inheritance and the concept of Polymorphism
• Contract Violations & Method Exceptions: Define, Create, Handle
• Abstract Data Types in Java: Abstract Classes & Interfaces
• Object Oriented Design: UML & OCL
• The Object Collection Manipulation Framework in Java
• Reflexive Programming in Java
• Data Streams and Files in Java
• Graphical User Interfaces and Java Applets
• Distributed & Concurrent Programming in Java
Learning Outcomes
Having attended and succeeded in the course, the students: Knowledge. Students will have learned the programming language paradigms and the basics and benefits of the object-oriented paradigm (abstract data types, encapsulation, inheritance, polymorphism). Understanding: Students will have understood the basics of an object-oriented programming language such as Java: object classes and interfaces, method exceptions, and handling collections of objects, and how the principles of object-oriented programming can help us break down the design and implementation of a complex system into autonomous units that can be more easily implemented and controlled. Application. Students will be able to apply their knowledge to design and implement programs based on the principles of object-oriented programming, and the Java language, from simple programs to complex ones such as building a game based on the MVC (Model-View-Controller) code architecture). They will also be able to test, document and prepare a professional program using Java tools (assertions, javadoc, packages) as well as integrated software development environments. Analysis. Students will be able from the description of a problem to determine the logic for solving the problem according to the model of object-oriented programming (so based on autonomous and collaborating objects) and then they will be able to implement it in a Java program. Synthesis: Students will be able to synthesize the knowledge and skills they will have developed for the design and implementation of complex programs and based on the Model-View-Component architecture. Evaluation: Students will be able to test and evaluate a programming solution to a problem based on the principles of object-oriented programming.
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; the second digit denotes the area of computer science to which the course belongs.
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
Second Digit
Computer Science Area
0
Introductory - General
1
Background (Mathematics, Physics)
2
Hardware Systems
3
Networks and Telecommunication
4,5
Software Systems
6
Information Systems
7
Computer Vision and Robotics
8
Algorithms and Theory of Computation
9
Special Projects
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.