Students should be able to understand, analyze, and efficiently implement fundamental data structures used in computer science. Given a practical user problem, they should be able to choose an appropriate Abstract Data Type implementation based on theoretical and practical efficiency analyses, and provide an object-oriented design for the data structure for use in the user program.
Prerequisite(s)
Corequisite(s)
Special Requisite(s)
Instructor(s)
Course Assistant(s)
Schedule
Office Hour(s)
Teaching Methods and Techniques
Principle Sources
Other Sources
Course Schedules
Week
Contents
Learning Methods
1. Week
Abstract Data Type definition and use
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
2. Week
Abstract Data Type definition and use
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
3. Week
Searching and Sorting algorithms
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
4. Week
Searching and Sorting algorithms
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
5. Week
Arrays, strings, pointers, and linked structures
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
6. Week
Arrays, strings, pointers, and linked structures
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
7. Week
Recursion
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
8. Week
Recursion
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
9. Week
Introduction to algorithmic analysis, in particular asymptotic time and space complexity with big-oh, omega, and theta notations
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
10. Week
Introduction to algorithmic analysis, in particular asymptotic time and space complexity with big-oh, omega, and theta notations
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
11. Week
Object-oriented view of data structures and pros/cons of different implementations: stacks, queues, lists, trees, and graphs.
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
12. Week
Object-oriented view of data structures and pros/cons of different implementations: stacks, queues, lists, trees, and graphs.
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
13. Week
Overloading, inheritance, templates, and exception handling.
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
14. Week
Overloading, inheritance, templates, and exception handling.
Oral presentation and presentation, laboratory practice, discussion
Oral presentation and presentation, laboratory practice, discussion
15. Week
Final
Final
16. Week
Final
Final
17. Week
Final
Final
Assessments
Evaluation tools
Quantity
Weight(%)
Midterm(s)
1
30
Quizzes
1
30
Final Exam
1
40
Program Outcomes
PO-1
Effectively identifying collecting and evaluating the data required for the Computer Programming field and using theoretical knowledge for creating applications.
PO-2
Being equipped with basics of computer science.
PO-3
Possessing the knowledge of all necessary software and equipment in the profession.
PO-4
Emphasizing team work, contributing to the group and operating with team chemistry.
PO-5
Effectively expressing and sharing the completed work with project group and teammates.
PO-6
Objectively evaluating the performance of employees under his/her supervision and providing objective information to the management.
PO-7
Demonstrating problem solving skills and the education he/she obtained at the program.
PO-8
Possessing the computer programming knowledge built on skills, information and competencies provided by secondary education and supperted by higher education course materials, and demonstrating the understanding of concepts in the field of computer programming.
PO-9
Acquiring the analytical thinking skills required in the field of computer programming, and creating and running programs in accordance with this analytical perspective.
PO-10
Complying with ethical values of the field of Computer Programming and carrying social responsibility.
PO-11
Developing sufficent foreign language skills to conduct the work and follow the global developments at the best level.
PO-12
Empasizing communication and using Turkish accurately in this communication.
PO-13
Ensuring the security, environment and health awareness at personal level and among his/her employees.
PO-14
Following technological innovations in software and hardware after graduation and sustaining continuous personal development.
PO-15
Claiming responsibility at his/her workplace, organizing work flow with employees and operating according to high quality work standards.
Learning Outcomes
LO-1
Understand Abstract Data Type fundamentals: What is an ADT? Basic ADTs such as lists, stacks, queues, trees, and graphs. What ADT to use under which circumstance?
LO-2
Understand Algorithmic aspects: Basic sorting and searching algorithms, recursion, asymptotic space and complexity analysis using big-oh, omega, and theta notations.
LO-3
Understanding and proficiency in ADT implementation: Object-Oriented Programming concerns, dynamic memory handling in linked ADT implementations, and integration of ADT class into user program.