Computer Science Courses
Memory-system design, pipeline structures, vector computers, scientific array processors, multi-processor architecture. Within each topic, the emphasis is on fundamental limitations: memory bandwidth, inter-processor communication, processing bandwidth and synchronization. Prerequisite: CMSC 411 or consent of instructor.
A detailed study of advanced topics in operating systems, including synchronization mechanisms, virtual memory, deadlocks, distributed resource sharing, computer security and modeling of operating systems. Prerequisite: CMSC 421 or consent of instructor.
Fundamental algorithms, mathematical tools for analyzing algorithms and strategies for designing algorithms. Topics include graph algorithms (including network flow), parallel algorithms and algorithms for selected combinatorial tasks. Tools include asymptotic notations, recurrences, amortized analysis and probabilistic analysis. Strategies include divide-and-conquer, greedy, dynamic programming, time-space tradeoff and randomization. Introduction to NP-completeness. Prerequisite: CMSC 441 or consent of instructor.
Modern approaches to software development: requirements analysis, system design techniques, formal description techniques, implementation, testing, debugging, metrics, human factors, quality assurance, cost estimation, maintenance and tools. Prerequisite: CMSC 445 or consent of instructor.
Advanced topics in the area of database management systems: data models and their underlying mathematical foundations, database manipulation and query languages, functional dependencies, physical data organization and indexing methods, concurrency control, crash recovery, database security and distributed databases. Prerequisite: CMSC 461 or consent of instructor.
A study of topics central to artificial intelligence, including logic for problem-solving, intelligent search techniques, knowledge representation, inference mechanisms, expert systems and AI programming. Prerequisite: CMSC 471 or consent of instructor.
Topics central to the design and development of advanced computer communication networks, including distributed and fail-safe routing in large and dynamic networks, gateways and interconnection of heterogeneous networks, flow control and congestion avoidance techniques, network architectures, computer and communication security, communication protocol standards, formal specification and verification of protocols, implementation and conformance testing of protocol standards, network partitioning and intelligent reconfiguration of networks. Prerequisite: CMSC 481, CMSC 621 or consent of instructor.