Advanced Programming (CS 204)

2020 Spring
Faculty of Engineering and Natural Sciences
Computer Sci.& Eng.(CS)
6.00 / 6.00 ECTS (for students admitted in the 2013-14 Academic Year or following years)
Albert Levi,
Click here to view.
Formal lecture,Interactive lecture,Recitation
Interactive,Communicative,Discussion based learning,Task based learning
Click here to view.


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 (SW interrupts), multi-threaded programming and synchronization.


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.


Show the understanding of the operations of the preprocessor, compiler and linker in the context of processing a source code.
Describe how various data structures and types (in particular user defined objects, extern variables, static variables, pointers, arrays, linked lists) 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++.
Develop and/or appropriately use templated classes, templated functions and function overloading in C++ programs.
Design, develop and demonstrate the use of constructor, destructor, copy constructor (deep and shallow), assignment operator and operator overloading in the context of object oriented programming.
Demonstrate the use of object sharing principles with and without reference variables.
Describe the internal representation of numeric and non-numeric data. Demonstrate the use of bitwise operators in C++.
Develop basic strategies for handling exceptions using standard mechanisms provided in C++.
Utilize the notions of inheritance, overriding and polymorphism in object oriented design.
Show competency in advanced contents such as concurrent applications in C++ and graphical user interfaces.


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. 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 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; choose and apply suitable analysis 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; possess knowledge of standards used in engineering applications; use information technologies effectively. 2

4. Ability to design a complex system, process, instrument or a product under realistic constraints and conditions, with the goal of fulfilling specified needs; apply modern design techniques for this purpose. 1

5. Design and conduct experiments, collect data, analyze and interpret the results to investigate complex engineering problems or program-specific research areas. 1

6. Knowledge of business practices such as project management, risk management and change management; awareness on innovation; knowledge of sustainable development. 1

7. Knowledge of impact of engineering solutions in a global, economic, environmental, health and societal context; knowledge of contemporary issues; awareness on legal outcomes of engineering solutions; understanding of professional and ethical responsibility. 1

1. Design, implement, test, and evaluate a computer system, component, or algorithm to meet desired needs and to solve a computational problem. 5

2. Demonstrate knowledge of discrete mathematics and data structures. 4

3. Demonstrate knowledge of probability and statistics, including applications appropriate to computer science and engineering. 1

1. Formulate and analyze problems in complex manufacturing and service systems by comprehending and applying the basic tools of industrial engineering such as modeling and optimization, stochastics, statistics. 1

2. Design and develop appropriate analytical solution strategies for problems in integrated production and service systems involving human capital, materials, information, equipment, and energy. 1

3. Implement solution strategies on a computer platform for decision-support purposes by employing effective computational and experimental tools. 2

1. Use mathematics (including derivative and integral calculations, probability and statistics, differential equations, linear algebra, complex variables and discrete mathematics), basic sciences, computer and programming, and electronics engineering knowledge to (a) Design and analyze complex electronic circuits, instruments, software and electronics systems with hardware/software. or (b) Design and analyze communication networks and systems, signal processing algorithms or software 2

1. Comprehend key concepts in biology and physiology, with emphasis on molecular genetics, biochemistry and molecular and cell biology as well as advanced mathematics and statistics. 1

2. Develop conceptual background for interfacing of biology with engineering for a professional awareness of contemporary biological research questions and the experimental and theoretical methods used to address them. 1

1. Familiarity with concepts in statistics and optimization, knowledge in basic differential and integral calculus, linear algebra, differential equations, complex variables, multi-variable calculus, as well as physics and computer science, and ability to use this knowledge in modeling, design and analysis of complex dynamical systems containing hardware and software components. 2

2. Ability to work in design, implementation and integration of engineering applications, such as electronic, mechanical, electromechanical, control and computer systems that contain software and hardware components, including sensors, actuators and controllers. 1

1. Applying fundamental and advanced knowledge of natural sciences as well as engineering principles to develop and design new materials and establish the relation between internal structure and physical properties using experimental, computational and theoretical tools. 1

2. Merging the existing knowledge on physical properties, design limits and fabrication methods in materials selection for a particular application or to resolve material performance related problems. 1

3. Predicting and understanding the behavior of a material under use in a specific environment knowing the internal structure or vice versa. 1


  Percentage (%)
Final 30
Midterm 45
Assignment 25



"Ivor Horton's Beginning Visual C++ 2012", by Ivor Horton, ISBN: 978-1-118-36808-4.
"A Computer Science Tapestry" (CS201 Book)

"Starting out C++ Early Objects", 7th edition, by T. Gaddis, J. Walters and G. Muganda
"Objects, Abstraction, Data Structures and Design using C++", by Koffman and Wolfgang.