Public View

You are viewing the public version of the syllabus. If you have a SUNet account, you can view the richer version of the syllabus after logging in.

Advanced Programming
CS 204

Faculty: Faculty of Engineering and Natural Sciences
Semester: Fall 2025-2026
Course: Advanced Programming - CS 204
Classroom: UC-G030
Level of course: Undergraduate
Course Credits: SU Credit:3.000, ECTS:6, Engineering:6
Prerequisites: CS 201
Corequisites: CS 204L
Course Type: Lecture

Instructor(s) Information

Kamer Kaya

Course Information

Catalog Course Description
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.
Course Learning Outcomes:
1. 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.
2. 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++.
3. 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.
4. Understand, implement, and use advanced concepts: demonstrate the use of exception handling, concurrent applications, and graphical user interfaces.
Course 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.

Course Materials

Resources:
We do not have an official book. The materials will be provided during the course.
Technology Requirements:
A compiler for C++ language