Selected programming assignments completed during my Computer Engineering studies at İzmir Institute of Technology (IZTECH).
This repository serves as an archive of coursework from several undergraduate computer engineering courses and reflects my early programming experience across different languages, paradigms, and problem domains.
The repository contains assignments from the following courses:
| Course | Primary Language | Main Areas |
|---|---|---|
| CENG 112 | Java | Object-oriented programming, data structures, file processing |
| CENG 113 | Python | Programming fundamentals, problem solving, control flow |
| CENG 211 | Java | Object-oriented design and application development |
| CENG 212 | Scheme | Functional programming and list processing |
| CENG 222 | Python | Probability, simulation, numerical experiments, data visualization |
The assignments range from introductory programming exercises to larger object-oriented and functional programming tasks.
The CENG 112 assignments contain Java-based programming exercises involving class design, file processing, collections, and object-oriented concepts.
One of the assignments models a recycling system using classes representing different types of recyclable materials and recycling bins.
Example classes include:
Garbage
Bin
PlasticRecycleBin
GlassRecycleBin
PaperRecycleBin
MetalRecycleBin
OrganicRecycleBin
FabricRecycleBin
FileIO
GarbageRecyclingApp
These exercises provide experience with:
- Java classes and objects
- encapsulation
- interfaces
- inheritance
- file input/output
- collections and custom data structures
- application-level problem modeling
Some assignments in this course were completed collaboratively.
The CENG 113 assignments focus on programming fundamentals and algorithmic problem solving using Python.
The exercises involve concepts such as:
- conditional statements
- loops
- user input
- string processing
- arithmetic operations
- validation
- formatted console output
- decomposition of problems into smaller steps
For example, one assignment dynamically creates text-based cards with configurable dimensions and correctly handles different relative sizes.
These assignments represent early experience with implementing algorithms directly from structured programming requirements.
The CENG 211 assignments focus more heavily on object-oriented software development using Java.
Projects in this directory apply object-oriented principles to larger problems and involve multiple interacting classes.
The coursework provides practice with concepts such as:
- object-oriented analysis
- class relationships
- domain modeling
- encapsulation
- inheritance and polymorphism
- Java collections
- file-based data processing
- separation of application responsibilities
Some of the CENG 211 work was completed collaboratively as part of group assignments.
A separate repository containing selected CENG 211 projects in a more focused format is also available in my GitHub profile.
The CENG 212 assignments explore functional programming using Scheme.
The coursework represents structured datasets using lists and processes them through reusable procedures.
Example data structures include:
Items
Customers
Transactions
Categories
Locations
The assignments involve operations such as:
- filtering list data
- retrieving structured information
- processing customer transactions
- calculating aggregate values
- querying data by category
- querying data by customer properties
- composing reusable procedures
The coursework provides practical experience with a programming paradigm that differs significantly from object-oriented and imperative programming.
- functional programming
- list processing
- recursion
- higher-level procedures
- immutable-style data manipulation
- symbolic data
- nested lists
- procedural abstraction
The CENG 222 assignments use Python to implement computational experiments involving probability and random variables.
The exercises use libraries such as:
NumPy
Matplotlib
Python random
Experiments include generating random variables, analyzing simulated distributions, and observing statistical properties over large numbers of trials.
Topics explored include:
- random experiments
- discrete random variables
- continuous random variables
- probability distributions
- expected values
- variance
- simulation
- inverse transform sampling
- numerical experimentation
- visualization of distributions
For example, simulations generate thousands of random observations and compare their empirical behavior through histograms, running averages, and variance calculations.
This coursework combines mathematical concepts with computational experimentation.
The repository contains coursework written primarily in:
Used for object-oriented and application-oriented assignments.
Used for introductory programming, problem solving, probability simulations, and numerical experiments.
Used to explore functional programming and list-based data processing.
iztech-computer-engineering-coursework/
│
├── CENG112/
│ ├── hw1/
│ ├── hw2/
│ ├── hw3/
│ └── hw4/
│
├── CENG113/
│ ├── hw1/
│ ├── hw2/
│ ├── hw3/
│ └── hw4/
│
├── CENG211/
│ ├── hw1/
│ ├── hw2/
│ └── hw3/
│
├── CENG212/
│ ├── hw1/
│ └── hw2/
│
├── CENG222/
│ ├── hw1/
│ └── hw2/
│
└── README.md
Across these assignments, the repository reflects experience with:
- programming fundamentals
- algorithmic problem solving
- object-oriented programming
- functional programming
- data structures
- file I/O
- numerical computation
- probability simulations
- data visualization
- domain modeling
- structured software organization
The assignments also show progression from smaller introductory programming exercises toward larger programs involving multiple classes, data structures, and programming paradigms.
These assignments were completed during my undergraduate Computer Engineering studies at İzmir Institute of Technology.
The repository is maintained primarily as an academic archive and as a record of my programming progression throughout the curriculum.
It should therefore be viewed as coursework rather than production software.
Some assignments were completed collaboratively as required by the corresponding courses.
Collaborators are credited in the relevant course directories where applicable.
The repository intentionally preserves these acknowledgements to accurately represent the academic context of the work.
Behice Kadıoğlu
Computer Engineering
İzmir Institute of Technology
GitHub: @behicekadioglu