Advanced course covering various analysis techniques used in software engineering. This course will cover techniques for analyzing various software artifacts. Some of the topics that will be covered are: model checking, testing, program analysis, requirements analysis, and safety analysis.
This course introduces the fundamental ideas of computation and complexity. Topics studied include finite automata and regular languages, context free languages, Turing machines, time and space complexity classes and NP-completeness.
Study of sensing and computational techniques that enhance or extend the capabilities of digital photography by using methods from computer vision and computer graphics to create new visual representations. Algorithms for analyzing, improving, manipulating, combining, and synthesizing images.
Principles of knowledge-based search techniques, automatic deduction, knowledge representation using predicate logic, machine learning, probabilistic reasoning. Applications in tasks such as problem solving, data mining, game playing, natural language understanding, computer vision, speech recognition, and robotics.
Basic paradigms for the design and analysis of efficient algorithms: greed, divide-and-conquer, dynamic programming, reductions, and the use of randomness. Computational intractability including typical NP-complete problems and ways to deal with them.
Architecture of computer networks and network protocols, protocol layering, reliable transmission, congestion control, flow control, naming and addressing, unicast and multicast routing, network security, network performance, widely used protocols such as Ethernet, wireless LANs, IP, and HTTP. Prereq: CS 537.