This course is about mathematical logic with a focus on automated reasoning techniques that are useful in reasoning about programs.
Any course in Linear Algebra or Matrix Theory.Haemers, Spectra of graphs, Springer 2011. Ravindran Kannan, Santosh Vempala, Spectral Algorithms, NOW Publishers, 2009.Fan Chung, Spectral Graph Theory, AMS 1997.Overview of Linear Algebra and Matrix theory, Perron-Frobenius theory, Rayleigh Ratios, Laplacians, Spectral graph partitioning algorithm, Cheeger?s inequal- ity, Davis-Kahan theorem and perturbation analysis, Community detection in networks and stochastic block models, SVD, Mixture Models, Probabilistic spectral clustering, Recursive spectral clustering, optimization via low-rank approximation. This course emphasizes rigorous analysis of algorithms. This course will cover some basic topics in spectral graph theory and algorithms with some applications to network analysis. Spectral graph algorithms are very popular in theoretical computer science and machine learning, as they provide polynomial time approximations to several hard computational problems. Ian Goodfellow and Yoshua Bengio and Aaron Courville.
Applications of Machine Learning (e.g., code completion, software testing and debugging). Probabilistic Models of Source Code: program embeddings, probabilistic grammars, statistical language models, structural models. Program Analysis: static and dynamic analysis of concurrent programs, model checking, information flow analysis for security, random testing. Smartphone and Web Programming: multi-threading, asynchronous event-handling, permissions. Programming Language Processing: tokenization, parsing and semantic analysis, graph representations, syntactic transformations. This course will introduce machine/deep learning techniques to build probabilistic models of source code, and discuss how they can be used to solve novel problems in software engineering. There is growing realization in the software community that we can learn useful program properties from large codebases by treating code as data, and augmenting program analysis with machine learning. It will focus on concurrency and security analysis of smartphone and web applications. This course will introduce program analysis and machine/deep learning techniques to help developers in this quest. Automated Software Engineering with Machine LearningĮngineering high-quality software requires mastering advanced programming concepts, and dealing with large and complex code.