This list is not exhaustive; any idea that is interesting and non-trivial is potentially possible. Use your imagination. I'm happy to discuss possible ideas with you.
In addition to the ideas below, you might want to look at the extensive list of project ideas from Martin Mareš, who also teaches Programming 2 at our faculty. His list is in Czech, but here is an automatic translation of it into English which is quite readable.
Implement one or more non-trivial algorithms, e.g. from the Algorithms and Data Structures class or the Introduction to Algorithms book. You should deliver these as a set of classes with public methods that provide a convenient interface for callers, along with basic documentation and some tests that demonstrate that your classes work correctly. Some possibilities:
balanced binary trees (using AVL or red-black balancing)
linear algebra: solving linear systems, inverting matrices, LU decomposition, least squares approximation
number theory (primality testing, integer factorization)
computational geometry algorithms (finding intersections among a set of line segments, convex hull, closest set of points)
Create a simple utility application for editing or managing some sort of data, perhaps with a graphical interface. Examples:
calendar
address book
personal finance
text editor
Write a drawing/painting program that lets the user draw lines, circles and other shapes in various colors, fill in empty spaces with a certain color, and perhaps perform other graphical operations as well (e.g. adding images).
Implement a strategic board game that lets two players play against each other, or one player against a computer AI, with a graphical interface written using GTK. Some possibilities: chess, checkers, 3D tic tac toe, Pente, Quoridor, Gobblet. Here is a list of many more.
Implement a simple video game using GTK. You could attempt to recreate a classic game such as Tetris, Space Invaders, Missile Command or Pac-Man, or you could invent your own.
Implement a one-player puzzle solving game with a graphical interface. Examples: Sudoku, solitaire, Minesweeper, 2048.
Write an interpreter for a tiny programming language, e.g. one with only variables, if statements, and while loops.