This course provides an elementary introduction to probability and statistics with applications. The topics of study include elementary probability theory, discrete random variables and probability distributions, continuous random variables and probability distributions, joint probability distributions, expected values, random sampling, parameter estimation, and hypothesis testing.

This course studies important principles and concepts of software engineering, as well as an overview of software development processes. Topics include software development processes, requirements and specifications of software, structured and object-oriented software design, software verification and validation, software project management, software evolution and maintenance, and computer-aided software engineering (CASE) tools.

Practical study related to 13016214 Software Engineering Principle

This course studies basic principles and concepts of operating systems. Topics include structures of operating systems, process management, processor scheduling, process synchronization, inter-process communication, semaphores and monitors, mutual exclusion, deadlock detection and prevention, memory management, virtual memory, file systems, I/O systems, secondary storage management, user account management, and operating system security. The course also studies and compares among important operating systems.

This course studies basic concepts of information systems and database systems, with emphasis on the study of relational database systems. Topics include basic concepts of information systems and database systems, types of data models, relational database design, entity-relationship models, normal forms of relational databases, and database query languages.

This course requires the students to attend seminars, lectures, and/or talks, given by invited speakers who are well-known in the software industry or in research and development in computing-related areas. The students are required to submit a written report summarizing what they have learned from each seminar.

This course provides a study of theories and techniques of algorithm design and analysis. For algorithm design, students will study a wide range of algorithmic solutions to problems from various application areas, including searching, sorting, optimization, and important problems in graph theory. In addition, important design paradigms will be covered including greedy methods, divide-and-conquer methods, dynamic programming, backtracking, and branch-and-bound methods. For algorithm analysis, students will practice analyzing the execution time and the resource consumption of algorithms, and related mathematical techniques.