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 Spring 2025-2026
Course CS 204 - Advanced Programming
Time/Place
Time
Week Day
Place
Date
16:40-18:30
Mon
FENS-G077
Feb 16-May 22, 2026
12:40-13:30
Wed
SBS-G071
Feb 16-May 22, 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

Albert Levi

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

Course Materials

Resources:
Main texts are
"Ivor Horton's Beginning Visual C++ 2012", by Ivor Horton, ISBN: 978-1-118-36808-4.
Actually any version of this book is OK, I said 2012 since it can be found electronically. Although this book says "Visual C++", it is general enough.
"A Computer Science Tapestry" (CS201 book)

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

We may not stick to the textbooks; you are responsible material covered in class too. Thus it is very important to attend to lectures. Moreover, most students do not need books in this course.
Technology Requirements:
A portable Windows computer.
If you have a Mac, please see below (policies section) and/or syllabus for the details.

Policies