## Current Courses

## Previous Courses

## Software Experiment 4: Web Programming

This course is an introduction to programming for the World Wide Web. We will cover all the major pieces of how websites work. This will include the relationship between clients and servers, how web pages are constructed, and how the internet works. We’ll examine several technologies in depth:Hypertext Markup Language (HTML) for authoring web pages, Cascading Style Sheets (CSS) for styling web pages, JavaScript for creating interactive web pages, Asynchronous JavaScript and XML (Ajax) for enhanced web interaction and applications, JSON for transferring data, JSP/PHP for generating dynamic pages on a web server, Structure Query Language (SQL) for interacting with databases

## Design and Analysis of Computer Algorithms

This is a fundamental and important course for undergraduate students with prior knowledge of C and Data Structures. This course provides significant basic concepts of computer science and engineering, the philosophy behind the theory, and actual applications to real world. During the course students can learn the design of advanced data structures, the techniques for designing and analyzing the efficiency of algorithms, the methods of obtaining efficient algorithms. The main purpose of this course is to introduce key algorithms which are essential for solving computeroriented problems, and techniques for easier creation of other efficient algorithms. We cover advanced techniques behind data structures for analyzing upper and lower bounds for many essential algorithms in this area. Problems discussed during the semester include sorting, searching, advanced data structures, dynamic programming, divide-and-conquer method, greedy methods, graph algorithms, and maximum flow problem.

## Computer Networks

Students develop a thorough understanding of foundation principles, architectures, and techniques employed in computer networks, and a new paradigm of Software Defined Networking (SDN). A network is viewed as a hierarchy of layers, or abstract machines. Each layer uses services offered by lower layers to in turn provide enhanced service to the next higher layer. These layers form a protocol suite. The focus is on protocols and mechanisms used in the Internet’s TCP/IP protocol suite, including the design and operation of both wide-area and local-area networks.

## Operating Systems

This course conforms with the IEEE/ACM recommendation for the undergraduate operating system class. The lectures and homework assignments will be a mixture of theory and practice, providing you with a sound background in operating systems for future study and to help you prepare for a professional programming position in industry. You will learn how to make effective use of operating system features and functions, and how an operating system is designed.

## Data structures

One of the most important entry level courses for computer science and engineering major students. Design and analysis of data structures are discussed in terms of the efficiency for better programming. The purpose of this course is to introduce data structures which are essential for solving computer-oriented problems, basic principles, and techniques for easier creation of efficient algorithms. Classical data structure design techniques are mostly discussed. Sorting, searching, trees, graphs and other operations on them include arrays, stacks, (circular) queues, linked lists, hash tables, trees, graphs, and strings.

## Programming in C / Unix

This course is intended for students who wish to develop their C programming skills based on MS Windows and Unix/Linux. It can be taken by students with little or no prior experience of programming; however, most students will have some previous computing experience.

## Theoretical Computer Science

This class is intended to give you the theoretical foundation necessary to effectively research topics in computer science. Selected topics include automata theory and formal languages, predicate logic, computability, and complexity theory. The prerequisites for this class include linear algebra, and probability/statistics, or consent of the Graduate Advisor.

## Advanced Engineering Mathematics II

Fourier series to represent periodic, non-sinusoidal waves as trigonometric series. Some of the properties and applications of Fourier series for a periodic non-sinusoidal input signal in electrical circuit, signal processing, and semiconductor devices. Fourier integrals and transforms for the analysis of non-periodic and non-sinusoidal signals. Define a complex number and expand to complex functions and their regions in the complex plains. Cauchy-Riemann equation. Concept of mapping and Cauchy’s integral theorem. The valuable characteristics of Taylor, power, and Laurent series. More applications of the residual integration method in evaluation of real integrals.

## UNIX System Programming

UNIX Operating System is the one of the most important and useful OSs in this area. This class is designed to give you firm basis of UNIX system especially shell section. Topics covered in this class are UNIX system basics, Command shells, UNIX file system, Managing your files, Utilities, Text file utilities, vi editor, Bourne shell programming languag, AWK programming language, window system, networking, and LAN networking utilities.

## Discrete Structures

This class is intended to provide you clear entry-level explanations of basic topics such as predicate logic, program verification, and recursion to effectively study higher level computer science courses. Selected topics include Formal logic, Proofs, Recursion, Analysis of algorithms, Sets and Combinatorics, Relations, Functions, Matrices, Graphs, Trees, Graph algorithms, Boolean algebra, Computer logic, Algebraic structures, Finite-State Machines, and Formal languages.

## Programming in JAVA

This course is an introductory course to Java Programming. It teaches students with little programming experience how to program in an object oriented manner with Java programming language. Topics include introductory object oriented programming, algorithmic thinking, problem solving, develop Java Application, Java Applet and Java Swings, control structures, methods, arrays, object-based programming, object oriented programming, and strings objects. Basic HTML World Wide Web programming will also be discussed.

## Computer Networks

Students develop a thorough understanding of foundation principles, architectures, and techniques employed in computer networks, and a new paradigm of Software Defined Networking (SDN). A network is viewed as a hierarchy of layers, or abstract machines. Each layer uses services offered by lower layers to in turn provide enhanced service to the next higher layer. These layers form a protocol suite. The focus is on protocols and mechanisms used in the Internet’s TCP/IP protocol suite, including the design and operation of both wide-area and local-area networks.