CS510
Analysis and Design of Algorithms
Pre-req: CS310 (Analysis of Algorithms)
This course introduces the participants to the general techniques
for developing algorithms and covers topics like divide
and conquer, greedy, dynamic programming, search and traverse,
backtracking, branch and bound. Time, space complexity;
graph, matrix, and set algorithms along with complexity
and intractable problems are also discussed.
CS511
Theory of Computation
Pre-req: CS300 (Theory of Automata and Formal Languages)
This course introduces students to the fundamentals of the
theory of computation including Sets, Relations, and Languages;
Finite Automata; Context-free Languages; Turing Machines;
Undecidability; Computational Complexity; and NP-completeness.
CS520
Computer Architecture
Pre-req: CS225 (Computer Organization and Assembly Language)
The course will cover the following topics: Instruction
Set Principles, Pipelining, Memory Hierarchy/ Cache Design,
Storage System Design, High Performance Arithmetic, Multiprocessor
design, Interconnection Networks and Fault-Tolerant Computing.
CS525
Operating Systems
Pre-requisite: CS325 Operating Systems
This course will cover an exciting range of materials from
the broad field of operating systems, including basic operating
system structure, file systems and storage servers, memory
management techniques, process scheduling and resource management,
threads, distributed and peer-to-peer systems, security
and a few other "hot" topics. It will also examine
influential historical systems and important current efforts,
extracting lessons both on how to build systems as well
as how to evaluate them.
CS541
Advanced Software Development
Pre-requisite: CS141 Object oriented design and programming
The objective of this course is to produce software architects
who can undertake a senior level design & development
responsibilities. The course revolves around design patterns
and practices which are used to implement distributed enterprise
level software. The course will be taught from a designer's
perspective, and is divided into following modules: Presentation
Tier, Web Tier, Business Tier, Data Access Tier, Packaging,
Deployment, Configuration and Security.
Electives
Electives can be selected from any graduate-level (i.e. numbered 500 or above) courses that are not part of the degree's core requirement or from the following list that frequently updated according to interests of the faculty, industry, and students:
- Databases
- Advanced Database Management Systems
- Human-Computer Interaction
- Web-Usability Engineering
- Distributed Systems
- Patterns in Software
- Decision Support Systems
- Data Warehousing and Mining
- Software Business Management
- Software Project Management
- Special Topics