Education
Compulsory Undergraduate Courses
Introduction to Programming
Department: Computer Engineering and Informatics
Course Code: CEID-101
Credits: 5 ECTS
Semester: Fall (1st)
Course Overview
The Introduction to Programming course provides a solid foundation in fundamental programming concepts and techniques. Students will develop problem-solving skills and learn how to write efficient, structured code using a programming language. This course serves as a cornerstone for further studies in computer science and engineering.
Learning Objectives
By the end of the course, students will:
- Understand fundamental programming concepts (variables, loops, conditionals, etc.).
- Develop structured and modular programming skills.
- Gain hands-on experience in algorithm development and debugging.
- Learn to solve computational problems effectively.
Course Content
- Introduction to Programming
- Programming languages and environments
- Basics of problem-solving and algorithm development
- Basic Concepts
- Variables, constants, and data types
- Input/output operations
- Control Structures
- Conditional statements (if-else, switch-case)
- Loops (for, while, do-while)
- Functions and Modular Programming
- Defining and calling functions
- Scope of variables and recursion
- Data Structures
- Arrays (one-dimensional and two-dimensional)
- Strings and basic operations
- Debugging and Error Handling
- Common programming errors
- Tools and techniques for debugging
- Practical Applications
- Solving real-world computational problems
- Writing efficient and optimized code
Discrete Mathematics
Department: Computer Engineering and Informatics
Course Code: CEID_NY109
Semester: Fall (1st)
Credits: 7 ECTS
Course Overview
The Discrete Mathematics course introduces fundamental mathematical concepts critical for computer science and engineering. Students will develop rigorous logical reasoning skills and gain tools for understanding proofs, combinatorics, number theory, and recursion, forming a strong foundation for advanced computational topics.
Learning Objectives
By the end of the course, students will be able to:
- Understand and apply formal proof techniques.
- Utilize concepts such as sets, relations, and functions.
- Solve summation and recurrence relations.
- Demonstrate knowledge of combinatorics and number theory.
- Analyze and model discrete problems using mathematical tools.
Course Content
- Propositional and Predicate Logic
- Logical propositions, operators, truth tables
- Translation to/from natural language
- Quantifiers and inference rules
- Proof Techniques
- Direct, indirect, contradiction proofs
- Case analysis and uniqueness proofs
- Mathematical induction
- Elementary Number Theory
- Division of integers, prime numbers
- Modular arithmetic
- Set Theory
- Sets, operations, and power sets
- Cartesian products and inclusion-exclusion
- Relations and Functions
- Properties of relations and equivalence relations
- Functions as relations
- Summation and Asymptotic Estimates
- Properties of sums and telescoping series
- Solving recurrence relations
- Combinatorics
- Counting principles (product, sum rules)
- Permutations, combinations, and pigeonhole principle
- Generating Functions
- Binomial coefficients and generating series
- Exponential generating functions
- Recursive Relations
- Linear and nonlinear recurrence relations
Data Structures
Department: Computer Engineering and Informatics
Course Code: CEID_23Υ210
Semester: Spring (4th)
Credits: 6 ECTS
Course Overview
The Data Structures course introduces students to the fundamental principles and techniques of designing and implementing data structures. Through theoretical concepts and hands-on practice, students will gain a strong foundation in solving algorithmic problems using efficient data structures.
Learning Objectives
By the end of this course, students will be able to:
- Understand and explain the design principles and basic concepts of data structures.
- Design and implement data structures to solve algorithmic problems.
- Collaborate effectively to apply data structures methodologically for complex computational challenges.
Course Content
- Introduction to Complexity
- Space and time complexity, amortized complexity.
- Sorting Algorithms
- Bubblesort, Heapsort, and Quicksort with analysis.
- Sorting in secondary memory.
- Data Structure Basics
- Arrays, records, files.
- Stacks, queues, priority queues.
- Linked Data Structures
- Lists, trees, and binary search trees.
- AVL trees, Red-Black trees, and hybrid data structures.
- Advanced Search Methods
- Binary search, interpolation search, and dynamic search structures.
- Union-Find, Hashing (chaining, open addressing), and extendible hashing.
- Indexing and RAM Models
- Indexing in secondary memory.
- RAM machine model structures (e.g., Van Emde Boas tree)
Principles of Programming Languages and Compilers
Department: Computer Engineering and Informatics
Course Code: CEID_NY132
Semester: Spring (4th)
Credits: 6 ECTS
Course Overview
This course introduces the fundamental concepts behind the design, implementation, and use of programming languages and compilers. Students will explore language paradigms, formal grammars, lexical and syntax analysis, and learn to construct essential tools for processing programming languages.
Learning Objectives
Upon completion of the course, students will:
- Understand the evolution, structure, and paradigms of programming languages.
- Learn criteria for good programming language design.
- Distinguish between interpreters and compilers and their applications.
- Develop formal grammars to describe syntax and semantics.
- Implement lexical analyzers using tools like flex.
- Build syntax analyzers using BNF and tools like bison.
- Analyze advanced programming constructs, such as data types, scope, and memory management.
- Understand functional and logic programming paradigms.
Course Content
- Introduction to Programming Languages
- Historical Evolution of Languages
- Interpreters vs. Compilers
- Programming Language Syntax and Semantics
- Lexical Analysis
- Syntax Analysis
- Variables, Expressions, and Statements
- Data Types and Memory Management
- Scope Rules (Static vs. Dynamic)
- Subprograms and Parameter Passing
- Functional Programming
- Logic Programming
Operating Systems
Department: Computer Engineering and Informatics
Course Code: CEID_24Υ330
Semester: Fall (5th)
Credits: 6 ECTS
Course Overview
The Operating Systems course introduces students to the design, implementation, and management of operating systems. The course emphasizes concepts such as process management, memory organization, synchronization techniques, and file systems, providing students with the skills to understand and implement efficient operating systems.
Learning Objectives
By the end of this course, students will:
- Understand fundamental operating system concepts and data management strategies.
- Analyze processes, threads, inter-process communication, and scheduling.
- Apply memory management techniques and algorithms.
- Evaluate storage strategies and file access methods.
Course Content
- Introduction to Operating Systems
- Definitions, historical evolution, and key components.
- Process Management
- Process states, control blocks, and interrupt handling.
- Inter-process communication, mutual exclusion, and synchronization algorithms: Dekker, Peterson, Lamport’s Bakery Algorithm.
- Thread Management and Scheduling
- Threads, process scheduling, and distributed synchronization.
- Memory Management
- Real memory: partitioning, paging, segmentation.
- Virtual memory: demand paging, replacement strategies, locality, and working sets.
- File Systems and I/O Management
- Storage strategies, disk scheduling, and deadlock management.
- Case Studies
- Examples of operating system designs and architectures.
Software Technology
Department: Computer Engineering and Informatics
Course Code: CEID_NY232
Semester: Spring (8th)
Credits: 6 ECTS
Course Overview
The Software Technology course introduces students to software development processes, models, and tools. It emphasizes managing software projects, analyzing requirements, implementing solutions, and using agile methodologies for effective software development.
Learning Objectives
Upon successful completion of the course, students will:
- Recognize fundamental software engineering models and processes.
- Analyze project risks, estimate costs, and manage small-scale software projects.
- Define software requirements and design models, including UML diagrams and use cases.
- Implement software collaboratively using version control systems and code repositories.
- Utilize debugging techniques and appropriate testing tools for verification and validation.
- Apply agile methodologies, including SCRUM, Kanban, and pair programming.
Course Content
- Introduction to Software Technology
- Ethics, professional responsibility, and legacy systems.
- Software Models
- Waterfall, spiral, V&V models, evolutionary models, and CASE tools.
- Software Project Management
- Scheduling (PERT, Gantt charts), time management, and resource allocation.
- Risk and Cost Management
- Estimation techniques and cost models.
- Requirements Analysis
- OOAD, UML diagrams (use cases, class diagrams), and domain models.
- Software Design
- ICONIX methodology, robustness diagrams, and sequence diagrams.
- Implementation
- Transition from dynamic and static models to code.
- Team Development
- Version control, code reviews, and inspections.
- Iterative Development
- Prototyping, RUP, and visual programming.
- Agile Development
- Extreme programming (XP), pair programming, SCRUM, and Kanban.
- Verification and Validation
- Unit testing, system testing, black-box and white-box testing.
- Debugging Techniques
- Error identification and regression testing.
- Advanced Topics
- Continuous integration, software reliability, and performance testing.
Elective Undergraduate Courses
Introduction to Bioinformatics
Department: Computer Engineering and Informatics
Course Code: CEID_NE548
Semester: Spring
Credits: 5 ECTS
Course Overview
The Introduction to Bioinformatics course focuses on the application of computational techniques to solve biological problems. Students will explore algorithms for sequence alignment, database searching, phylogenetic tree construction, and genome sequencing while gaining essential knowledge in biological data management and computer-aided drug design.
Learning Objectives
Upon successful completion of the course, students will be able to:
- Understand the core principles and concepts of bioinformatics.
- Solve problems involving biological macromolecule data and string processing.
- Design and implement string-processing algorithms for bioinformatics applications.
- Demonstrate knowledge of computer-aided drug design techniques.
- Apply clustering and classification algorithms to biological data.
- Search and interpret biological databases effectively.
- Analyze phylogenetic trees.
- Explore genome sequencing techniques, with a focus on Next-Generation Sequencing (NGS).
Course Content
- Introduction to Bioinformatics
- Algorithms for biological data management and string processing.
- Pattern Matching
- Exact algorithms: Boyer-Moore, Knuth-Morris-Pratt, Karb-Rabin.
- Approximate pattern matching and sequence alignment algorithms.
- Biological Databases
- Sequence databases (FASTA, BLAST, PAM, PROSITE, BLOCKS, BLOSUM).
- Database searching techniques.
- Computer-Aided Drug Design
- Structure-based drug design and activity relationships.
- Computational methods for conformational searches and binding site analysis.
- Biological Molecule Representation
- Models for 3D structure analysis.
- Geometry-based similarity search techniques.
- Clustering and Classification
- Machine learning methods: Neural Networks, Genetic Algorithms, SVMs, and Clustering Algorithms.
- Phylogenetic Trees
- Principles and construction techniques.
- Genome Sequencing
- Algorithms for genome sequencing and Next-Generation Sequencing (NGS).
Decentralized Computing and Modeling
Department: Computer Engineering and Informatics
Course Code: CEID_NE589
Semester: Spring
Credits: 5 ECTS
Course Overview
The Decentralized Computing and Modeling course introduces students to key concepts, techniques, and tools for understanding and implementing decentralized systems. Topics include distributed algorithms, blockchain technologies, population dynamics, and agent-based modeling, providing both theoretical knowledge and hands-on experience with relevant platforms like NETLOGO.
Learning Objectives
Upon successful completion of the course, students will:
- Understand the techniques, properties, and applications of fundamental and advanced decentralized algorithms.
- Model and evaluate complex decentralized systems.
- Apply experimental methodologies to assess decentralized models.
- Develop new implementations of decentralized algorithms using algorithmic platforms and libraries.
- Implement practical models that predict and improve the behavior of decentralized systems.
Course Content
- Models
- Distributed and Decentralized Models: LOCAL/CONGEST, Population Protocols, Opinion Dynamics, Cellular Automata, Network Dynamics.
- Distributed Algorithms
- Maximal Independent Set
- Deterministic and Randomized Coloring
- Self-Stabilization Algorithms
- Blockchain
- Cryptographic Primitives and Blockchain Basics
- Consensus Mechanisms: CAP Theorem, Proof-of-Work, Proof-of-Stake
- Permissionless Consensus: Paxos, RAFT
- Case Studies: Bitcoin, Ethereum, and Smart Contracts (Solidity Language).
- Decentralized Algorithms and Systems
- Opinion Dynamics (De Groot Model)
- Cellular Automata and Network Systems
- Population Dynamics (Disease Models, Predator-Prey Models).
- Agent-Based Modeling (Lab)
- Introduction to Agent-Based Models
- Agent Interactions and Environment Setup
- Model Implementation in NETLOGO
Decentralized Data Technologies and Applications
Department: Computer Engineering and Informatics
Course Code: CEID_NE###
Semester: Spring
Credits: 5 ECTS
Course Overview
This course explores decentralized data technologies, including hashing, distributed systems, blockchain, big data frameworks, and large-scale machine learning. Students will gain hands-on experience with Python, PySpark, and MLlib to solve real-world data storage and processing challenges while implementing practical projects.
Learning Objectives
Upon successful completion of the course, students will:
- Understand fundamental concepts of hashing, distributed systems, and peer-to-peer (P2P) architectures.
- Analyze decentralized systems and their use cases, including blockchain and distributed hashing tables.
- Utilize Python and PySpark to manipulate, store, and process data in distributed systems.
- Develop and train machine learning models at scale using PySpark’s MLlib and Scikit-learn.
- Integrate all learned techniques into large-scale practical projects.
Course Content
- Week 1:
- Hashing, Bloom Filters, Internet Caching Protocols, Distributed Hash Tables (DHTs).
- Week 2:
- Decentralized Data Structures, Peer-to-Peer (P2P) Systems, Chord (Distributed Hashing).
- Week 3:
- Blockchain Data Structures and Decentralized Applications (DAPPs).
- Week 4:
- Hadoop, HDFS, Map/Reduce, NoSQL Databases, Apache Spark, RDDs, Cluster Architectures.
- Week 5:
- Python Overview for Decentralized Systems.
- Practice: Basic Data Manipulation with Python and PySpark.
- Weeks 6–7:
- Data Storage and Processing in Decentralized Systems.
- Practice: Batch Processing with PySpark.
- Weeks 8–9:
- Large-Scale Machine Learning with PySpark.
- Practice: Implement Machine Learning Models with Scikit-learn.
- Weeks 10–11:
- Advanced Machine Learning with PySpark.
- Practice: ML Models using PySpark’s MLlib.
- Weeks 12–13:
- Advanced Topics and Case Studies.
- Practice: Large Project Integrating All Techniques.
Data Mining and Machine Learning
Department: Computer Engineering and Informatics
Course Code: CEID_NE562
Semester: Spring
Credits: 5 ECTS
Course Overview
The Data Mining and Machine Learning course introduces students to foundational concepts, algorithms, and techniques for extracting meaningful patterns from data. The course covers preprocessing, classification, clustering, and advanced topics such as spatial and temporal data mining, preparing students for real-world data science applications.
Learning Objectives
Upon successful completion of the course, students will:
- Gain foundational knowledge of data mining and machine learning concepts.
- Understand the key algorithms used in data mining and their efficient implementation.
- Characterize and discover patterns using association rule mining techniques.
- Compare and contrast techniques such as decision trees, neural networks, and belief networks.
- Apply data mining techniques for classification, clustering, and web or sequence data analysis.
Course Content
- Introduction
- Data Science, Data Mining, and Machine Learning concepts.
- Data Preprocessing and Compression
- Techniques for data cleaning, transformation, and reduction.
- Classification Algorithms
- Decision Trees, Bayesian Networks, Neural Networks.
- Clustering Algorithms
- K-means, Hierarchical Clustering, and advanced clustering techniques.
- Association Rule Discovery
- Apriori and FP-growth algorithms for finding patterns.
- Bayesian and Neural Network Models
- Foundations and applications in machine learning.
- Web Mining
- Extracting knowledge from web data.
- Spatial Data Mining
- Discovering patterns in spatial and geographical data.
- Temporal Data Mining
- Analyzing time-dependent data and sequences.
- Data Mining from Sequences
- Techniques for mining sequential patterns and event streams.
Applied Information Systems II
Department: Computer Engineering and Informatics
Course Code: CEID_NE5358
Semester: Spring
Credits: 5 ECTS
Course Overview
The Applied Information Systems II course focuses on the development, implementation, and management of information systems. It covers practical aspects, including system operation, user participation, technical support, and modern methods for data analysis and project management, preparing students to support and optimize organizational IT systems.
Learning Objectives
By the end of the course, students will:
- Understand daily operational challenges in managing information systems.
- Learn the lifecycle of information systems, from development to decommissioning.
- Evaluate the roles and involvement of end users in system functionality.
- Explore IT developments and the professional responsibilities of software engineers.
- Lead technological changes and ensure smooth system integration.
Course Content
- System Development and Management
- Job descriptions, access control, disaster recovery plans.
- User Participation and Training
- End-user training, issue resolution, role of upper management.
- System Technical Support
- Version control, change control, error management, and system updates.
- Performance Monitoring and Risk Management
- IT department performance, cost analysis, risk mitigation.
- Data Analysis and Advanced Tools
- Modern data analysis techniques and software tools with real-world applications.
Advanced Information Systems
Department: Computer Engineering and Informatics
Course Code: CEID_NE5367
Semester: Fall
Credits: 5 ECTS
Course Overview
The Advanced Information Systems course focuses on the design, development, and implementation of sophisticated information systems to address organizational challenges. It emphasizes practical problem-solving, advanced technologies like machine learning, big data, and IoT, and their applications in business, management, and decision-making processes.
Learning Objectives
Upon successful completion of the course, students will:
- Understand the philosophy and role of information technology in administrative processes.
- Meet the evolving demands of organizations with software solutions.
- Analyze challenges in developing advanced information systems.
- Assess successful and unsuccessful case studies of advanced systems.
- Apply technology-driven approaches to guide organizational change.
Course Content
The course explores the relationship between organizational needs and advanced information systems, highlighting emerging technologies and their implementation:
- Introduction to Information Systems
- Impact of IT on administration, planning, control, and decision-making.
- Machine Learning and Data Analysis
- Applications of machine learning in business processes.
- Big Data and IoT
- Technologies for processing and analyzing large datasets.
- Use cases in decision-making at operational and management levels.
- Information Systems for Business
- Pricing strategies, after-sales support, and workflow control.
- Content and data warehouse management.
- Social Impact of Information Systems
- Evaluating the societal implications of advanced technologies.
Information Retrieval
Department: Computer Engineering and Informatics
Course Code: CEID_NE5597
Semester: Fall
Credits: 5 ECTS
Course Overview
The Information Retrieval course introduces students to the design, implementation, and evaluation of systems that retrieve information efficiently and effectively. It covers search engine technologies, retrieval models, indexing structures, and applications of machine learning in modern retrieval systems, preparing students for advanced research and industry applications.
Learning Objectives
Upon successful completion of the course, students will:
- Understand the concepts of information storage, retrieval, and the efficient design of retrieval systems.
- Analyze and compare different retrieval models to select the appropriate model for specific applications.
- Develop and evaluate small-to-medium-sized information retrieval systems.
- Understand the design principles of modern web search engines, including crawling, indexing, and ranking.
- Explore word embeddings and their role in information retrieval and natural language processing.
Course Content
- Introduction to Information Retrieval
- User modeling, document representation, retrieval processes.
- Performance Metrics
- Recall, precision, NDCG, and other evaluation techniques.
- Retrieval Models
- Set-oriented models: Boolean, Fuzzy Set, Extended Boolean.
- Algebraic models: Vector Space, Latent Semantic Indexing, Topic Models.
- Probabilistic models: Classical and Language Models.
- Web Search Engines
- Crawling, indexing, and ranking algorithms.
- PageRank, SALSA, and HITS algorithms.
- Machine Learning in Retrieval
- Learning to Rank methods.
- Word embeddings: Word2Vec, Skip-gram, LSTM, Transformers, BERT, GPT.
- Comparison of search engines and reasoning engines.
- Indexing and Storage Techniques
- Inverted files, signature files, suffix trees, and B-trees.
- Compression algorithms for indexing and text.
- Text Mining and Distributed Retrieval
- Techniques with MapReduce and Apache Spark.
Game Development
Department: Computer Engineering and Informatics
Course Code: CEID_NE565
Semester: Fall
Credits: 5 ECTS
Course Overview
The Game Development course introduces students to fundamental concepts and technologies for designing and building interactive games. The course focuses on game mechanics, physics, user interfaces, 2D/3D graphics, AI, and networking while using the Unity game engine and C# programming for hands-on development.
Learning Objectives
Upon successful completion of the course, students will:
- Understand fundamental game development concepts, including game design, mechanics, and player experience.
- Use the Unity game engine to create games, develop assets, implement mechanics, and design levels.
- Acquire programming skills in C# as applied to scripting within Unity.
- Understand game art principles, including 2D/3D asset creation, level design, and user interface development.
- Work collaboratively in teams to design, develop, test, and debug games.
- Test, identify, and resolve bugs using appropriate debugging tools and techniques.
Course Content
- Introduction to Game Development
- Unity Game Engine Overview
- Game Design Principles and Mechanics
- Game Art and Design
- Game Design Documents (GDD)
- Math and Physics for Game Development (raycasts, collisions, forces, particles).
- Graphics and Animation
- Textures, Materials, and Shaders
- 2D Concepts: Sprites and Cameras
- Animation Systems
- Audio in Games
- Audio Management and Event Systems
- Artificial Intelligence
- Pathfinding Algorithms and Basic AI
- 3D Game Development
- 3D Physics, Meshes, and First/Third-Person Games
- Networking in Multiplayer Games
- Basics of Multiplayer Networking
- User Interface Development
- Event Systems, UI Design, and Player Interaction