芝大MPCS项目Spring选课介绍
99267
零. 序
地里关于芝大选课信息还是很少,为提供更多信息,特写此帖,本帖以春季quarter MPCS学生能选的全部课为数据来源,包括CMSC,MPCS和TTIC的课程
壹. CMSC
我申请了spring quarter CMSC 2+的本科高年级课,Advanced Distributed System(Ian Foster, 谷歌引用12万)和Parallel Computing(Henry Hoffmann,谷歌引用7千)。我也不一定真会去上,试听之后再说,因为下学期MPCS的课也挺好的。申请一周后会收到邮件如下,
本科高年级课一般都比较空(芝大本科一年总共就1500左右,CS的人就更少了,一部分原因也是芝大本科生中国人非常少), 大概率都能空出不少名额, MPCS主动选CMSC的课的人也比较少,主要是尝鲜的和想读phd的。系里要求MPCS的学生必须选择2+的课程,2是本科高年级课程,3是phd课程。下面主要是本科高年级课,一般课程容量是20-30,鲜有50. 本科的课需要交申请表。CMSC phd的课mpcs学生在教务网可以直接选,不需要申请,只需要报备,系里决定替换mpcs的哪门课
phd-level
贰. MPCS
MPCS的课没有CMSC的课那么硬核,那么科研,从课程描述就可以看出来。但是都是工业界真的用的到的东西,对找工作很有帮助,不会像CMSC phd的课一样学很多,你觉得很厉害,但是这辈子可能永远用不上的东西。MPCS大部分课是clinical professor教的,这个title就是相当于讲师Lecturer,不过数据库操作系统其实都是professor。
叁:TTIC
TTIC的课都是phd-level,MPCS的学生可以直接教务网选,申请报备。都是AI课。唉,个人对AI无感。
以上都是MPCS在2020 spring quarter实际可选的课。一年实际上课是3个quarter,和很多加州大学学制是一样的。开的课很多,其实只选3门。
地里关于芝大选课信息还是很少,为提供更多信息,特写此帖,本帖以春季quarter MPCS学生能选的全部课为数据来源,包括CMSC,MPCS和TTIC的课程
壹. CMSC
我申请了spring quarter CMSC 2+的本科高年级课,Advanced Distributed System(Ian Foster, 谷歌引用12万)和Parallel Computing(Henry Hoffmann,谷歌引用7千)。我也不一定真会去上,试听之后再说,因为下学期MPCS的课也挺好的。申请一周后会收到邮件如下,
Thank you for submitting your request to register for CMSC 23310 Advanced Distributed Systems for the Spring 2020 quarter.
Your request has been approved. However, please note that this class will likely be oversubscribed and undergrads have registration priority, so you should make sure to have a backup plan — FYI, this is the case for all 200-level CMSC classes. Additionally, this class may be counted as a Core Systems class.
It is your responsibility to read and understand the terms outlined below. Please pay particular attention to the graduating quarter requirements if you are planning on graduating this quarter.
Thank you for submitting your request to register for CMSC 23010 Parallel Computing for the Spring 2020 quarter.
Your request has been approved. However, please note that this class will likely be oversubscribed and undergrads have registration priority, so you should make sure to have a backup plan — FYI, this is the case for all 200-level CMSC classes. Additionally, this class may be counted as a Core Systems class.
It is your responsibility to read and understand the terms outlined below. Please pay particular attention to the graduating quarter requirements if you are planning on graduating this quarter.
本科高年级课一般都比较空(芝大本科一年总共就1500左右,CS的人就更少了,一部分原因也是芝大本科生中国人非常少), 大概率都能空出不少名额, MPCS主动选CMSC的课的人也比较少,主要是尝鲜的和想读phd的。系里要求MPCS的学生必须选择2+的课程,2是本科高年级课程,3是phd课程。下面主要是本科高年级课,一般课程容量是20-30,鲜有50. 本科的课需要交申请表。CMSC phd的课mpcs学生在教务网可以直接选,不需要申请,只需要报备,系里决定替换mpcs的哪门课
- CMSC 23310 Advanced Distributed Systems, Ian Foste
In recent years, large distributed systems have taken a prominent role not just in scientific inquiry, but also in our daily lives. When we perform a search on Google, stream content from Netflix, place an order on Amazon, or catch up on the latest comings-and-goings on Facebook, our seemingly minute requests are processed by complex systems that sometimes include hundreds of thousands of computers, connected by both local and wide area networks. Recent papers in the field of Distributed Systems have described several solutions (such as MapReduce, BigTable, Dynamo, Cassandra, etc.) for managing large-scale data and computation. However, building and using these systems pose a number of more fundamental challenges: How do we keep the system operating correctly even when individual machines fail? How do we ensure that all the machines have a consistent view of the system's state? (And how do we ensure this in the presence of failures?) How can we determine the order of events in a system where we can't assume a single global clock? Many of these fundamental problems were identified and solved over the course of several decades, starting in the 1970s. To better appreciate the challenges of recent developments in the field of Distributed Systems, this course will guide students through seminal work in Distributed Systems from the 1970s, '80s, and '90s, leading up to a discussion of recent work in the field.
- CMSC 22100 Programming Languages, Adam Sha
In recent years, large distributed systems have taken a prominent role not just in scientific inquiry, but also in our daily lives. When we perform a search on Google, stream content from Netflix, place an order on Amazon, or catch up on the latest comings-and-goings on Facebook, our seemingly minute requests are processed by complex systems that sometimes include hundreds of thousands of computers, connected by both local and wide area networks. Recent papers in the field of Distributed Systems have described several solutions (such as MapReduce, BigTable, Dynamo, Cassandra, etc.) for managing large-scale data and computation. However, building and using these systems pose a number of more fundamental challenges: How do we keep the system operating correctly even when individual machines fail? How do we ensure that all the machines have a consistent view of the system's state? (And how do we ensure this in the presence of failures?) How can we determine the order of events in a system where we can't assume a single global clock? Many of these fundamental problems were identified and solved over the course of several decades, starting in the 1970s. To better appreciate the challenges of recent developments in the field of Distributed Systems, this course will guide students through seminal work in Distributed Systems from the 1970s, '80s, and '90s, leading up to a discussion of recent work in the field.
- CMSC 22300 Functional Programming, Ravi Chug
We will explore various aspects of advanced functional programming in this course. Topics will vary from quarter to quarter and may include: untyped and typed programming; pure and impure programming; eager and lazy semantics; "object-functional programming"; functional reactive programming; and concurrent functional programming.
- CMSC 23010 Parallel Computing, Henry Hoffman
This course provides an introduction to the concepts of parallel programming, with an emphasis on programming multicore processors. Topics include: Processes and threads, shared memory, message passing, direct-memory access (DMA), hardware mechanisms for parallel computing, synchronization and communication, patterns of parallel programming. The course will involve a substantial programming project implementing a parallel computations.
- CMSC 23220 Inventing, Engineering and Understanding Interactive Device
A physical computing class, dedicated to micro-controllers, sensors, actuators and fabrication techniques. The objective is that everyone creates their own, custom-made, functional I/O device.
- CMSC 23360 Advanced Networks, Haitao Zhen
Advanced networks
- CMSC 23900: Data Visualization, Gordon Kindlman
Data visualizations provide a visual setting in which to explore, understand, and explain datasets. This class describes mathematical and perceptual principles, methods, and applications of "data visualization" (as it is popularly understood to refer primarily to tabulated data). A range of data types and visual encodings will be presented and evaluated. Visualizations will be primarily web-based, using D3.js, and possibly other higher-level languages and libraries.
- CMSC 25020, Computational Linguistics, John Goldsmith
This is a course in the Computer Science department, intended for upper-level undergraduates, or graduate students, who have good programming skills. There will be weekly programming assignments in Python. We will look at several current topics in natural language processing, and discuss both the theoretical basis for the work and engaging in hands-on practical experiments with linguistic corpora. In line with most current work, our emphasis will be on systems that draw conclusions from training data rather than relying on the encoding of generalizations obtained by humans studying the data. As a consequence of that, in part, we will make an effort not to focus on English, but to look at a range of human languages in our treatments.
- CMSC 25025, Machine Learning and Large-Scale Data Analysis: Yali Amit
This course is an introduction to machine learning and the analysis of large data sets using distributed computation and storage infrastructure. Basic machine learning methodology and relevant statistical theory will be presented in lectures. Homework exercises will give students hands-on experience with the methods on different types of data. Methods include algorithms for clustering, binary classification, and hierarchical Bayesian modeling. Data types include images, archives of scientific articles, online ad clickthrough logs, and public records of the City of Chicago. Programming will be based on Python and R, but previous exposure to these languages is not assumed.
- CMSC 25460, Introduction to Optimization, Lorenzo Orecchia
Introduction to Optimization
- CMSC 25900, Ethics, Fairness, Responsibility, and Privacy in Data Science, Raul Castro Fernandez,Blase Ur : Tue Thu : 03:30 PM-04:50 PM
Ethics, fairness, responsibility, and privacy in Data Science.
- CMSC 27200, Theory of Algorithms, Timothy Ng: Mon Wed Fr
This course covers design and analysis of efficient algorithms, with emphasis on ideas rather than on implementation. Algorithmic questions include sorting and searching, graph algorithms, elementary algorithmic number theory, combinatorial optimization, randomized algorithms, as well as techniques to deal with intractability, like approximation algorithms. Design techniques include "divide-and-conquer" methods, dynamic programming, greedy algorithms, and graph search, as well as the design of efficient data structures. Methods of algorithm analysis include asymptotic notation, evaluation of recurrent inequalities, amortized analysis, analysis of probabilistic algorithms, the concepts of polynomial-time algorithms, and of NP-completeness.
- CMSC 27500, Graph Theory, Ketan Mulmuley
This course covers the basics of the theory of finite graphs. Topics include shortest paths, spanning trees, counting techniques, matchings, Hamiltonian cycles, chromatic number, extremal graph theory, Turan's theorem, planarity, Menger's theorem, the max-flow/min-cut theorem, Ramsey theory, directed graphs, strongly connected components, directed acyclic graphs, and tournaments. Techniques studied include the probabilistic method.
phd-level
- Topics in Human Computer Interaction, Marshini Chett, Total Enrollment: 8/20
Graduate study of topics in Human Computer Interaction (HCI). In this class, we critically examine hot topics that might impact the future generations of computing interfaces; these include: physiological I/O (e.g., brain and muscle computer interfaces), tangible computing (giving shape and form to interfaces), wearable computing (I/O devices closer to the user's body), rendering new realities (e.g., virtual & augmented reality), haptics (giving computers the ability to generate touch and forces) and unusual auditory interfaces (e.g., silent speech & microphones as sensors). In this class you will: (1) learn about these new developments during the lectures, (2) read HCI papers and summarize these in short weekly assignments, and lastly, (3) start inventing the future of computing interfaces by proposing a new idea in the form of a paper abstract, which you will present at the end of the semester and have it peer-reviewed in class by your classmates.
- CMSC 32001: Topics in Programming Languages, Ravi Chugh, Total Enrollment: 2/8
This course covers a selection of advanced topics in programming languages.
- CMSC 39600, Topics in Theoretical Computer Science , Ravi Chugh, Total Enrollment: 4/30
The class will focus on the theoretical foundations needed to characterize the computational power of quantum experiments in the “Near-term Intermediate Scale Quantum” era, in which several experimental groups in academic and industrial labs are now able to implement quantum computers on the scale of around 50 qubits. A major goal will be for students to understand and evaluate very recent experiments that claim to achieve the first demonstration of a provable quantum computational speedup. Topics include the basics of quantum complexity theory, quantum sampling complexity (with a focus on the BosonSampling and random quantum circuit sampling experimental proposals), the theory of QMA completeness and Kitaev's local Hamiltonian problem, and the power of resource limited models of quantum computation. Prerequisites: A working knowledge of the basics of quantum computation and computational complexity theory.
- CMSC 33251, Topics in Computer Security: Theoretical Symmetric Cryptography, Charles David Cash, Total Enrollment: 7/30
Seminar on current topics in computer security.
- CMSC 35400, Machine Learning, Yuxin Chen,Rebecca Willett, Total Enrollment: 51/50
This course provides hands-on experience with a range of contemporary machine learning algorithms, as well as an introduction to the theoretical aspects of the subject. Topics covered include: the PAC framework, Bayesian learning, graphical models, clustering, dimensionality reduction, kernel methods including SVMs, matrix completion, neural networks, and an introduction to statistical learning theory.
- CMSC 35401, Topics in Machine Learning: Deep Learning, Michael Maire, Total Enrollment: 17/30
We will cover recent research in applied machine learning and systems, particularly with respect to questions of robustness and resilience against attacks on deep learning systems. Students will present papers, lead discussion, and run open ended projects related to the topic.
- CMSC 39000, Computational Geometry, Ketan Mulmuley, Total Enrollment: 3/30
This course is a seminar on topics in computational geometry.
- CMSC 35401, Topics in Machine Learning: Applied Machine Learning, Ben Zhao(quora网红), Total Enrollment: 10/30
We will cover recent research in applied machine learning and systems, particularly with respect to questions of robustness and resilience against attacks on deep learning systems. Students will present papers, lead discussion, and run open ended projects related to the topic.
- CMSC 37200, Combinatorics, Laszlo Babai, Total Enrollment: 13/20
Methods of enumeration, construction, and proof of existence of discrete structures are discussed. The course emphasizes applications of linear algebra, number theory, and the probabilistic method to combinatorics. Applications to the theory of computing are indicated, and open problems are discussed.
- CMSC 38405, Arithmetic Combinatorics, Alexander Razborov, Total Enrollment: 4/35
This course covers a variety of topics in arithmetic combinatorics such as inverse problems, incidence geometry, uniformity, regularity and pseudo-randomness. A special attention will be paid to connections to classical mathematics and theoretical computer science.
- Topics In Theoretical Computer Science: Aaron Potechin, Total Enrollment: 5/30
A seminar on current research in theoretical computer science.
贰. MPCS
MPCS的课没有CMSC的课那么硬核,那么科研,从课程描述就可以看出来。但是都是工业界真的用的到的东西,对找工作很有帮助,不会像CMSC phd的课一样学很多,你觉得很厉害,但是这辈子可能永远用不上的东西。MPCS大部分课是clinical professor教的,这个title就是相当于讲师Lecturer,不过数据库操作系统其实都是professor。
- MPCS 53001: Databases, Aaron J Elmore(AP, 谷歌引用1500)
In this course students will learn database design and development and will build a simple but complete web application powered by a relational database.
We start by gathering requirements and showing how to model a relational database using an Entity-Relationship Diagram (ERD). Concepts covered include entity sets and relationships, using keys as a unique identifier for each object in an entity set, one-one, many-one, and many-many relationships as well as translational rules from conceptual modeling (ERD) to relational table definitions. We will examine the relational model and functional dependencies along with their application to the methods for improving database design: normal forms and normalization.
After designing and modeling their database, students will learn the universal language of relational databases: SQL (Structured Query Language). We will first introduce relational algebra, the theoretical foundation of SQL and then examine in detail the two main aspects of SQL: data definition language (DDL) and data manipulation language (DML). Concepts covered include subqueries, aggregation, various types of joins, functions, triggers and stored procedures. Students will then learn about web connectivity, as they build a simple front-end for their application in order to interact with their database online. Finally, we will provide an overview of related topics such as data warehousing, big data, NoSQL and NewSQL databases.
Students will gain significant experience with writing and reading SQL queries and understanding the design and function of relational databases throughout the course in the detailed in-class discussions, online homework, midterm and the real-world individual project.
- MPCS 52030 Operating Systems, Shan Lu (Professor,中科大本UIUC博,芝大professor,很年轻,人称山姐)
This course provides an introduction to fundamental concepts in operating systems, including processes and threads, interprocess communication and synchronization, memory management, segmentation, paging, linking and loading, scheduling, file systems, and input/output. This course revolves around the implementation of an x86 operating system kernel, divided into four separate projects, which accounts for the majority of the grade. Students will develop these projects in pairs. To successfully complete these projects, students must understand fundamental concepts in operating system design and implementation, which are provided through the lectures. There will also be a midterm and a final.
The projects use the Pintos instructional kernel, which already implements some of the low-level functionality of the kernel, allowing the students to concentrate on implementing higher-level operating system functionality, such as thread management, memory management, etc.
while still allowing them to peek under the hood.
The project is divided into four parts:
Threads: Students are given a minimally functional thread system, which they will extend to gain a better understanding of synchronization problems.
User Programs: Pintos already supports loading and running user programs, but no I/O or interactivity is possible. Students will enable programs to interact with the OS via system calls.
Virtual Memory: Pintos is limited by the machine’s main memory size. In this project, students will remove this limitation by implementing a virtual memory management system.
File Systems: Students will improve Pintos’ basic file system.
- MPCS 51087: High Performance Computing
Overview of CPU and GPU Architectures
Instruction sets
Functional units
Memory hierarchies
Performance Metrics
Latency and bandwidth
Roofline modeling
Single-core optimization
Compiler-assisted vectorization (data-level parallelism)
Design patterns for cache-based optimization
Multi-threaded CPU programming
Worksharing, synchronization, and atomic operations
Memory access patterns, including non-uniform memory access
The OpenMP API
GPU programming
Thread-mapping for optimal vectorization and memory access
Task-scheduling for latency reduction
The CUDA and OpenMP offload APIs
Distributed parallelism
Synchronous and asynchronous communication patterns
Data decomposition
Hybrid models for distributed multi-threaded and GPU programming
The MPI API
Throughout the course, will draw on examples from linear algebra, Monte Carlo simulations, discretized partial differential equations, and machine learning.
- MPCS 51300, Compiler, Hal Finkel (耶鲁phd, 阿贡国家实验室Scientist, the Lead for Compiler Technology and Programming Languages at the ALCF. Hal has contributed to the LLVM compiler infrastructure project for many years)
At a high level, students should come out of the class with an understanding of:
Parts of compiler technology that are useful in general (i.e., scanning/regexes/parsing) and algorithmic ideas that come up in other contexts (e.g., graph algorithms - dominance and coloring, for example - and lattice algorithms).
Why some aspects of optimization are hard, both in terms of algorithmic complexity and practical concerns (e.g., supporting separate compilation), and how choices made about the language semantics can make this harder or easier.
How compile time vs. expected performance gain affects the design of compilers, especially JIT compilers.
- MPCS 51050: OO Architecture: Patterns, Technologies, Implementations, Jeffrey Shacklette
This course gives hands-on experience in architecture and design and the communication of such designs in the form of patterns. There are no formal prerequisites except solid familiarity with Java and optionally familiarity with C++. The course is designed to give students a fundamental introduction to design and architectural patterns as they are implemented in large scale system architectures currently used in industry. Students will be encouraged to explore the various implementation possibilities afforded by these patterns. Trade-offs in terms of performance, development time, maintenance impact, etc. will also be discussed. Students will gain exposure to several industry-leading tools including Apache ActiveMQ and ServiceMix.
- MPCS 52040 Distributed Systems
This class teaches the theory and practice of how to design a distributed system. Cloud computing, drive services, online collaborative working environment, massively multiplayer online gaming, airline reservation systems, e-commerce are examples of distributed systems. Because of a continuous growing number of independent and diverse connected devices, the need of managing heterogeneous architecture became prominent. We will learn how to create a reliable system being easy to use but handling the complexity of having all these machines work collectively. The objective of this class is to learn distributed system by studying: Communication mechanisms Synchronization Scalability Consistency / Replication Fault tolerance
- MPCS 55005, Advanced Algorithms, Geraldine Brady (老奶奶讲的算法非常好,就是作业比较难还老考试quiz)
Advanced Algorithms is a second course on the design and analysis of efficient algorithms. This course will present many interesting and relevant algorithms and give students the tools to recognize and rigorously solve algorithmic problems in the real world.
Topics include:
data structures: balanced binary search trees and Bloom filters
discrete and continuous optimization: advanced dynamic programming, gradient descent, Newton's method
NP-hardness and methods of dealing with intractability: approximation, randomization, backtracking, branch and bound, local search
computational geometry and advanced graph algorithms
with applications in computing, science, and engineering.
Engaging weekly homework assignments will involve designing new algorithms in pseudocode and implementing selected algorithms in Python. Course goals are to prepare students with skills necessary to tackle algorithmic problems they may encounter in their future work.
- MPCS 51045 Advanced C++, Michael Spertus(普林斯顿老大爷,亚麻L8 , 强推)
As a seminar style course, many of the topics are influenced by the goals of the students, so please let me know if there is topic of interest to you. Typical topics have included:
Topics include:
Advanced concurrency techniques like futures and promises with best practices to avoid the myriad pitfalls of multi-threaded programming.
Advanced template techniques like SFINAE, CRTP, and variadics, which we will illustrate by implementing full featured classes like tuples.
Using metaprograms to implement seamlessly Embedded Domain Specific Languages and Design Patterns.
Learning how to read and leverage the C++ standard, so you can quickly locate definitive answers to any language questions.
A tour of standard and popular libraries so you don’t have to reinvent the wheel.
Creating your own STL-style iterators, so your types work seamlessly with STL algorithms
Customizing I/O streams.
Future directions of C++ to help you produce forward looking programs.I try to focus on teaching "what you can't get from a textbook." When I teach a C++ feature, I start with real-life use cases that can't be satisfactorily addressed without it, recap the discussions in the C++ committee during the design of the feature, including criticisms and alternative solutions, until we understand the actual outcome. What started out looking like an obscure feature full of mysterious technicalities and exceptions ends up being natural and "just what you expect."
- MPCS 53014 Big Data Application Architecture, Michael Spertus
The purpose of this class is to learn how to build applications at scale, by providing you with the techniques and tools capable of providing subsecond response times to millions of users interacting with petabytes of data.
In this course, we will cover both the theory and practice of building Big Data application. We will not only learn how to use technologies such as HDFS, MapReduce, Spark, Kafka, Hive, Thrift, HBase, Zookeeper, columnar stores, etc., but also understand why Big Data applications employ such a diverse array of technologies and where each one of them fits.
We will demonstrate the practice of Big Data application architecture by implementing a running Big Data web application for exploring the relationship between weather and flight performance utilizing all of the weather and flight delay information in the United States over the last decade to explore the relationship between weather and flight perforrmance.
To develop a sound understanding of the theory of Big Data, we will learn about important formulations of Big Data application architectures, such as Nathan Marz' lambda architecture, proper use of normalized and denormalized data stores within large-scale web applications, application of the CAP theorem, etc. We will also continuously keep in mind important additional topics that invariably arise in real world applications of Big Data, such as budgeting, compliance, etc..
Students are required to bring a laptop to class every week.
- MPCS 51032, Advanced iOS, Thomas Binkowski (这个老师讲课非常好,语速奇快,课程饱满。前面有一门IOS课,我觉得很有意思,高速产project)
Advances in mobile technologies are changing the way that individuals and businesses use computing devices. This course will explore real-world issues with developing robust, high-performance iOS applications for iPhone, iPod Touch, iPad, Watch and TV. The course will consist of lectures, hands-on coding exercises and discussion. Weekly programming assignments will be used to create a portfolio of applications using advanced iOS frameworks.
Throughout the course, students will design and develop an application as a final project. Students may opt to work in collaboration with local companies or emerging start-ups for their project. These opportunities will be discussed during the first week of class and may vary by quarter.At that time, they will submit a proposal for their final project, an application of their own design. Students may opt to work in collaboration with local companies or emerging start-ups for their project.Cloud computing is being widely adopted by enterprises of all sizes due to the low initial investment required, attractive operating costs, and elastic capacity that can best serve the highly variable demands of modern applications. Software engineers must be familiar with cloud computing technologies since many new applications they develop will be deployed “in the cloud”, and existing applications will often require integration with cloud-hosted services to take advantage of new capabilities.
- MPCS 51083: Cloud Computing
This course provides an introduction to cloud computing with specific consideration for application development in two contexts: highly scalable (or so-called “web-scale”) web applications, and enterprise applications in a hybrid environment comprising both on-premises and cloud infrastructure. We will focus primarily on infrastructure and platform services, and will introduce software-as-a-service from the perspective of a consuming application. The course will emphasize practical applications of cloud computing technologies, with sufficient exploration of their theoretical underpinnings to inform architectural, design, and implementation decisions. We will use commercial cloud offerings provided by Amazon Web Services to build and deploy "real” cloud-hosted applications.
Please refer to the course website above for details on course content and logistics.
- MPCS 56512: Application Security
emory corruption, Code injection, Web vulnerabilities, Authentication and authorization, Session management, Containment and isolation, Cloud security, Secrets management, Threat modeling, Code auditing, testing, and patching
- MPCS 51220: Applied Software Engineering
Software quality control, Test-driven development, Domain-driven design, Measuring software quality, Architectural design patterns, Edge-free programming, Event streams, logging, and audit trails, Source control techniques for small teams with Git, Security and cryptography essentials, Continuous integration & deployment
- MPCS 52060 Parallel Programming Lamont Kenneth Samuels
Parallel computing is found everywhere in modern computing. Multi-core CPUs and GPUs, supercomputers, and even mobile devices such as smartphones all provide ways to efficiently utilize parallel processing on these architectures and devices. The goal of this course is to provide an introduction to the foundations of parallel programming and to consider the performance gains and trade-offs involved in implementing and designing parallel computing systems. Specifically, this course will place an emphasis on concepts related to parallel programming on multicore processors.
Processes and threads
Shared memory
Hardware mechanisms for parallel computing
Synchronization and communication for parallel systems
Performance optimizations
Parallel data structures
Memory consistency and hierarchies for parallel computing
Patterns of parallel programming
Parallel programming on GPUs
Additional topics dependent on student request and time
- MPCS 51240 Product Management, Vasilios Vasiliadis
Product management is a cross-disciplinary endeavor that sits at the intrersection of software engineering, marketing, and the user experience. Product managers are expected to create products in support of business objectives, ensuring that products deliver value to customers and are feasible to build within varying sets of constraints. In this course we will introduce the role of the product manager and demonstrate the challenges faced by product managers. We will explore approaches for managing the tension that exists between software development and product delivery using the minimum viable product and the product roadmap as critical tools.
- MPCS 51033 Backends for Mobile Applications, Thomas Binkowski
The breakneck adoption of mobile computing as a platform has transformed how businesses and users interact with their data. The expectations of being able to access your data anywhere and anytime has become the second pillar of mobile application design and development. New models, patterns and workflows are needed to connect applications to their server based data. In addition, other considerations such as privacy, scalability and cost must be balanced to meet the demands of all application stakeholders.
This course will explore the current state of backend solutions for mobile applications. Students will work with third-party solutions such as Google Cloud Platform, Firebase, and iCloud. Students will design and implement custom solutions hosted on cloud service providers with significant emphasis on API design and performance.
- MPCS 51039 Mobile Software Development, Chelsea Troy
This course examines software engineering skills through the lens of mobile development. Students will leave with more confidence in their ability to debug, decipher complex software systems, test their code, navigate documentation, leverage version control, and learn new programming languages. We'll exercise these skills with both the Android and the iOS framework, but the goal isn't to become fluent in a mobile stack; the goal is to practice the skills. The course also capitalizes on the unique history of mobile handsets and tablets to talk about about accessibility, data privacy, sourcing ethics, and to what degree it is our responsibility as engineers to understand and prioritize these things.
- MPCS 51400 Functional Programming
This course presents the functional programming paradigm, based on the idea of functions as first-class values that can be computed and operated on like other data. Functional languages provide great power of expression while maintaining simplicity, making it easier to write correct and maintainable software. Functional programming has gradually found new applications in areas like finance, telecommunications, and graphics. The essential feature of treating functions as values has also been added to a broad range of conventional languages, such as Python, C++, Java, Apple's Swift and Google's Go language. The course will use the Haskell language based on its representing a purely functional language and its large community support that helps with writing Haskell programs easily. After learning the basic elements of these languages, we will explore functional programming techniques that can be exploited in many areas of application. In particular, we will examine how FP features are used in more modern languages and libraries such as C++, Java, Elm, and React libraries and how they are used in real-world settings. We will briefly compare the functional paradigm with the related paradigm of object oriented programming. If time permits then we will explore more advanced topics including concurrent functional programming and functional reactive programming.
叁:TTIC
TTIC的课都是phd-level,MPCS的学生可以直接教务网选,申请报备。都是AI课。唉,个人对AI无感。
- TTIC 31040, Introduction to Computer Vision, Gregory Shakhnarovich(Google citation 7k), Total Enrollment: 25/48
Introduction to the principles and practice of computer vision. This course will provide in-depth survey of topics involved in major tasks in moden vision, and offer hands-on experience in implementing some of them. Topics: * Image formation, representation, and compression * Representation and perception of color * Filtering and edge detection * Image features, detectors, and interest point operators * Model fitting, RANSAC and Hough transform * Stereo and multi-view geometry * Camera calibration * Representation and perception of motion * Representation and modeling of edges and regions * Semantic vision: recognition, detection, and related tasks Expected outcomes: Familiarity with models for of image formation and image analysis. Familiarity with major methods for image processing, alignment, and matching. Knowledge of principles and methods of 3D reconstruction from images and videos, and ability to build and diagnose implementations of these methods. Grasp of modern methods for object and scene categorization from images, and ability to build and diagnose implementations of such methods.
- TTIC 31180,Probabilistic Graphical Models,Matthew Walter(Google citation 4k), Total Enrollment: 10/28
Many problems in machine learning, computer vision, natural language processing, robotics, computational biology, and beyond require modeling complex interactions between large, heterogeneous collections of random variables. Graphical models combine probability theory and graph theory to provide a unifying framework for representing these relationships in a compact, structured form. Probabilistic graphical models decompose multivariate joint distributions into a set of local relationships among small subsets of random variables via a graph. These local interactions result in conditional independencies that afford efficient learning and inference algorithms. Moreover, their modular structure provides an intuitive language for expressing domain-specific knowledge, and facilitates the transfer of modeling advances to new applications. This graduate-level course will provide a strong foundation for learning and inference with probabilistic graphical models. The course will first introduce the underlying representational power of graphical models, including Bayesian and Markov networks, and dynamic Bayesian networks. Next, the course will investigate contemporary approaches to statistical inference, both exact and approximate. The course will then survey state-of-the-art methods for learning the structure and parameters of graphical models.
- TTIC 31250/1 Introduction to the Theory of Machine Learning, Avrim Blum(Google citation 3W), Total Enrollment: 43/48
This course will cover some of the basic theory underlying machine learning and the process of generalizing from data. We will talk about both the PAC model for batch learning (learning over one set of data with the intent of producing a predictor that performs well on new data) and models for learning from feedback over time (online learning). We will discuss important fundamental concepts including overfitting, uniform convergence, formal notions of Occam's razor, VC-dimension, and regularization, as well as several classic algorithms including the Perceptron algorithm, SVMs, algorithms for combining expert advice, and boosting. We will also discuss limited-feedback (bandit) algorithms, reinforcement learning, connections between learning and game theory, and formal guarantees on privacy. This will be a proof-oriented course: our focus will be on proving performance guarantees for algorithms that aim to generalize from data as well as understanding what kinds of performance guarantees we can hope to prove. Expected outcomes: Ability to recognize different learning models and make rigorous statements about learning methods Ability to use standard techniques to prove learning guarantees Ability to think critically about new learning paradigms
- TTIC 31110 Speech Technologies, Karen Livescu, Total Enrollment: 14/48
This course will introduce techniques used in speech technologies, mainly focusing on speech recognition. Speech recognition is one of the oldest and most complex structured sequence prediction tasks receiving significant research and commercial attention, and therefore provides a good case study for many of the techniques that are used in other areas of artificial intelligence involving sequence modeling. It is also a good example of the effectiveness of combining statistics and learning with domain knowledge. The course will include practical homework exercises using Matlab and speech toolkits. Expected outcomes: Understand and apply tools for analyzing speech time series such as Fourier analysis and dynamic time warping. Understand and apply hidden Markov models, Gaussian mixtures, and the EM algorithm for speech problems. Understand and apply n-gram language models, smoothing techniques, and their application to speech recognition. Understand generative and discriminative structured prediction approaches for speech problems.
以上都是MPCS在2020 spring quarter实际可选的课。一年实际上课是3个quarter,和很多加州大学学制是一样的。开的课很多,其实只选3门。
