**CP15778 Problem Solving Technics (2)**

This course teaches the ability to solve given problems. Specifically, when a problem is given, students will develop the ability to analyze the problem and, on the basis of analysis results, to solve the problem.**CP15402 C Programming (3) **

This course introduces the basic and the high-level features of C language, one of the most popular programming languages. C is a high-level language but also contains low-level features which enable controlling the computer hardware. The execution speed of the compiled C program is also a strong point of C. However, C contains some tricky issues such as pointers and arrays. This course also explains these issues in detail.**CP11038 Electrical Circuits (3) **

In this class, as a basic curriculum of computer engineering, we learn the diverse techniques for electrical circuit analysis after understanding the characteristics of the basic circuit elements such as resistor, capacitor, and inductors.**CP15635 Discrete Mathematics(I) (3) **

Provides mathematical backgrounds of computer science. Topics include counting, logic, predicate calculus, set theory, relations, functions, and algebraic system. For each topic, the lecture goes through the rigorous process of definition, theorem, and proof. Many example problems are given for deeper understanding of the basic concepts and for enhancing the problem-solving ability.**CP24106 C++ Programming (3) **

This course introduces object-oriented concepts including classes, inheritance, method, and method overriding. This course also introduces how to define a user-defined data type using classes. Also, it explains some basic features of C++ including method overloading, operator overloading, copy constructors, friend functions, and friend classes. This course also introduces some advanced features of C++ such as templates and exception handling.**CP15653 Engineering Mathematics (3)**

The course introduces various methods of solving of ordinary differential equations. The students will learn how to integrate the first-order and secord-order equations, how to construct a characteristic equation for linear differential equations, and how to use the Laplace transform, the power series and the Fourier series in the context of differential equations.**CP20329 Elementary Electrical & Electronic Circuit Lab (2) **

We learn directions of electronic measurement equipment such as oscilloscope, digital multimeter, and signal generators. Through experiments, we confirm and verify electrical and electronic circuit theory in this class. Fundamentals and design technique of basic electrical and electronic circuit will also be learned.**CP26023 Probabilities and Statistics (3) **

This course introduces basic concepts and theories on Probability and Statistics. While the subject is fundamentally mathematical, theoritical, we will focus more on practice rather than theory itself. Toward this end, many engineering application examples in computer science and telecommunication domain shall be introduced and analyzed. In addition, students shall be instructed to utilize MATLAB,a famous and useful computer software in solving mathematical problems.**CP26101 Logic Design (3)**

This course provides knowledge and understanding to sophomores in digital logic design concepts, with concentration on the analysis and design of combinational and sequential logic networks. Furthermore, it also provides a foundation for subsequent study in computer architecture, and VLSI design.**CP24108 System Software (3)**

The goal of this course is to cover assembly language, assembly programming, various basic principles and design/implementation methodologies of computer system software. The course will provide students with the understanding of machine language, assembler, loader, operating system algorithms and system software development methodologies.**CP21697 Discrete Mathematics(II) (3)**

Three advanced topics in discrete mathematics, graph theory, automata theory, and number theory, are studied in this course. Each theory will be introduced with practical examples being related to applications in the field of computer science and engineering. The students are expected to enhance their ability of modelling discrete objects and verifying the models through mathematical proving process. The prerequisites are the fundamentals of discrete mathematics such as principles of counting, logics, set theory, relations, and functions, which are primarily introduced in the course of discrete mathematics (I).**CP20330 Data Structures (3)**

Data structure make students understand the details of how efficient data structures are implemented and analyzed, moreover this course emphasize low-level implementation details and rigorous complexity analyses of operations on data structures.**CP26778 Logic Circuit design & Lab (2) **

The course covers experiment about logic circuit design. It covers experimental logic circuit design using schematic editor, simulation and debugging using HDL simulator.**CP26044 Operating Systems (3)**

The goal of this course is to analyze conventional operating systems, to understand the basic components of operating system such as memory management, process management, and file systems, and to cover the internal operations of operating systems.**CP26779 Computer Software Design & Lab (2) **

This course enables students to understand the purpose and skills of XML usage in an Internet environment, to learn distributed internet application system environment by utilizing Web services and UCC(User Created Contents) environment, and finally. Students are encouraged to design and implement internet application systems.**CP26139 Computer Architecture(I) (3) **

Study basic knowledge about computer systems in general including CPU, memory system, I/O device, and bus. Study cache, internal & external memory, interconnection mechanism, computer arithmetic and CPU structure. Also study RISC based CPU structure and control units of RISC and CISC systems.**CP26105 Programming Language principles (3) **

This course will teach students about the development history of programming language, characteristics of programming language construct, methods of defining programming language grammar and semantics, environmental factors supporting programming language, and it will emphasize the requirements on programming language from a software engineering aspect. We will survey and compare the characteristics of important programming language. This course will also cover the concept of "safe" program in order to help student to understand the environmental changes of programming focused on internet.**CP26780 Computer Hardware Design & Lab (2) **

Design a network interface card and a device driver for communication between PCs. Implement an ARM-based embedded system board including CPU, memory, and I/Os. Develop an application program based on the network interface card.**CP29781 Applied Computer Design & Lab (2) - Hardware Track**

Throughout the course students will understand the embedded system architecture and embedded software development environments, and will study the hardware architecture including embedded processors. By Experiencing the design and implementation of device drivers, and by performing design projects using the experiences, students will acquire the practice skill and ability for embedded system engineers.**CP29781 Applied Computer Design & Lab (2) - Software Track **

In this course, we study various software development methodologies. To do this, we organize project teams and do software development lifecycle systematically from eliciting requirements to implementing software systems**CP26970 Computer Capstone Design (2) - Hardware Track**

This laboratory course provides the design experience of modern very large scale integrated circuits. The students in the course will design a fully working microcontroller using Verilog language, and implement it in FPGA on prototyping board.**CP26970 Computer Capstone Design (2) - Software Track**

In this course, we do the cap-stone design to solve the real world problems in the computer engineering points of view. To do this, we propose real-world problems and suggest a solution to the problems by computer engineering knowledge. We organize project teams and also study teamwork during software development project.**CP20328 Digital Electronic Circuits (3)**

In this class, we study fundamentals and directions of basic electronic elements such as diodes, transistors, op-amp, and logic-gates. Then, we develop ability of analysis and design techniques of electronic circuits.**CP24109 UNIX Systems (3)**

This course presents the fundamental concepts for UNIX operating system and provides an advanced programming technique in the UNIX environment. This is also an advanced course in UNIX system facilities. Besides, this course is almost prerequisite for the operating systems course, in that it provides hands-on experience with such facilities as signals, semaphores and file locks. Familiarity with the C language is assumed.**CP24973 Object-Oriented Programming (3)**

The course focuses on developing various application software based on object-oriented techniques and Java. The course covers object-oriented programming techniques such as classes, inheritances, and interfaces. In addition, advanced topics including Swing, JDBC, JSP, RMI, and XML will be covered for developing large scale enterprise applications.**CP26783 Applied Mathematics for Computer Science (3)**

Applied mathematics and computing is the study to be used for a variety of fields related to numerical computation and mathematics in computer science. This course addresses work at the basic concepts of applied mathematics and computing using matlab which is a numerical computing environment and programming language to implement applications of applied mathematics and computing.**CP24147 Internet Application Programming (3)**

This course provide students with an understanding Internet technologies. Students improve problem solving skills based on HTML, XML, JavaScript, Web Server, C++, and so on. As a team project, students work in groups to design and implement of an Internet application.**CP24149 Data Communications (3)**

This course covers the basic technique of computer communication, such as data communication principles, transmission media, data encoding, interface, switching methods, ATM, frame relay, LAN, wireless LAN, and the various protocols for computer communication**CP26214 Automata (3)**

The goal of the course is to introduce the basics of automata and formal languages and their applications in computer science.

You will learn finite automata, other typer of automata, basics of formal language theory, the Chomsky hierarchy of formal languages, context-free languages and applications.**CP20332 Computer graphics (3)**

This course will cover basic principles of interactive computer graphics using OpenGL, the most common graphics language API. The subjects include fundamental concepts, geometric transformation. raster graphics, color models, anti-aliasing and texture mapping, image-space manipulation methods. Then a few advanced subjects such as 2D, 3D homogeneous coordinates, image morphing and its application perspective projection, illumination models, hidden line elimination will be discussed. To help student understand the advanced features of graphics, we also teach how to use 3D max in order to render a simple animation. The prerequisites are Data Structure, C/C++ programming and basic mathematics. More than 18 programming assignment will be given including 3D max.**CP20333 File Structures (3)**

The goal of this course is learning the fundamental concept and operational principles of the file structure. Through this course, students learn the design and implementation of any file structure; and the way to analyze and evaluate them. Finally, the index structure will be treated, too.**CP24150 Databases (3)**

This course teaches the concepts, theory, design and implementation techniques of database systems. Specifically, this course teaches the basic concepts, a relational data model, SQL (Structure Query Language) and the basic principles and techniques of database design. Students experience the database theory by doing exercises using Oracle.**CP26050 Software Engineering (3)**

In this course, we define what is meant by software engineering, and discuss the knowledge in the most effective way to produce high-quality software systems. This course covers software process model, specification and design techniques including object-oriented method, program verification and testing techniques, and project management, etc.**CP24974 Embedded Systems (3)**

This course explores system-on-chip designs based on microprocessor cores, fundamental concepts of design of microprocessor cores, and detailed design methodologies.**CP23606 Compiler (3)**

This lecture provide students with an introduction to compilers and an understanding of the major phases of a compiler. Students learn the theory behind the various phases and the techniques for implementation of compilers. Also, students complete a project involving design and implementation of a compiler. Topics include lexical analysis, syntactic and semantic analysis, top-down, bottom-up parsing techniques, and code generation and optimization.**CP26223 Computer Networks (3)**

This course is an introductory course to computer networks, which emphasizes the performance and engineering tradeoffs in the design and implementation of computer networks. The goal is for students to learn not only what computer networks are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. Topics to be covered include: network security, TCP/IP including congestion/flow/error control, routing, IP addressing, multicasting, multimedia application protocols including RTP and RTCP, overlay networks including P2P, and content distribution networks.**CP20337 Computer Algorithms (3)**

Studies important algorithms used for solving problems efficiently by using the computer and cultivates the ability for algorithm analysis and design. Topics include the principle and techniques for the analysis of complexity on the worst-case and average-case behavior of algorithms, efficient algorithms for sorting and searching, graph optimization, string matching, methodologies for algorithm design such as divide-and-conquer and dynamic programming, the concept of NP-completeness.**CP26219 VLSI System Design (3)**

This course introduces the design of modern very large scale integrated circuits to seniors. It covers the whole spectrum from hardware description language through register transfer level design and system design to CMOS transistor, and promotes the associated tools for computer aided design.**CP24975 Software Systems Design (3)**

Based on the fundamental techniques covered in software engineering, this course focuses on practical techniques and problem solving capabilities. Specific topics include design patterns, software reverse engineering, refactoring, and software testing.**CP26784 System Program Design (3)**

This course introduces the basic concept of the designing system programs. Throughout the course several kernel device-driver modules will be written using the Open Source Linux operating system environment, and customized extensions to the operating system kernel will be studied.**CP21845 Artificial Intelligence (3)**

Introduces computational models for implementing intelligent systems. Studies principles and applications of various techniques including search algorithms, reasoning, knowledge representation, uncertainty, Bayesian networks, and machine learning**CP26152 Computer Architecture(II) (3)**

Study RISC based processor design concept in detail from data path to control. Also study various computer performance enhancement techniques with pipelining, by exploiting memory hierarchy, and by utilizing multiprocessor structures.**CP24158 Computer Security (3)**

This class provides the practical overview of network security as well as the fundamental theory of the cryptography such as DES, RSA, and message authentication code. Students shall catch basic issues related to the cryptography and security through extensive research on tutorials and investigation reports. Also, they deal with various useful applications and tools for network security in practical networks.**CP20338 Introduction to Computer Vision (3)**

Computer vision is the study of how computers can be programmed to extract useful information about the environment from optical images such as photographs or frames of video. This course addresses an elementary information about computer vision with assignments and examples to make out the concepts and theories of computer vision.**CP24154 E-Business Management (3)**

This course introduces basic concepts and practices for understanding and practicing techniques for implementing E-business. This course covers several types of e-business systems and discusses candidate technologies for implementing e-business systems.**CP24155 Network Programming (3)**

This course is designed to extend the students' knowledge and practice in analysis and design of computer networks, by focusing itself on computer network programming. C language and Linux platform shall be used throughout the course for programming. Some advanced topics, such as network programming for embedded system are also introduced in this course. To be able to complete this course, a student should have both sufficient knowledge about computer networks, especially the Internet, and some good programming skills in C.**CP24156 Multimedia Processing (3)**

The goal of this course is to cover the basic concepts of multimedia, the representation of audio and video data by the standards, the compression of multimedia data, storage system, multimedia communication and distributed multimedia, and streaming and server techniques.**CP24976 Mobile Computing (3)**

Students shall learn various mobile wireless communication technologies, e.g., WLAN, WiBro, and Bluetooth, through this class. They will investigate a lot of international standards and handle a variety of useful tools like the NS-2 simulator for wireless networking. In addition, they will get experience in the development of embedded system software through WinCE and TinyOS programming.**CP26785 Distributed Computing Systems (3)**

Distributed computing is a method of computer processing in which different parts of a program are run simultaneously on two or more computers that are communicating with each other over a network. In this class, we study the basic concepts of distributed computing technology, including communication models, distributed process models, synchronization, distributed architectures, distributed databases, and new challenges for distributed computing like ubiquitous computing.**CP26786 Intelligent Systems (3)**

Cultivates the system design and implementation capability by practicing to recognize real-world problems that should be solved by applying the artificial intelligence methods, to formalize them, and to solve them. Goes through an entire procedure of system development; proposal, system design, progress report, final report, presentation, and demonstration of the results.