This course is intended to give advanced programming techniques, as well as further experience in programming. Topics covered will be: advanced object-oriented programming techniques and programming with classes (function overloading, templated classes, inheritance), pointers, linked lists, stacks, queues, debugging and profiling, reusable software (using/creating libraries), visual/GUI programming, exception handling, multi- threaded programming and synchronization.
Advanced Programming (CS 204)
| Programs\Type | Required | Core Elective | Area Elective |
| Computer Science and Engineering | * | ||
| Computer Science and Engineering | * | ||
| Electronics Engineering | * | ||
| Electronics Engineering | * | ||
| Industrial Engineering | * | ||
| Industrial Engineering (Previous Name: Manufacturing Systems Engineering) | * | ||
| Materials Science and Nano Engineering | * | ||
| Materials Science and Nano Engineering (Previous Name: Materials Science and Engineering) | * | ||
| Mechatronics Engineering | * | ||
| Mechatronics Engineering | * | ||
| Microelectronics | * | ||
| Molecular Biology, Genetics and Bioengineering | * | ||
| Molecular Biology, Genetics and Bioengineering (Pre. Name: Biological Sciences and Bioengineering) | * | ||
| Telecommunications | * |
CONTENT
OBJECTIVE
The objective of this course is to give advanced object oriented design and programming techniques and basic data structures in order to provide further experience and practical knowledge in computer programming.
LEARNING OUTCOMES
- Reinforce the basics of computer systems and programming: describe how the data is stored in the memory, the internal representation of numeric and non-numeric data, and how they can be manipulated at the bit level; demonstrate the use of preprocessor, compiler and linker in the context of source code processing and explain their roles.
- Understand, implement and use auto, static, extern and dynamically managed data types and structures: describe how various data types and structures (e.g., pointers, user-defined plain-old and other data types and classes) are allocated and used; implement basic data structures, such as arrays, various types of linked lists, stacks and queues, using dynamic memory allocation techniques in C++.
- Understand, implement, and use object-oriented programming: design/develop rich classes with constructor(s), destructor, deep/shallow copy constructor, move constructor, assignment operator and operator overloading sharing objects through reference parameters/pointers; use/develop classes with inheritance, including the concepts of overriding and polymorphism; use/develop templated functions and classes as well as function overloading when necessary.
- Understand, implement, and use advanced concepts: demonstrate the use of exception handling, concurrent applications, and graphical user interfaces.
PROGRAMME OUTCOMES
1. Understand the world, their country, their society, as well as themselves and have awareness of ethical problems, social rights, values and responsibility to the self and to others. 1
2. Understand different disciplines from natural and social sciences to mathematics and art, and develop interdisciplinary approaches in thinking and practice. 1
3. Think critically, follow innovations and developments in science and technology, demonstrate personal and organizational entrepreneurship and engage in life-long learning in various subjects; have the ability to continue to educate him/herself. 1
4. Communicate effectively in Turkish and English by oral, written, graphical and technological means. 3
5. Take individual and team responsibility, function effectively and respectively as an individual and a member or a leader of a team; and have the skills to work effectively in multi-disciplinary teams. 2
1. Possess sufficient knowledge of mathematics, science, fundamental engineering, computational methods and program-specific engineering topics; use theoretical and applied knowledge of these areas in complex engineering problems. 2
2. Identify, define, formulate and solve complex engineering problems while considering the UN Sustainable Development Goals; choose and apply suitable analysis, design, estimation/prediction and modeling methods for this purpose. 1
3. Develop, choose and use modern techniques and tools that are needed for analysis and solution of complex problems faced in engineering applications; use information technologies effectively. 2
4. Have the ability to design a complex system, process, instrument or a product under realistic constraints and conditions, with the goal of fulfilling creative current and future requirements. 1
5. Use research methods, including conducting literature reviews, designing experiments, performing experiments, collecting data, analyzing results, and interpreting results, to investigate complex engineering problems or discipline-specific research topics. 1
6. Possess knowledge of business practices such as project management, risk management, change management, and economic feasibility analysis; awareness on entrepreneurship and innovation. 1
7. Possess knowledge of impact of engineering solutions on society, health and safety, the economy, sustainability, and the environment within the framework of the UN Sustainable Development Goals; awareness on legal outcomes of engineering solutions; awareness of acting impartially and inclusively without any form of discrimination; act in accordance with ethical principles, possessing knowledge of professional and ethical responsibilities. 1
8. Communicate effectively, both orally and in writing, on technical subjects, considering the diverse characteristics of the target audience (such as education, language, and profession). 1
Update Date:
ASSESSMENT METHODS and CRITERIA
| Percentage (%) | |
| Final | 32 |
| Midterm | 32 |
| Quiz | 20 |
| Assignment | 16 |
RECOMENDED or REQUIRED READINGS
| Textbook |
MAIN TEXTS REFERENCE BOOKS |