CMPE 101 Introduction to Computer Science (3+0+2) 4 ECTS 6
(Bilgisayar Bilimine Giriş)
Literacy on computer software, computer hardware, data processing, and programming languages. Basic programming language concepts and constructs.
Algorithmic thinking, debugging and basic algorithms. History of computer science and basic hardware components. Hands-on programming exercises and
problem solving.
CMPE 142 Digital Systems (3+1+2) 4 ECTS 6
(Sayısal Sistemler)
Number systems. Boolean algebra, logic networks and their simplification. Logic design with gates. Combinatorial circuits and sequential circuits.
Counters, shift registers, computer organization, arithmetic logic unit, memory and control units. Laboratory experiments and applications of digital
logic design.
CMPE 150 Introduction to Computing (1+0+4) 3 ECTS 5
(Bilgi İşleme Giriş)
The aim of the course is twofold: To give the student literacy on computers and data processing, and to make him/her a computer user either as a programmer or as an application software packages user. The course has separate components for these two aims. The first component is the weekly lecture on computer hardware, computer software, applications, computer industry and social issues. The second component is organized in terms of labs, workshops and recitations. Students follow one of two alternatives as chosen by their department: 1) programming in a high level language such as Pascal, C or Fortran, 2) the use of a set of application software packages such as word processing, spreadsheet, and data management packages.
CMPE 160 Object Oriented Programming (3+0+2) 4 ECTS 6
(Nesne Yönelimli Programlama)
Object-oriented programming concepts: Classes, objects, inheritance, polymorphism, abstract classes, and interfaces. Algorithm analysis. Basic
data structures: lists, stacks, queues, priority queues, sets, hash maps, and binary search trees.
Prerequisite: CMPE 101 or CMPE 150
CMPE 210 Fundamentals of Object Oriented Programming (3+0+2) 4 ECTS 5
(Nesneye Yönelik Programlamanın Temelleri)
Review of scalar and structured data types. Object oriented programming concepts: classes and abstract data types, inheritence, polymorphisms, operator overloading. Classical and object oriented program specification, design, coding and testing. Linear (stacks, queues, linear lists) and nonlinear data structures (trees, sets). Sequential and random access files. Implementation of data structures: Linked lists, multidimensional arrays, records, character strings, stacks, queues, trees and sets. Recursion.
Prerequisite: CMPE 150.
CMPE 220 Discrete Computational Structures (3+2+0) 3 ECTS 5
(Kesikli Hesaplama Yapıları)
Propositional logic and proof techniques. Set theory. Functions and relations. Set cardinality. Basic algebraic structures; group and ring. Number
theory and public key cryptography. Graph theory.
CMPE 222 Introduction to Database Systems (3+2+0) 3 ECTS 6
(Veri Tabanı Sistemlerine Giriş)
Logical organization of data: Entity-relationship modeling of data. The relational model. Data description and query languages. Normal forms and
database design. Physical design and access strategies. Storage and indexing. Transaction management. Security, integrity and reliability. Design
and implementation of a database application. Design and implementation of a simple database management system.
Prerequisite: CMPE 250
CMPE 223 Data Structures and Algorithms I (3+0+0) 3 ECTS 5
(Veri Yapıları ve Algoritmalar I)
Basic data types and data structures: Stacks, queues, linked lists, trees and graphs. Search and sort algorithms. Storage allocation, garbage collection and compaction. Logical and physical organization of files. File processing and management.
Prerequisite: CMPE 150.
CMPE 230 Systems Programming (3+2+0) 3 ECTS 6
(Sistem Programlama)
Compilers, interpreters, assemblers, linkers and loaders. Unix environment, commands and shell programming. Systems programming languages.
Assembly language programming. Introductory graphical user interface (GUI) programming.
Prerequisite: CMPE 160
CMPE 244 Computer Organization (3+0+2) 4 ECTS 6
(Bilgisayar Organizasyonu)
History of computer architecture and its role in computer engineering. Computer performance measurement. Instruction set architectures. Complex
and reduced instruction set computers. Hardware/software interface. Computer arithmetic. Processor data path and control design. Instruction
pipelining and hazard handling. Branch prediction, speculative execution, and out-of-order execution. Memory technologies and cache hierarchy.
Multi/many-core processors. Hardware security.
Prerequisite: CMPE 142 or EE 240 or EE 243
CMPE 250 Data Structures and Algorithms (3+2+0) 3 ECTS 6
(Veri Yapıları ve Yordamlar)
Complexity, abstract data types, trees, hashing, heap structures. Sorting, graphs and graph algorithms, algorithm design techniques.
Prerequisite: CMPE 160 or CMPE 210 or IE 201
CMPE 300 Analysis of Algorithms (3+0+0) 3 ECTS 5
(Algoritma Analizi)
Complexity analysis of algorithms. Best-case, worst-case, and average complexity analysis. Scale invariant complexity classes. Stable, in-place,
on-line algorithms. Adjacent-key comparison-based algorithms. Master theorem. Complexity analysis of divide-and-conquer, graph, dynamic programming, and greedy algorithms. Complexity analysis of parallel algorithms. Complexity analysis of probabilistic algorithms. Lower bound theory.
Prerequisite: CMPE 250
CMPE 320 Principles of Programming Languages (3+0+0) 3 ECTS 5
(Programlama Dillerinin Prensipleri)
Syntax, semantics and pragmatics of programming languages. Data, storage and control. Binding of identifiers. Procedural abstraction. Definitions,
sequences and concurrent processes. Types. Formal semantics. Key features of existing programming languages.
Prerequisite: CMPE 250
CMPE 322 Operating Systems (3+2+0) 3 ECTS 6
(İşletim Sistemleri)
Operating systems functionalities. Multiprogramming and time sharing concepts. Concurrent processes, long/medium/short term scheduling,
process synchronization, critical section problem. Deadlock prevention, avoidance, detection and recovery. Memory management, swapping,
multiple partitions. Paging, segmentation, virtual memory, page replacement algorithms. File system structures, I/O subsystem. Linux case studies.
Prerequisite: CMPE 250
CMPE 343 Introduction to Probability and Statistics for Computer Engineers (3+1+0) 3 ECTS 6
(Bilgisayar Mühendisleri için Olasılık ve İstatistiğe Giriş)
Introduction to probability theory. Random variables, expectation, variance and moment generating functions. Distributions: Bernoulli, binomial, uniform, Gaussian, exponential, Poisson, gamma. Introduction to statistical concepts. Sampling and sample statistics. Point and interval estimation. Hypothesis testing. Regression. Numerical and computational aspects of random variable generation, sampling, and estimation.
Prerequisite: MATH 101.
CMPE 346 Principles of Embedded Systems Design (3+1+2) 4 ECTS 6
(Gömülü Sistem Tasarım Temelleri)
Embedded systems properties. Embedded processing platforms. Parallel input and output. Time measurement. Waveform generation; pulse and
period measurement. Data acquisition and sensors. Device control and actuators. Asynchronous and synchronous serial communication. Interrupts.
Basic embedded software techniques. Techniques for low-power operation. Design with contemporary tools. Laboratory.
Prerequisite: CMPE 244
CMPE 350 Formal Languages and Automata Theory (3+2+0) 3 ECTS 5
(Biçimsel Diller ve Makineler Kuramı)
Strings and languages. Finite-state automata and regular expressions. Pushdown automata and context-free grammars. Turing machines and
unsolvability
Prerequisite: CMPE 220 or MATH 162 or MATH 111
CMPE 354 Software Engineering (3+1+2) 4 ECTS 7
(Yazılım Mühendisliği)
Requirements engineering, design, implementation development, testing, deployment, and documentation. Software project management,
planning, organization, risk management, and quality assurance. Effective use of software development tools. Communication, team coordination,
and technical documentation. Professional ethics.
Prerequisites: CmpE 222
CMPE 362 Introduction to Signal Processing for Computer Engineers (3+0+0) 3 ECTS 5
(Bilgisayar Mühendisleri için Sinyal İşlemeye Giriş)
Discrete and continuous time signals and systems with computer engineering applications. Time-domain signal representations, impulse response
of linear time-invariant systems; convolution. Fourier series. Spectrum representation of signals. Fourier transforms. Digital signals and sampling.
Reconstruction, Filtering, Z-transform representation, discrete Fourier transform. Algorithms for signal processing. Floating point and quantization
errors.
Prerequisite: MATH 202
ENG 380-399 / 480 - 499 Special Topics in Engineering (3+0+0)3 ECTS 5
(Mühendislikte Özel Konular)
Special topics of current interest in engineering and technology.
CMPE 416 Introduction to Cryptography (3+0+0) 3 ECTS 6
(Şifrelemeye Giriş)
Basic concepts of cryptography and cryptanalysis. Classical methods: DES and other algorithms. Public key systems: RSA, El-Gamal and other algorithms. Number theory and complexity fundamentals. Digital signatures. Hash functions. Key distribution problems. Network aspects of cryptography. Secret sharing.
Prerequisite: Consent of the instructor.
CMPE 422 Database Systems (3+0+0) 3 ECTS 6
(Veri Tabanı Sistemleri )
Fundamentals of data modeling concepts. Examination of deductive and object oriented models. Storage structures and query processing algorithms for deductive and object oriented models.
Prerequisite: CMPE 321.
CMPE 425 Compiler Design (3+0+0) 3 ECTS 6
(Derleyici Tasarımı)
Overview of the compilation process. Lexical analysis, regular expressions, finite automata and lexical analyzer generators. Symbol tables. Grammars. Top-down and bottom-up syntax analysis. Recursive-descent. SLR, canonical LR, LALR and operator precedence parsing techniques. Parser generators. Semantic analysis and attribute grammers. Abstract machines ad intermediate code. Syntax directed translation schemes. Implementation of a compiler for a simple imperative language.
Prerequisite: CMPE 320.
CMPE 434 Introduction to Robotics (3+0+0) 3 ECTS 6
(Robotbilime Giriş)
Designing, building and programming mobile robots; sensors, effectors, locomotion, basic control theory, control architectures, path planning, localization, mapping, learning. Teamwork; robot contest.
CMPE 436 Concurrent and Distributed Programming (3+0+0) 3 ECTS 6
(Koşutzamanlı ve Dağıtık Programlama)
Multithreaded, Distributed, and Mobile Programming with Java. Concurrency. Fundamentals of distributed computing. Synchronization. Logical and vector clocks. Global snapshot. Global properties. Property detection. Detecting termination and deadlocks. Message ordering. Distributed leader election. Distributed agreement. Distributed transactions
CMPE 446 Introduction to Computer Architecture (3+0+0) 3 ECTS 6
(Bilgisayar Mimarisine Giriş)
Performance limits of Von Neumann architecture. Reduced Instruction Set Computer (RISC) architecture. Pipelined processor design. Instruction pipeline and arithmetic pipelines. Array processors. Dynamic and static interconnection networks. Shared memory multiprocessor systems. Message passing multiprocessor systems.
Prerequisites: CMPE 344 and CMPE 322.
CMPE 460 Introduction to Computer Graphics (3+0+0) 3 ECTS 6
(Bilgisayar Grafiğine Giriş)
Overview of graphics systems. Rasterization of 2D graphics primitives. Geometrical transformations. Viewing in 3D. Visible surface determination. Illumination and shading. Texture mapping. Modeling. Representation of curves and surfaces. Solid modeling. Introduction to advanced topics in computer graphics: ray tracing.
Prerequisite: Consent of the instructor.
CMPE 462 Machine Learning (3+0+0) 3 ECTS 6
(Yapay Öğrenme)
Overview of artificial learning systems. Supervised and unsupervised learning. Statistical models. Decision trees. Clustering. Feature extraction. Artificial neural networks. Reinforcement learning. Applications to pattern recognition and data mining.
Prerequisite: Consent of the instructor.
CMPE 475 Computer Networks (3+0+0) 3 ECTS 6
(Bilgisayar Ağları)
Network layers and architectures, reference models. Physical layer and data communications issues. Metallic, fiber optic and wireless transmission media. Telephone system, switching, ISDN, ATM, SDH, DSL, cellular systems and satellites. Data link layer issues, elementary and sliding window protocols. Multiple access protocols, local area networks, Ethernet, bridges and switches. Network layer issues, routing algorithms, congestion control, Internet Protocol, routing protocols. ATM network layer.
Prerequisite: Consent of the instructor.
CMPE 476 Distributed Systems (3+0+0) 3 ECTS 6
(Dağıtık Sistemler)
Transport layer services and protocols. Internet protocols TCP and UDP. ATM Adaptation Layer protocols. Client-server and peer-to-peer programming models. Network programming. Remote procedure call. Application layer issues and protocols. Network security. Domain name system. Network management. Electronic mail and news services. Overview of distributed systems and structures. Distributed file and directory systems. Distributed coordination, concurrency control, deadlock detection and election algorithms.
Prerequisite: Consent of the instructor.
CMPE 477 Wireless and Mobile Networks (3+0+0) 3 ECTS 6
(Telsiz ve Gezgin Ağlar)
Introduction to wireless and mobile networks and network architectures. Cellular networks. Mobility and handoff management. GSM, GPRS, 3G networks. WAP. Cellular network planning. Wireless LANs and Mobile IP. Ad hoc wireless networks. Wireless broadband networks. Satellite networks.
Prerequisite: Consent of the instructor.
CMPE 478 Parallel Processing (3+0+0) 3 ECTS 6
(Paralel İşlem Görme)
Parallel machine and performance models: PRAM, speedup, work efficiency, scalability, Brent's theorem. Parallel programming with message passing and multi-threading libraries. Parallel algorithms: Prefix computation, pointer jumping, list ranking, Euler tours on trees, sorting. Parallel architectures: Multiprocessors, multicomputers and Flynn's taxonomy, SIMD, MIMD, SPMD, interconnection topologies. Load balancing and graph partitioning methods.
Prerequisite: CMPE 322.
CMPE 480 Introduction to Artificial Intelligence (3+0+0) 3 ECTS 6
(Yapay Zekaya Giriş)
Representation of knowledge. Search and heuristic programming. Logic and logic programming. Application areas of artificial intelligence: problem solving, games and puzzles, expert systems, planning, learning, vision, and natural language understanding. Exercises in an artificial intelligence language.
Prerequisite: Consent of the instructor.
CMPE 491 Special Project in Computer Engineering (0+0+6) 3 ECTS 6
(Bilgisayar Muhendisliğinde Özel Proje)
Prerequisites: Senior standing in CMPE and consent of the instructor.
CMPE 492 Project (0+0+8) 4 ECTS 8
(Proje)
Prerequisite: Senior standing in CMPE.
CMPE 493-498 Special Topics in Computer Engineering I- VI (3+0+0) 3 ECTS 6
(Bilgisayar Muhendisliğinde Özel Konular I- VI)
Prerequisite: Consent of the instructor.