Foundations of Computing

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

 

Aims

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

 

Content

  • 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

 

Reading

  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.
  3. Introduction to programming in Java : an interdisciplinary approach, Sedgewick, Robert, 1946-Harlow, Essex : Pearson, 2014
  4. Data structures and abstractions with Java, Carrano, Frank M., Harlow : Pearson Education, 2016