Foundations of Computing2021-08-22T12:47:32+03:00

Foundations of Computing

Instructor(s): Prof C. Tjortjis
Dr. C. Berberidis
Teaching Hours and Credit Allocation: 30 Hours, 6 Credits
Course Assessment: Exam & Coursework



This course will deal with the fundamentals of object-oriented software development. We will investigate how an object-oriented systems is designed, and how it can be decomposed to data structures and algorithms. Using this knowledge, we will develop a medium-scale software application, based on well-established principles of object-orientation. Finally, we will place emphasis on software development processes and specification.


Learning Outcomes

On completing the course students will be able to:

  • Understand and apply the basics of object-oriented analysis, design, and programming
  • Draft software specification documents
  • Develop basic algorithms & data structures
  • Understand the fundamentals of algorithm complexity



  • Basic Concepts of Programming Paradigms.
  • Introduction to Object-Oriented Programming
  • Basic data structures (Lists, Stacks, Queues, and Heaps)
  • General Responsibility Assignment Software Patterns (GRASP)
  • SOLID principles for structuring the system
  • Sorting (Selection, Insertion, Bubble, Merge, and Quick) and Searching algorithms
  • Complexity Theory
  • RUP-based Software Specification
  • IEEE-based Software Specification
  • Unified Modeling Language
  • Introduction to testing
  • Black- and white-box testing



  1. R. C. Martin (2002), “Agile Software Development, Principles, Patterns, and Practices”, Pearson; 1st edition.
  2. C. Larman (2004), “Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development”, Prentice Hall; 3rd edition.
Go to Top