School of Computer and Information Engineering

Through theoretical and practical lab courses designed to develop understanding of embedded computing system, software and hardware used in smartphones, the Department of Computer Engineering produces creative and globally competitive individuals who can lead the research and development in world’s computer engineering field. The Department offers a systematic educational program through its accredited engineering education system, ABEEK.

Location : Rm.505, Bima Hall

Tel : 82-2-940-5120

Fax : 82-2-940-5121

Website :

Course Descriptions


This course provides an introduction to ARM microprocessors. It uses assembly language to develop a foundation on the hardware, which executes a program. Memory and I/O interface design and programming. Study of microprocessor and its basic support components, including CPU architecture, memory interfaces and management, coprocessor interfaces, bus concepts, serial I/O devices, and interrupt control devices. Laboratories directly related to microprocessor functions and its interfaces.

Human Computer Interaction

This course is an introduction to Human-Computer Interaction (HCI), a discipline concerned with the design, evaluation, and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. It introduces theories of human psychology, principles of computer systems and user interfaces designs, a methodology of developing effective HCI for information systems, and issues involved in using technologies for different purposes. It is intended to give students an overview of the entire HCI field by covering most aspects of it.

Computer Architecture

In this course students will study the baric computer system architecture and its design concepts with examples of a simple RISC processor. They will learn several microprocessor architectures including single cycle processor, multi-cycle processor, pipelined processor, and multiprocessor. The course also provide knowledge for the three primary building blocks of general-purpose computing systems: processors, memories, and peripherals.This course is to provide a good foundation for students to understand modern computer systems and their microprocessor architecture and to apply these insights and principles to future computer designs. The course is the most important prerequisite to study the further technologies of computer hardware and software.

Signal and System

This course covers the fundamentals of the continuous and discrete time domain signal and system analysis based on time and frequency response, from their theoretical mathematical foundations to practical implementation in circuits and computer algorithms.The topics we'll cover in the course include basic properties of signals and systems, the processing of signals by linear time invariant systems, Fourier series and transforms, sampling, discrete-time processing of continuous-time signals.

Computer Architecture Lab

This course provide basic principles about coumputer operations including data trasnfer and storage, instruction set architecture, integer and logical computation, etc. in conjuction with the computer architecture course. The principles are implemented and tested using verilog hardware design language.

Assembly Language Programming

Assembly language is a low-level programming language for a microprocessor in which a strong correspondence between the language and the microprocessor’s machine code. In this course, ARM processor’s assembly programming language is used for lecture and design projects.

Digital Logic Design 1

Basic theory and design technologies for designing a digital circuit are dealt in this course. The behavior of a digital circuit can be specified by using logic equations. Both combinational and sequential circuit design topics are covered.

Digital Logic Design 2

Based on the design theory and technologies learned in Digital Logic Design 1, more complex digital circuits, mainly basic building blocks of a microprocessor, are implemented by using a hardware description language Verilog. Design and implementation procedures of a digital system are rigorously practiced.

Electric Circuit Theory

Circuit analysis techniques for an electrical circuit composed of resistors, capacitors, and inductors are covered. The underneath principle of various electrical properties such as delay time and power consumption of a digital system can be understood in depth after taking this course.

Basic Computer Engineering Lab1

Digital and analog circuits are designed and implemented in the Lab. by using discrete chips and components on a bread board. The behavior of such circuits are analyzed and verified by using various elecrical equiments including oscilloscope, multimeter, power supplies, etc..

Basic Computer Engineering Lab2

Basic building blocks of a microprocessor are designed and implemented in the Lab. by using hardware description language Verilog on a computer.

Seminar for Computer Engineering Beginners

For the first year students in the School of Computer and Information Engineering, a general overview of the School is provided. The research areas and course schedule are introduced. Various activities including conversation with professors and alumni are designed to enhance students’ sense of belonging to the School.

Data Structure

This course covers fundamental data structures and algorithms: trees, binary search trees, performance analysis, heap, selection trees, AVL trees, multiway search trees, graphs, disjoint sets, shortest paths, sorting, and hashing.

Data Structure Lab.

This course covers implementation of data structures and algorithms: trees, binary search trees, heap, selection trees, AVL trees, multiway search trees, graphs, disjoint sets, shortest paths, sorting, and hashing.

Database Application

This course covers fundamentals of database systems and database applications: E-R models, relational models, SQL, database design issues using functional and multivalued dependencies, join algorithms, indexing and hashing, recovery, and security.

Software Engineering

This course covers fundamentals of software engineering: software processes, agile software development, requirements engineering, system modeling, architectural design, design and implementation, software testing, and software evolution.

Computational Thinking

This lecture provides introduction of computer and its applications. Basic structure of computer and its basic programming will be addressed with practical examples.

Advanced C Programming

This course covers advanced programming and design using C language addressing pointer, multivariate array, structure, dynamic memory allocation and linked list. This curriculum can provide a structural thinking in programming and design.

Circuit Theory

This course addresses fundamental principles and theory about electric circuit including basic circuit components. In addition, learning and analysing circuit can provide engineering thinking and problem solving skill.

Machine Learning

This course addresses concepts and principles of machinen learning and several machine mahcine learning algorithms. Particularly, learning process of the algorithms will be provided in terms of supervised and unsupervised way. Statistical machine learning algorithms and neural network are the main topic in this course.

Object-Oriented Programming and Lab

Basic Object-Oriented Programming (OOP) concepts, including objects, classes, methods, parameter passing, information hiding, inheritance, polymorphism, and template are introduced and their implementations using C++ are covered. Students will develop skills to use object-oriented method of software development using C++. Students are requested to have basic knowledge on programming using C. Teaching assistants will provide more detail skills to solve assignments and projects in the experiment course.

C programming

This course will provide an introduction to the C programming language and it usage. After attending this course a student will have acquired the basic skills in programming in C. Topics covered in this introductory course include data types, operators, branching, looping control statements, making user defined functions, and basic knowledge on array and pointer.