|
|
Curriculum |
|
|
EECS 310 Mathematical Foundations of Computer Science (1): Basic concepts of finite and structural mathematics. Sets, axiomatic systems, the propositional and predicate calculi, and graph theory. Application to computer science: sequential machines, formal grammars, and software design. Prerequisites: Permission of instructor.
EECS 311 Data Structures and Data Management (1): Design, implementation, and analysis of abstract data types; data structures and their algorithms. Topics include data and procedural abstraction, linked tests, stacks, queues, binary trees, searching, and sorting. Prerequisites: Permission of instructor.
EECS 317 Data Management and Information Processing (1): Data representation, file and record organization, linear and linked lists, and scatter storage techniques. Sorting and searching algorithms. Solving problems involving large databases. Not for graduate students in computer science.
EECS 322 Compiler Construction (1): Overview of compilers and context-free languages, top-down parsing, LL(1)parser construction, translation grammars, implementation of lexical analyzer, parser and translator, compiler optimization, error handling, and recovery. Prerequisites: Both EECS 311 and EECS 213 or EECS 311 and both EECS 205 and EECS 231.
EECS 325 Artificial Intelligence Programming (1): Introduction to Lisp and programming knowledge-based systems and interfaces. Strong emphasis on writing maintainable, extensible systems. Topics include semantic networks, frames, pattern matching, deductive inference rules, case-based reasoning, and discrimination trees. Project-driven. Substantial programming assignments. Prerequisites: Programming experience or permission of instructor.
EECS 330 Introduction to Human Computer Interaction (1): Technological and psychological foundations of human-computer interaction, leading to the development of a large computer-based interactive application.
EECS 332 Digital Image Analysis (1): Introduction to computer and biological vision systems, image formation, edge detection, image segmentation, texture, representation, analysis of two-dimensional geometric structures, and representation and analysis of two- and three-dimensional structures. Prerequisites: EECS 311 and permission of instructor.
EECS 336 Design and Analysis of Algorithms (1): Analysis techniques: solving recurrence equations. Algorithm design techniques: divide and conquer, the greedy method, backtracking, branch-and-bound, and dynamic programming. Sorting and selection algorithms, order statistics, heaps, and priority queues. Prerequisites: EECS 310, EECS 311, or permission of instructor.
EECS 338 Practicum in Intelligent Information Systems (1): Practical excursion into the building of Intelligent Information Systems. Each student will develop a working program in the area of information access, management, capture or retrieval. Project definition, data collection, technology selection, implementation, and project management.
EECS 339 Introduction to Database Systems (1): Data models and database design. Modeling the real world: structures, constraints, and operations. The entity relationship to data modeling (including network hierarchical and object-oriented), emphasis on the relational model. Use of existing database systems for the implementation of information systems. Prerequisites: Both EECS 311 and EECS 213 or EECS 311 and both EECS 205 and EECS 231.
EECS 340 Introduction to Networking (1): A top-down exploration of networking using the 5-layer model and the TCP/IP stack. HTTP, FTP, DNS, BSD Sockets, concurrent servers, checksums, reliable transport with stop-and-wait, go-back-n, selective repeat, flow control, congestion control, TCP, unicast routing, multicast routing, router architecture, IP, IPv6, IP multicast, MAC protocols and LANs, Ethernet,wireless networks, and network security. Over the course of the quarter, students build web clients and servers, a fully compatible TCP/IP stack that can run them, and evaluate routing protocols in simulation. Prerequisites: Both EECS 311 and EECS 213 or EECS 311 and both EECS 205 and EECS 231.
EECS 343 Operating Systems (1): Fundamental overview of operating systems, including: concurrency (processes, synchronization, semaphores, monitors, deadlock); memory management (segmentation, paging virtual memory policies); software system architectures (level structures, microkernals); file systems (directory structures, file organization, RAID); protection (access control, capabilities, encryption, signatures, authentication). Requires substantial programming projects. Prerequisites: Both EECS 311 and EECS 213 or EECS 311 and both EECS 205 and EECS 231.
EECS 344 Design of Computer Problem Solvers (1): Principles and practice of organizing and building AI reasoning systems. Topics include pattern-directed rule systems, truth-maintenance systems, and constraint languages. Prerequisites: EECS 348 and EECS 325 or equivalent Lisp experience.
EECS 345 Distributed Systems (1): Basic concepts in distributed systems and main paradigms used to organize them. Topics include communication, process and thread migration, fault tolerance and reliability, security and authentication, synchronization.
EECS 348 Introduction to Artificial Intelligence (1): The purpose of this course is to introduce the student to the major ideas and techniques of Artificial Intelligence, as well as to develop an appreciation for the engineering issues underlying the design of intelligent computational agents. Prerequisites: EECS 325, EECS 311, or Lisp programming experience.
EECS 349 Machine Learning (1): The study of algorithms that improve automatically through experience. Topics covered typically include Bayesian Learning, Decision Trees, Genteic Algorithms, Neural Networks, Markov Models and Reinforcement Learning. Prerequisites: EECS 348, graduate standing, or permission of instructor.
EECS 350 Introduction to Computer Security (1): This course introduces students to the basic principles and practices of computer and information security. Focus will be on the software, operating system and network security techniques with detailed analysis of real-world examples. Topics include cryptography, authentication, software and operating system security (e.g., buffer overflow), Internet vulnerability (DoS attacks, viruses/worms, etc.), intrusion detection systems, firewalls, VPN, Web and wireless security. Prerequisites: EECS 213 or both EECS 205 and 231.
EECS 351 Introduction to Computer Graphics (1): Mathematical software and hardware requirements for computer graphics systems. Data structures and programming languages. Random displays. Graphic applications.
EECS 352 Machine Perception of Music (1): Machine extraction of musical structure in audio, midi and score files, covering areas such as source separation and perceptual mapping of audio to machine quantifiable measures. Prerequisites: EECS 211.
EECS 366 Designing and Constructing Models with Multi-Agent Languages (1): Students will learn how to translate a situation into a multi-agent model, construct multi-agent models and networked simulations and analyze their behavior and performances.
EECS 370 Computer Game Design (1): Fundamentals of computer game design. Topics include plot, narrative and character, simulation for creating game worlds, artificial intelligence for synthetic characters, tuning gameplay. Substantial programming and project work. Prerequisites: Prerequisites EECS 311 plus at least one of EECS 322, EECS 343, EECS 348 or EECS 351.
EECS 394 Software Project Management and Development (1): Software development methodologies, object-oriented analysis and design, CASE tools, software life cycle. Project management tools, programming teams. Executable specifications, automatic test generation. Prerequisites: EECS 343 or equivalent programming experience.
EECS 430 Design of Interactive Learning Environments (1): Design of computer-based "learning-by-doing" environments. Course focuses more on initial conception of learning environments than on technical issues involved in building these environments.
EECS 431 Theories and Technologies for Human Communication (1): Course pairs theory about discourse, sociolinguistics, and interpersonal communication with computational work that relies on that theoretical foundation. Prerequisites: EECS 213 or both EECS 205 and EECS 231.
EECS 437-1,2 Advanced Natural Language Processing (1)(1): First Quarter: Techniques for natural language analysis, discourse planning, generation, and advanced problems in NLP. Second Quarter: The role of memory in understanding and learning - reminding, expectation failures, memory organization, and thematic structures.
EECS 440 Advanced Networking (1): This course will cover a broad range of topics including Internet evolution and architectures; analysis and design of network protocols (both wired and wireless); networking issues for Web and gaming applications; analysis and performance of content distribution networks; network security, vulnerability, and defenses. Prerequisites: EECS 340 or permission of instructor.
EECS 441 Resource Virtualization (1): Virtual machines of all kinds, virtual networking, virtual services, virtual storage, emulation, distributed computing using virtualized resources. Prerequisites: EECS 213 or both EECS 205 and EECS 231.
EECS 442 Dynamic Behavior of Application, Hosts, and Networks (1): Theory and practice in workload characterization, measureing, analyzing, modeling, and predicting dynamic behavior of distributed computing environments and their applications. Prerequisites: EECS 213 or both EECS 205 and EECS 231 or permission of instructor; calculus and linear algebra recommended.
EECS 443 Advanced Operating Systems (1): Advanced concepts in operating systems and distributed computing from historical perspectives to current themes such as peer-to-peer computing and mobile systems.
EECS 450 Internet Security (1): Through measurement-based approaches, students analyze the complexity of the Internet, and develop countermeasures against various vulnerabilities of the Internet such as viruses, worms, and denial of service attacks.
EECS 464 Advanced Database Systems (1): This class focuses on the implementation of database management systems: file layout, indexing, query optimization and processing, concurrency control, disaster recovery and transaction management. Prerequisites: EECS 311 and EECS 339 or permission of instructor.
EECS 499 Projects (1)(1)(1): Special projects carried out under faculty direction. Permission of instructor and department required.
EECS 510 Seminar (1): Seminar on topics of current interest.
EECS 590 Research (1-3) : Independent investigation of selected problems pertaining to thesis or dissertation. May be repeated for credit.
|
|
|
|