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|
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.
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
- R. C. Martin (2002), “Agile Software Development, Principles, Patterns, and Practices”, Pearson; 1st edition.
- C. Larman (2004), “Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development”, Prentice Hall; 3rd edition.
- Introduction to programming in Java : an interdisciplinary approach, Sedgewick, Robert, 1946-Harlow, Essex : Pearson, 2014
- Data structures and abstractions with Java, Carrano, Frank M., Harlow : Pearson Education, 2016