COMP 106 / DISCRETE MATHEMATICS FOR COMPUTER SCIENCE AND ENGINEERING
Kredi: 3Önkoşul:

An introductory course covering: Logic, formal reasoning, propositional ?logic, sets, growth of functions, algorithmic complexity, number theory, mathematical induction, ?combinatorics, recurrence, generating functions, relations, graphs, and models of computation.

COMP 110 / INTRODUCTION TO COMPUTER PROGRAMMING WITH MATLAB
Kredi: 3Önkoşul:

COMP 110 is a first course in computer programming. The objective is to introduce the principles of computer programming and algorithm development using Matlab, with particular emphasise on scientific computation and data processing. Topics covered include basic computer literacy and organization; variables, operators, expressions, data types, arrays, matrices; conditional and repetition control statements; modular programming, built-in and user-defined functions; string manipulation; text and binary file processing; structures; debugging; data plotting and visualization; graphical user interfaces.

COMP 130 / INTRODUCTION TO PROGRAMMING (JAVA)
Kredi: 3Önkoşul:

This course is a general introduction to programming using the Java programming language. It emphasizes the structured programming language aspects of Java and de-emphasizes its object-oriented aspects. The latter are covered only to the extent that enables students to use standard Java libraries for common tasks. Students who complete this course successfully should gain a solid foundation in algorithmic thinking and structured programming, and should be able to perform basic, common computational tasks easily and efficiently.

COMP 131 / INTRODUCTION TO PROGRAMMING
Kredi: 3Önkoşul:

Introduction to imperative programming. Compiling and executing programs. Control statements: Conditional, branching and looping constructs. Methods and functions. Recursion. Basic algorithmic techniques. Arrays. Abstract Data Types, Classes, Objects. Inheritance. Strings and Characters. Iteration. Packages. Access and Visibility Control. Exceptions and Exception Handling. Files and Streams. Selected standard packages and utilities. Introduction to Graphical User Interfaces.

COMP 132 / ADVANCED PROGRAMMING
Kredi: 3Önkoşul: Prerequisites: COMP. 131 or Comp 130 or consent of the instructor

Advanced programming techniques and large scale programming. Inheritance and Type Hierarchies. Polymorphism. Object-oriented Programming. Code reuse. Graphical User Interfaces. Advanced class and template libraries. Introduction to low-level languages. Pointers and references. Resource management: Dynamic storage allocation, memory management. Virtual functions.

COMP 200 / STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
Kredi: 3Önkoşul: Prerequisites: COMP. 106 or consent of the instructor

Introduction to core software engineering concepts. Control of complexity in large programming systems. Building abstractions with procedures and data. Modularity, objects and state. Machine models, compilers and interpreters. Concurrency.

COMP 202 / DATA STRUCTURES&ALGORITHMS
Kredi: 3Önkoşul: Prerequisites: (COMP. 106 or COMP. 201) and (COMP. 130 or COMP. 131)

Basic data structures, algorithms, and their computational complexity. List, stack, queue, priority queue, map, tree, balanced tree, hash table, heap, skip list, trie, graph. Basic search, selection, sorting, and graph algorithms. Recursion.

COMP 230 / C PROGRAMMING FOR SOLVING ENGINEERING PROBLEMS
Kredi: 3Önkoşul:

Engineering problem solving and design using C programming language. The course will cover basic syntax/grammar and concepts of C programming language, including control flow, functions and modular programming, static and global variables, pointers and memory addressing, arrays and pointer arithmetic, strings and searching and sorting, followed by example engineering analysis and design problems, including electric circuit analysis, digital signal processing, machine learning, finance, and data analysis.

COMP 291 / SUMMER PRACTICE I
Kredi: 0Önkoşul: Prerequisite: ACWR 101

A minimum of 20 working days of training in an industrial summer practice program after the completion of second year. The training is based on the contents of the "Summer Practice Guide Booklet" prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.

COMP 301 / PROGRAMMING LANGUAGE CONCEPTS
Kredi: 3Önkoşul: Prerequisite: COMP. 200

Programming languages (i.e. C++, Java, Ada, Lisp, ML, Prolog), concepts and paradigms. Syntax, semantics. Abstraction, encapsulation, type systems, binding, run-time storage, sequencers, concurrency, control. Providing examples from functional, object-oriented and logic programming paradigms.

COMP 302 / SOFTWARE ENGINEERING
Kredi: 3Önkoşul: Prerequisite: COMP 132, COMP. 202 or consent of the instructor

Review of methods and tools used in software development. Object oriented design and open software architectures. Requirements analysis, design, implementation, testing, maintenance and management. Engineering applications.

COMP 303 / COMPUTER ARCHITECTURE
Kredi: 3Önkoşul: Prerequisite: ELEC. 204 or consent of the instructor

Hardware organization of computers. Computer components and their functions. Instruction sets, instruction formats and addressing modes. Pipelining and pipeline hazards. Instruction level parallelism. Assembly and machine language. Data and control paths. Computer arithmetic. Floating point representation. Memory hierarchy, cache organization and virtual memory. Parallel architectures.

COMP 304 / OPERATING SYSTEMS
Kredi: 3Önkoşul: Prerequisite: (COMP. 132 and COMP. 303) or consent of the instructor

Introduction to operating systems concepts, process management, memory management, virtual memory, input-output and device management, file systems, job scheduling, threads, process synchronization, deadlocks, interrupt structures, case studies of operating systems.

COMP 305 / ALGORITHMS&COMPLEXITY
Kredi: 3Önkoşul: COMP 202

Advanced topics in algorithms, and their computational complexity. Amortized complexity analysis. Randomized algorithms. Greedy algorithms. Dynamic programming. Linear programming. Advanced graph algorithms. Turing machines and models of computation. NP-completeness reductions.

COMP 306 / DATABASE MANAGEMENT SYSTEMS
Kredi: 3Önkoşul: Prerequisite: COMP. 202 or consent of the instructor

Introduction to database management systems, file structure, organization and processing, sequential files, direct files, sort/merge, indexed and hash files, relational data model, logical database design, entity-relationship data model, data description and query languages.

COMP 317 / EMBEDDED SYSTEMS
Kredi: 3Önkoşul: Prerequisite: ELEC. 204 or consent of the instructor

Microcomputer fundamentals including architecture and operation of a typical microprocessor; bus organization; instruction set; addressing modes; analysis of clocks and timing; interrupt handling; memory (RAM and ROM); DMA, serial and parallel input/output; assembly language programming.

COMP 319A / MOBILE DEVICE PROGRAMMING-ANDROID
Kredi: 3Önkoşul: Prerequisite: COMP. 202 or COMP. 132 or consent of the instructor

This course covers programming environments and languages over mobile devices. Mobile device architectures and environments, MIDP Application Model, User Interface Libraries, High Level User Interface Components, Low Level User Interface Libraries, MIDP Persistance Libraries. Mobile device operating system environments. Operating Systems such as Symbian, Android, Mobile Windows.

COMP 341 / INTRODUCTION TO ARTIFICIAL INTELLIGENCE
Kredi: 3Önkoşul: Prerequisite: ENGR 200 or 201 or MATH 201 or 211 or MATH 202

Introduction to artificial intelligence concepts; agent based thinking; uninformed and informed search; constraint satisfaction; knowledge representation; logic; introduction to machine learning and its relation to artificial intelligence; representing uncertainty; markov decision processes; examples from vision, robotics, language and games.

COMP 350 / SELECTED TOPICS IN COMPUTER ENGINEERING
Kredi: 3Önkoşul:

COMP 351 / SELECTED TOPICS IN COMPUTER ENGINEERING
Kredi: 3Önkoşul:

COMP 390 / INDEPENDENT STUDY
Kredi: 3Önkoşul:

Investigation of one or more topics of interest with the guidance of an instructor. Presentation of a research proposal at the end of the term.

COMP 391 / SUMMER PRACTICE II
Kredi: 0Önkoşul: Prerequisite: COMP 291 and ACWR 106-102-103-104-105-107

A minimum of 20 working days of training in an industrial summer practice program after the completion of third year. The training is based on the contents of the "Summer Practice Guide Booklet" prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.

COMP 404 / DIGITAL SPEECH AND AUDIO PROCESSING
Kredi: 3Önkoşul: Prerequisite: ELEC. 201 or consent of the instructor

Sound and human speech systems, phonetics and phonology, speech signal representations, role of pitch and formants, pitch-scale and time-scale modifications, basics of speech coding and VoIP systems, fundamentals of pattern and speech recognition, search algorithms for speech recognition.

COMP 408 / COMPUTER VISION AND PATTERN RECOGNITION
Kredi: 3Önkoşul: Prerequisite: ELEC. 201 or consent of the instructor

Study of computational models of visual perception and their implementation in computer systems. Topics include: image formation; edge, corner and boundary extraction, segmentation, matching, pattern recognition and classification techniques; 3-D Vision: projection geometry, camera calibration, shape from stereo/silhouette/shading, model-based 3D object recognition; color texture, radiometry and BDRF; motion analysis.