Introduction to analysis of correctness and complexity of selected algorithms. Study of algorithmic paradigms including divide and conquer algorithms, greedy methods, dynamic programming, heuristics, and probabilistic algorithms. Study of analysis of complexity of recursive algorithms and NP complete problems. Topics covered include language representation, control structures, binding, run-time environment, exception handling, information handling, encapsulation and static and dynamic types. Various database models such as relational, network, hierarchical, object oriented, distributed are discussed with an emphasis on the relational database model.
Students apply the theory to the development of an actual database application.
Topics include software development models and phases, requirement analysis, architectural design, quality control and testing, documentation maintenance and management. Batch, interactive and distributed operating systems will be considered. Other topics include multiprogramming, multiprocessing, concurrent programming, memory management, and resource allocation. This courses covers issues in compiler design and construction. The course name and the appropriate prerequisites will be announced in advance.