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 224 Data Structures and Algorithms II (3+0+0) 3 ECTS 5
(Veri Yapıları ve Algoritmalar II)
Continuation of CMPE 223.
Prerequisite: CMPE 223.
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 235 Operating Systems and Their Use (1+0+4) 3 ECTS 7
(İşletim Sistemleri ve Kullanımı)
Introductory operating system concepts. DOS, Windows, NT, Unix. Exercise in operating systems.
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 415 Theory of Computation (3+0+0) 3 ECTS 6
(Hesaplama Kuramı)
Basic concepts of computation. The theory and representation of algorithms and models of computation. Computability and recursive functions. Formal specification and proofs of programs. Automata theory.
Prerequisite: CMPE 220.
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 441 High-Level Digital Design (3+0+0) 3 ECTS 6
(İleri Düzey Sayısal Tasarım)
Programmable logic devices. Levels of abstractions in digital design. Basic processes in behavioral synthesis. Description of a digital system for behavioral synthesis using a hardware description language. Development of test-benches using a hardware description language. Design re-use. Reconfigurable computing. Case studies: Digital design of some well-known digital signal processing and encryption algorithms using behavioral descriptions.
Prerequisite: Consent of the instructor.
CMPE 444 Microprocessor-Based System Design (3+0+4) 4 ECTS 6
(Mikroişlemciye Dayalı Sistem Tasarımı)
Microcomputer hardware organization. Understanding and comparison of microprocessor architecture. Interfacing of microprocessors. Monitor program. Assembly language programming. Hardware and software development aids. Laboratory experiments and applications of microprocessor based systems and single board microcomputer systems.
Prerequisite: CMPE 344.
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 448 Multi-Core Programming (3+0+0) 3 ECTS 6
(Çok Çekirdekli Programlama)
Introduction to parallel and multi-core computer architectures. Parallel processing concepts. System overview of threading. POSIX, OpenMP and Threading Building Blocks multi-threading programming interfaces. Graphics Processing Unit (GPU) programming. Tools for debugging and performance analysis.
CMPE 455 Programming Methodologies (3+0+0) 3 ECTS 6
(Programlama Metodolojileri)
Comparative study of functional, logic, and object oriented programming methodologies and programming languages. Case study: programming in a logic, functional or object-oriented programming language.
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 461 Human Computer Interaction (3+0+0) 3 ECTS 5
(İnsan Bilgisayar Etkileşimi (İBE))
Human factors, human computer interaction (HCI) theories, principles and guidelines; designing user interfaces, software design methodologies, evaluating user interfaces, interface design tools.
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 463 Data Mining (3+0+0) 3 ECTS 6
(Veri Madenciliği)
Relationship between databases, data warehouse, data mining, and machine learning. Data preprocessing and cleansing. Knowledge representation; association mining, segmentatinon, feature exraction, classification and regression. Case studies: Basket analysis and credit risk scoring.
Prerequisite: Consent of the instructor.
CMPE 464 Image Processing for Computer Graphics (3+0+0) 3 ECTS 6
(Bilgisayar Grafiği için İmge İşleme)
Relationship of computer graphics and image processing. Introduction to signal theory: sampling, transforms. Image sampling and aliasing. Fundamentals of color. Color representation and display systems. Color quantization and image compression. Digital halftoning. Filtering, edge detection, image enhancement. Image composition. Warping and morphing.
Prerequisite: Consent of the instructor.
CMPE 465 Computer-Aided Design and Manufacturing (3+0+0) 3 ECTS 6
(Bilgisayar Destekli Tasarım ve Üretim)
Computer-aided design: hardware, computer graphics and graphics databases. Numerical control: NC part programming, computer control in NC. Robot technology and applications. Group technology and computer-aided process planning. Computer integrated production management: production planning and control, inventory management and MRP, shop floor control and process monitoring. Computer control: computer process interfacing, computer process control, computer-aided quality control, computer-integrated manufacturing.
Prerequisite: Consent of the instructor.
CMPE 468 Multimedia Computing (3+0+0) 3 ECTS 6
(Çokluortam Hesaplama)
Multimedia system applications and problems. Fundamentals of multimedia signal processing. Issues in effectively representing, processing, retrieving and compression of multimedia data such as text, graphics, sound and music, image and video.
Prerequisite: Consent of the instructor.
CMPE 470 Computer Performance Evaluation (3+0+0) 3 ECTS 6
(Bilgisayar Performansı Değerlendirmesi)
Nature of computer performance evaluation. Job processing models. Analytical techniques. Simulation. Management and control of system hardware and software resources. Performance of multiprocessing systems.
Prerequisite: Senior standing in CMPE.
CMPE 471 Information Systems Security (3+0+0) 3 ECTS 6
(Bilişim Sistemlerinde Güvenlik)
Principles and underlying concepts for security policy setting and for management of information security. Fundamental security principles: confidentiality, integrity, availability. Principles of information systems analysis for security; concept of analysis, basic features of information systems, semiotic model. Principles of policy for security. Principles of risk and contingency; risk analysis and risk management. Nature of responsibility and policy in the management of security. Role of cryptography in secure systems. Secure payment systems: SET, digital certificates, trusted third parties. Case studies.
Prerequisite: Consent of the instructor.
CMPE 472 Fundamentals of Electronic Commerce (3+0+0) 3 ECTS 6
(Elektronik Ticaretin Temelleri)
A critical review and analysis of electronic commerce with emphasis on multidisciplinary aspects and team projects. Technology infrastructure for electronic commerce. Internet-based businesses. Economics, business and technical models of the Internet. Internet security. Social, legal, ethical and public policy issues of the Internet. Business plan creation and a prototype for an Internet-based operation.
Prerequisite: Consent of the instructor.
CMPE 473 Internet Programming (3+0+0) 3 ECTS 6
(İnternet Programlama)
WWW-Application-Database server architectures. WWW-based applications. Client side and server side programming. Personalization. Network programming. Database connectivity. Java programming. XML.
Prerequisite: Consent of the instructor.
CMPE 474 Introduction to Satellite and Space Communications (3+0+0) 3 ECTS 5
(Uydu ve Uzay İletişimine Giriş)
Introduction to satellites and space systems. Satellite communication systems, interplanetary Internet. Satellite applications and services, direct video broadcast (DVB). Satellite network principles. Satellite communication systems design. Algorithms in satellite networks.
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.