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.

CS 204
Advanced Programming

Faculty Faculty of Engineering and Natural Sciences
Semester Summer 2025-2026
Course CS 204 - Advanced Programming
Time/Place
Time
Week Day
Place
Date
14:40-17:30
Tue
FASS-G062
Jul 6-Aug 21, 2026
09:40-12:30
Fri
FASS-G062
Jul 6-Aug 21, 2026
Level of course Undergraduate
Course Credits SU Credit:3, ECTS:6, Engineering:6
Prerequisites CS 201
Corequisites CS 204L
Course Type Lecture

Instructor(s) Information

Duygu Karaoğlan Altop

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.
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.
Sustainable Development Goals (SDGs) Related to This Course:
Industry, Innovation and Infrastructure

Course Materials

Resources:
Technology Requirements:

Policies