Algorithms and techniques for computer-aided physical design of integrated circuits; current design styles and trends in physical design automation; floor planning, placement, global and detail routing; performance analysis and optimization; integration of physical design tools with high-level design tools. Projects involve the construction of simple physical design automation tools. Prerequisites: CS 120, CS 375.
CMOS layout design rules, CMOS logic families, basic cell designs (gates, latches, memory cells, etc.), floor planning. Project involves use of VLSI design tools to design a small chip (such as small CPU, associative memory, array multiplier) that is eventually fabricated using the MOSIS facilities. Prerequisite: CS 120.
Advanced issues in VLSI microprocessor design: datapath and control design techniques and trade-offs, using cell libraries of datapath components. Team project involves the specification, design and implementation of a (pipeline) RISC CPU that is eventually fabricated using the MOSIS facilities. Prerequisite: CS 514 (alternatives not acceptable).
Pipelined processors: basic theory, instruction pipelines, multifunction units, dynamic instruction scheduling, branch handling, precise interrupts. Compiler techniques for enhancing ILP. Pipelined vector machines. Superscalar, VLIW and EPIC architectures. High-speed memory system design. Overview of parallel/multiprocessor architectures: SIMD/MIMD systems, interconnection networks, synchronization and cache coherence. CS 520 is a number change for the course previously offered as CS 522. Prerequisite: CS 320.
Sensor networks offer the promise of revolutionizing sensing in a large number of application domains. Sensors are typically embedded nodes that are resource poor and energy constrained. Further, the nature of the operation is application/data driven requiring protocols and algorithms that are fundamentally different from those in traditional networks. This course provides an introduction to this emerging field and covers the open research problems and challenges. Topics covered include: Sensor architecture and design. Sensor network architecture and applications. Localization algorithms. Synchronization algorithms. Energy aware medium access, routing, data collection and transport. Embedded Operating systems and databases for sensors. Aggregation and redundancy control. Topology control. Information dissemination. Sensor control and management. Sensor storage issues. Indexing and retrieval issues. Prerequisite: CS 350.
Introduction to mobile computing and networking. Also covers the open research problems and challenges in the field. Mobile computing: service location/context-aware computing, system support for mobility. Mobile applications: location-aware applications, wireless multimedia, ubiquitous computing, smart environments. Mobile networking: network architecture and design (cellular, multi-hop, ad hoc, sensor networks). Wireless communication basics. Wireless medium access: channel allocation and medium access protocols for last hop and ad hoc networks. Supporting mobility in the Internet. Network protocols: routing and addressing issues and approaches; transport protocols for wireless environments. Power-aware computing and networking. Quality of service for mobile networks. Security. Prerequisite: CS 350.
Communication protocols and layering, hardware-software infrastructuresfor networking, MAC protocols, data link protocols, switching, inter- andintra-domain routing, the TCP/IP protocol suite, transport protocols,application layer protocols, local and system area networks, wirelessand sensor networks, overlay and virtual networks, client-server andpeer-to-peer models, network programming with sockets, protocol design andimplementation issues, network security. Prerequisite: CS 350.
New technologies for high-speed networking (such as ATM, Fibre channel, Myrinet). Interaction among operating system, protocol stack and the network interface hardware. OS kernel and mapping requirements for low-latency networking. Lightweight protocols; multicasting protocols. Innovative applications of low-latency LANs (such as clustered supercomputing, distributed single-image servers, multimedia servers). Hands-on laboratory exercises on several high-speed LANs. Prerequisites: CS 350 and 428. Undergraduate students with the appropriate background may take this course as an elective.
Associations between data elements and data models: entity-relationship, relational and object-oriented. Relational database design techniques. Formal and commercial query languages. Introduction to query processing, transaction management and concurrency control. Prerequisite: CS 375.
Indexing and data structures for storing and searching the index. Boolean, statistical, inference nets and knowledge-based models. Thesaurus construction. Query expansion. Natural language and linguistic techniques. Evaluation. Distributed information retrieval. Information integration and fusion. Dissemination of information. Summaries, themes and reading tours. Hypertext. Internet tools. Intelligent agents. Digital libraries. Prerequisite: CS 375.
Basic topics of data mining, including data preprocessing, mining association rules, classification rules, clustering rules, post processing, and mining in unstructured data. Prerequisite: CS 375.
Introduction to the organization of multimedia database systems. Review of conventional database systems, including design principles and typical architectures. Organization of multimedia content. Advanced data structures for image, text, video, audio and combined databases. Other topics include physical storage and retrieval, multimedia presentations and network issues. Prerequisite: CS 432 or 532.
Object-oriented programming and its concomitant design patterns provide rich abstractions for program development. These programs will eventually execute on real hardware, however. This course will investigate advanced object-oriented techniques and how they interact with hardware and operating system issues. We will ground our topics in C++, but the goal of the course will be develop understanding that can be applied across languages. We will examine different design techniques for things such as memory management, and explore how and why they differ in performance and robustness. We will also cover idioms such as "Resource Acquisition Is Initialization" (RAII) and how they can be used to provide robust resource management for exceptions (exception safety). We will also devote time to covering generic programming and related topics such as expression templates. This is a growing area that seeks to decouple algorithms and data structures through the use of templates and other meta-programming techniques. These techniques exploit the fact that the C++ template mechanism is a language-within-a-language that is executed at compile-time rather than run-time. Additional topics include dynamic linking for techniques such as "plug-ins", template instantiation mechanisms, template specialization, idioms for memory management, thread-safety issues, thread-safety, C++ reflection. Prerequisites: CS 240, CS 350.
Patterns for program design including examples of patterns used in existing software libraries. Exercises in programming with design patterns and communicating designs to other programmers using the language of patterns. Use of an object-oriented programming language to implement patterns and principles for common design problems. Prerequisites: CS 140 and CS 375.
Software engineering practice applied to the life cycle of large software applications and engineering projects. Software project planning and management: risk management, estimation, scheduling, trade studies, CM and SQA. Software development: process model selection, domain analysis, requirements gathering, analysis and design modeling, user interface design, architectural and detailed design, documentation, testing strategies/methods, test plan generation, and reuse. Advanced topics include formal methods and cleanroom software engineering. Semester long, team project. Prerequisite: CS 375.
Introduction to the organization of multimedia systems. Specifically, three core areas of multimedia research are covered: multimedia information indexing and retrieval, multimedia databases and multimedia networks. In each area, key concepts and algorithms are introduced and related practice projects are assigned. Depending on the progress of the course, more advanced topics in each area are also discussed. Prerequisite: CS 375.
Advanced topics in operating systems. Process synchronization, linguistic support for concurrency, virtual memory, deadlock theory, robustness, security, mathematical models and correctness of concurrent programs. Treatment of selected topics in distributed and multiprocessor operating systems. CS 550 is a number change for the course previously offered as CS 552. Prerequisite: CS 350.
A detailed study of the application program interface of a modern operating system. File operations, concurrency, processes, threads, inter-process communication, synchronization, client-server programming, multi-tier programming. Prerequisite: CS 350.
Programming paradigms, concepts and emerging technologies for Grid computing. Research issues include the design and implementation of Grid services, Web services, SOAP, XML, RMI, Work-flow, component based Grid computing, OGSA/OGSI, WSRF, Grid security and portal technologies for Grid computing. Prerequisite: Proficiency in Java or C++, CS 350.
This course covers important topics related to developing next generation real-time embedded systems such as real-time scheduling, real-time operating systems, and sensor networks. It will begin with an introduction to classical real-time systems. Following the introduction, research papers envisioning future real-time systems will be discussed. The class will include not only lectures but also discussions and brainstorming. In this way, students can develop a solid understanding of real-time computing, while improving research skills. Prerequisites: CS 350 and CS 428.
The course focuses on fundamental topics, including visual information acquisition, representation, description, enhancement, restoration, transformations and compressions, and reconstruction from projections. The second focus is on Computer Science applications, including algorithms developed in applications such as statistical and syntactic pattern recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics. Prerequisite: CS 375.
Course has two parts. Part one focuses on an introduction to the fundamental topics of computer vision, including low-level vision, intermediate-level vision, high-level vision, vision systems, visual knowledge representation, motion analysis, shape from shading and 3D reconstruction, as well as image retrieval. Part two introduces the applications of the fundamental computer vision techniques. Examples include robotic vision, pattern recognition and medical imaging. Prerequisite: CS 555.
Fundamental issues in distributed systems. Distributed synchronization and concurrency control. Distributed process management (scheduling, remote invocation, task forces, load balancing). Protection and security. Robust distributed systems. Case studies. Prerequisite: CS 350.
The course provides an introduction to the principles and practices of network, computer, and information security. Topics include authentication and cryptographic techniques, intrusion detection, access control, security policies, and program/policy analysis techniques. Prerequisite: CS 350 and CS 375.
Concepts, structure, techniques, algorithms for use of modern interactive computer graphics systems. Graphics hardware, software system structure. Techniques and algorithms for basic graphics input-output functions. Matrix techniques for transformations and projections. Techniques for three-dimensional modeling and visualization. Prerequisites: CS 375 and MATH 304.
Selected topics in programming languages and alternative programming paradigms. Functional and imperative languages. Logic programming and object-oriented programming paradigms. Languages for concurrent computation. Semantics of programming languages. Prerequisite: CS 471.
Fundamentals of programming language translation. Compiler design concepts. General aspects of lexical analysis and parsing of context-free languages. Grammars and parsing techniques. Syntax-directed translation. Declarations and symbol management. Semantic processing and code generation. Principles, methods and examples of code optimization. Prerequisite: CS 471.
Regular languages, finite automata and regular expressions. Context-free languages and grammars, normal forms, pushdown automata. Recursive and recursively enumerable languages. Turing machines. Introduction to undecidability. Prerequisite: MATH 314.
Analysis of programs and review of design techniques. Lower bound theory and NP-completeness. Heuristic, approximation, probabilistic and parallel algorithms. Prerequisites: CS 373 and 375.
Recent advances in hardware and software platforms bring along new requirements and challenges for programming language design and implementation. This course will investigate the state-of-the-art programming models best suited for a number of emerging platforms. In particular, we will look into several topics in great detail, including 1) programming on multi-core CPUs; 2) programming for sensor networks; and 3) game programming. Prerequisites: Java programming, CS 320 and CS 350.
Topics in specialized areas varying from semester to semester. 1-3 cr.
Computer science, engineering and other professional experience. Daily log book memo progress reports and a formal report required. May replace no more than one lecture course for the MSCS or MEng degree. Prerequisite: consent of department chair. 1-3 cr.
A theoretical or practical project carried out under the supervision of a member of the Computer Science Department. Project documentation must be submitted to the department library and a public presentation is required. Further information is available in the department office. Prerequisites: consent of instructor and committee members.
Independent study supervised by a computer science faculty member. Student must obtain consent of instructor, who then determines description of study program, number of credits, frequency of meetings and location. 1-12 cr.
Research for and preparation of thesis. Must be approved by department chair. 1-6 cr.
The course will cover advanced techniques for improving the performance and reducing the power and complexity of modern microprocessors and memory systems. It will also examine the open research problems and challenges in the field selected from the following topics. Speculation techniques: branch prediction, value prediction, latency prediction, memory dependence prediction. Performance-boosting techniques: simultaneous multithreading, chip multiprocessors, pre-execution, exploitation of control-flow independence. Multi-clustered architectures. Critical path prediction and its exploitation. Techniques for power and energy reduction, power-performance trade-offs. Scalable processor designs with large instruction windows. Techniques for reducing the inductive noise in microprocessors. Design of low-complexity dynamic instruction schedulers and register files. Prerequisite: CS 520.
Multiprocessor architectures: programming models and fundamental concepts. Interconnection networks. Cache coherence and synchronization issues in shared-memory multiprocessors. Data mapping, communication and synchronization in distributed memory multicomputers. Distributed shared memory. Multicore architectures/Chip multiprocessors: specific issues, programming models and architectural considerations. This course will make generous use of contemporary research literature. Prerequisite: CS 520.
This course will cover a selection of recent research papers on advanced topics in Computer Networks. The set of topics to be covered will vary with each offering. Prerequisite: CS 528.
Coverage of selected advanced areas in database systems and applications. Specific topics vary from year to year to reflect current research interests and may include but are not limited to topics in distributed database, heterogeneous database, Internet-based text database, object-oriented database, data mining. Prerequisite: CS 432 or 532.
Advanced topics in Web data management. New techniques for retrieving documents from search engines, including the use of links and user-behavior knowledge. Meta-search engine techniques, including resource discovery and result fusion. Database approaches for Web data management. Semi-structured data management, including data models, query languages and XML. Topics may vary when offered in different years. Prerequisite: CS 432 or 532. Corequisite: CS 533.
This course is a graduate seminar focusing on the state-of-the-art research issues in the area of data mining. Each time this course is taught, the specific focus will be on a research topic related to the instructor's research projects and may be different for each offering. Students taking this course will be exposed to major data mining research topics as well as the current literature. Prerequisite: CS 535.
The course focuses on state-of-the art concepts in operating systems design and implementation. Topics include system virtualization, distributed operating systems, large-scale memory management, network sub-systems, embedded and real-time systems, power-management, file and storage systems, and security. Prerequisite: CS 550.
In depth analysis and study of the latest important advances in Distributed Computing. Topics include security, peer-to-peer systems, performance evaluation and modeling, fault tolerance, cluster computing, resource management and scheduling, distributed and parallel programming environments. Prerequisites: CS 550, CS 557.
A comprehensive review of the techniques needed to produce computer-generated shaded images of three-dimensional scenes. Recent research results are presented. Students design and implement portions of a three-dimensional graphics package. Topics selected from modern graphics standards (PHIGS, X-Windows), user interface issues, 3-D viewing, geometric modeling, image synthesis, image manipulation, animation, scientific visualization. Prerequisite: CS 560.
Weekly seminar presentation by invited speakers, department faculty and graduate students on contemporary topics in computer science and related fields. May not be used toward the MSCS. Prerequisites: graduate standing in computer science. every sem., 1 cr.
Reading and research on special advanced topics under direction of computer science adviser. Student must obtain consent of professor, who then determines description of study program, number of credits, frequency of meetings, location. 1-12 cr.
Reserved for exploratory research oriented toward dissertation. 1-9 cr.
Research for and preparation of dissertation. Registration restricted to those admitted to candidacy. 1-12 cr.
every sem., 1 cr.
Required for all funded graduate assistants. Research or teaching supervised by faculty adviser.
Development of research skills required within graduate programs. May not be applied toward course credits for any graduate degree. Prerequisite: approval of relevant graduate program directors or department chairs. 1-4 cr.
Last Updated: 8/5/13