The below are course descriptions for the Fall 2020 Topics Courses. This page will be updated as new information is made available. The official record of what will be offered is listed on the Directory of Classes. Please use this only as a resource in your course planning. Undergraduates should consult your CS Faculty advisor to see if a course counts for your track. MS students should consult the Topics page (if not listed then consult your CS Faculty advisor).
COMS 4995.001 Hacking 4 Defense
COMS 4995.003 Parallel Functional Programming
COMS 4995.004 Deep Learning for Computer Vision
COMS 4995.006 Intro to DevOps
COMS 4995.008 Elements of Data Science: A First Course
COMS 4995.009 Applied Deep Learning
COMS 6998.001 Foundations of Blockchains
COMS 6998.002 Formal Verification of System Software
COMS 6998.003 Representation Learning
COMS 6998.004 Information Theory in CS
COMS 6998.005 The Synthetic Control Method
COMS 6998.006 Advanced Web Design Studio
COMS 6998.007 Topics in Virtual and Augmented Reality
COMS 6998.008 Computation and the Brain
COMS 6998.009 Cloud Computing and Big Data
COMS 6998.010 Practical Deep Learning System Performance
COMS 6998.011 Empirical Methods of Data Science
COMS 6998.012 Fundamentals of Speech Recognition
COMS 6998.013 Analysis of Networks & Crowds
COMS E6998 015 Cybersecurity: Tech Policy Law
COMS E6998.016 ML w/Probabilistic Programming
Solve complex technology problems critical to our National Security with a team of engineers, scientists, MBAs, and policy experts. In a crisis, national security initiatives move at the speed of a startup yet in peacetime they default to decades-long acquisition and procurement cycles. Startups operate with continual speed and urgency 24/7. Over the last few years they’ve learned how to be not only fast, but extremely efficient with resources and time using lean startup methodologies. In this class student teams develop technology solutions to help solve important national security problems. Student teams take actual national security problems and learn how to apply the Lean launchpad and Lean Startup principles, (“business model canvas,” “customer development,” and “agile engineering”) to discover and validate customer needs and to continually build iterative prototypes to test whether they understood the problem and solution. Teams take a hands-on approach requiring close engagement with actual military, Department of Defense and other government agency end-users. Team applications required. Limited enrollment. Taught by Professor Paul Blaer and Jason Cahill, Hacking for Defense™ is a university-sponsored class that allows students to develop a deep understanding of the problems and needs of government sponsors in the Department of Defense and the Intelligence Community. In a short time, students rapidly iterate prototypes and produce solutions to sponsors’ needs. This course provides students with an experiential opportunity to become more effective in their chosen field, with a body of work to back it up. For government agencies, it allows problem sponsors to increase the speed at which their organization solves specific, mission-critical problems. For more information check out http://www.h4di.org/
Prerequisites: COMS 3157 Advanced Programming or the equivalent. Knowledge of at least one programming language and related development tools/environments required. Functional programming experience not required. Functional programming in Haskell, with an emphasis on parallel programs. The goal of this class is to introduce you to the functional programming paradigm. You will learn to code in Haskell; this experience will also prepare you to code in other functional languages. The first half of the class will cover basic (single-threaded) functional programming; the second half will cover how to code parallel programs in a functional setting.
Recent advances in Deep Learning have propelled Computer Vision forward. Applications such as image recognition and search, unconstrained face recognition, and image and video captioning which only recently seemed decades off, are now being realized and deployed at scale. This course will look at the advances in computer vision and machine learning that have made this possible. In particular we will look at Convolutional Neural Nets (CNNs), Recurrent Neural Nets (RNNs), Long Short Term Memories (LSTMs) and their application to computer vision. We will also look at the datasets needed to feed these data hungry approaches–both how to create them and how to leverage them to address a wider range of applications. The course will have homework assignments and a final project; there will be no exams. Total enrollment capped at 60.
The process of DevOps, which includes combining the process of development and operations into one, helps smooth the process of developing apps, deploying them and even testing them. Time is often an important factor in development, where engineers spend days and even months building one app, and even more trying to test it and scale it. This is where automation and the concepts of DevOps, help reduce this time significantly. DevOps is a set of practices that seek to reduce the gap between software development and software operations. It focuses on automating and monitoring all steps of software construction, from integration, testing, releasing to deployment and infrastructure management. The objective is to build shorter development cycles, increased deployment frequency, more dependable releases, in close alignment with business objectives. The Introduction to DevOps course is tailored to both individuals who have some DevOps-related experience, but aspire to enhance these skills, and individuals who are just starting out in their careers and wish to gain new skills that will serve them a lifetime. The course will start off by discussing DevOps and the world of automation, where you will learn exactly how to become proficient in DevOps as a mindset. You will learn the importance of DevOps in today’s development world, as well as become familiar with the well known components of the DevOps system such as Agility, Automation, Culture and Tools. At the end of this course, you will have not only started on your journey as a DevOps engineer but, you will have the confidence to actually achieve a real DevOps mindset in an Agile development world.
This is a DSI course therefore please refer to their website for the cross-registration instructions for NON-DS students
This course is designed as an introduction to elements that constitute the skill set of a data scientist. The course will focus on the utility of these elements in common tasks of a data scientist, rather than their theoretical formulation and properties. The course provides a foundation of methodology with applied examples to analyze large engineering, business, and social data for data science problems. Hands-on experiments with Python will be emphasized.
This is a DSI course therefore please refer to their website for the cross-registration instructions for NON-DS students
This course provides a practical introduction to Deep Learning. We aim to help you understand the fundamentals of neural networks (DNNs, CNNs, and RNNs), and prepare you to successfully apply them in practice. This course will be taught using open-source software, including TensorFlow 2.0. In addition to covering the fundamental methods, we will discuss the rapidly developing space of frameworks and applications, including deep learning on mobile and the web. This course emphasizes fairness, responsibility, and testing – and teaches best practices with these in mind.
This course will provide a rigorous introduction to the mathematical analysis of blockchain protocols, including the relevant tools and definitions from game theory, economics, and distributed computing. The target audience is beginning PhD students with interest and experience in theoretical computer science.
This course briefly covers techniques for formal specification and verification of system software. The course starts with teaching the basics of Coq proof assistant. We will then introduce various program logic and how to use them to verify simple programs in Coq. Topics include model checking, abstract interpretation, and symbolic decision procedures (e.g., SAT solvers, SMT solvers) will also be briefly covered.
– Learning Objectives
Students who take this course will gain an understanding of the concepts and theories of computer-aided formal verification, and learn how to use and write formal verification tools.
General proficiency in discrete mathematics
C/C++ programming skills
COMS W4115 Programming Languages and Translators
Software Foundations by Benjamin C. Pierce et al.
This course will cover advanced topics in machine learning and representation learning. The course will go into depth about self-supervised learning, meta-learning, 3D representations, cross-modal representations, interpretable representations, and visual dynamics. The course will focus mostly on vision, and also cover other modalities, such as sound, language, touch, and robotics. Students will complete weekly reading assignments and conduct a semester long research project.
Information theory plays a key role in coding theory, digital communication and ML, but it is also a powerful mathematical tool for analyzing computation in many models, and found many applications in combinatorics and theoretical computer science. The primary goal of this course is to develop tools in information theory and communication complexity, and use them to prove upper and lower bounds on important problems in theoretical CS, such as linear programs, interactive compression, streaming algorithms, data structures and locally-decodable codes. This is an advanced course geared towards CS and EE graduate students, though it is designed to be self-contained. Evaluation is based on home works and a final project (reading, implementation, or research).
The synthetic control method, introduced in Abadie and Gardeazabal (2003), has emerged as a popular empirical methodology for estimating causal effects with observational data when the “gold standard” of a randomized control trial is not feasible. In a recent survey on causal inference and program evaluation methods in economics, Athey and Imbens (2015) describe the synthetic control method as “arguably the most important innovation in the evaluation literature in the last fifteen years”. While many of the most prominent applications of the method, as well as its genesis, was initially circumscribed to the policy evaluation literature, synthetic controls have found their way more broadly to social sciences, biological sciences, engineering, and even sports. However, only recently, synthetic controls have been introduced to the machine learning community through its natural connection to matrix and tensor estimation in Amjad, Shah and Shen (2017) as well as Amjad, Misra, Shah and Shen (2019). In this class, we will study the rich body of literature on methodical aspects, mathematical foundations and empirical case studies of synthetic controls. We will learn guidance for empirical practice, with special emphasis on feasibility and data requirements, and characterize the practical settings where synthetic controls may be useful and those where they may fail. We will describe empirical case studies from policy evaluation, retail, and sports. Moreover, we will discuss the mathematical connections of synthetic controls to matrix and tensor estimation, high dimensional regression, and time series analysis. The class will include a project where students will pick a practical application, obtain and analyze the datasets and provide analysis using the synthetic control lens.
This semester, Advanced Web Design Studio is partnering with faculty and students in Journalism and Architecture to design, build and deploy “public interest technology.” We will introduce interdisciplinary design methods and principles for Human Computer Interaction — mixing Architecture, Urban Planning, Computer Science, and Journalism — that respond to the potentials as well as the adverse effects of computation on society today. Our work will be dedicated to leveraging technology to support public interest organizations. We will move beyond short-term metrics—clicks, daily active users, and private profit—to focus on fostering long-term value and local networks. Students will work together to create and deploy interdisciplinary projects in collaborative teams, with the aim of serving the public and using technology to advance justice, equality, and inclusion in society. We will also be alert to the ways in which the language of “public interest” can sometimes hide or offer alibis for other political or private interests. For the first half of the semester, coding and design exercises, and complete short readings on journalism, urban planning, and public interest technology. During the second half of the semester students will iterate their work and put their projects into action. A strict pre-requisite is to have taken COMS 4170 UI Design, or have taken an equivalent class with both web-based implementation and design components. You must also fill out the prerequisite form that will be available thru SSOL. It is also here: https://forms.gle/v3a22idw9qgubgcG9. The faculty instructors in each area are: Lydia Chilton: School of Engineering, Computer Science; Mark Hansen: School of Journalism; Laura Kurgan: Graduate School of Architecture, Planning and Preservation
Here are some examples of Public Interest Technology:
— Ushahidi: Since 2008, thousands have used this crowdsourcing platform in disaster settings, from violence post-election to earthquakes and floods worldwide.
— OneBusAway: Results from Providing Real-Time Arrival Information for Public Transit. (2010)
— Discrimination in Online Ad Delivery: Google ads, black names and white names, racial discrimination, and click advertising (2013)
— Anti Eviction Mapping is a volunteer data-visualization, data analysis, and storytelling collective documenting the dispossession and resistance upon gentrifying landscapes (since 2013)
This course will cover selected topics in VR and AR. There are two main components, with everyone participating in both: papers and projects.
Papers: Throughout the semester, we will be reading, presenting, and discussing papers that address important research themes in VR and AR. Each of you will be individually responsible for reading and commenting on all the papers and for participating in a team presentation of a selected set of papers related to one theme.
Projects: You will be developing a project in a small (individual or 2-3 person) team using the Unity 3D development environment. Projects will use either headset-based VR or phone-based AR. Through the generosity of a Provost Emerging Technology Grant, I expect to lend an Oculus Quest to each of you doing a headset-based VR project. Thus, members of all team projects can work remotely from each other without needing to share equipment. While you can generate your own project idea, I will encourage you to choose from a collection of projects co-advised with faculty and students in other schools, ranging from Medicine and Dentistry, to Social Work.
Prerequisites: You will ideally have taken COMS W4172 (3D User Interfaces and Augmented Reality) or equivalent and be comfortable with developing in Unity. However, I am willing to admit students who don’t have this background, with the understanding that you will need to get up to speed with Unity, starting early in September.
Please fill out the survey linked to the course SSOL entry, which is a necessary precondition to being admitted to the course.
Prerequisites: Familiarity with computation and algorithms. Some familiarity with Neuroscience; or willingness to venture into a vast, complex, and fascinating field. Familiarity with machine learning useful.
Despite brilliant and accelerating progress in experimental Neuroscience, there is little progress towards an overarching understanding of how the Brain works. This course will cover some basic material and results in Neuroscience, both classical and recent, from a computational perspective, that is, under the hypothesis that the way the Brain works is largely computational.”
This is a graduate level course on Cloud Computing and Big Data with emphasis on hands-on design and implementations. In addition to Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) cloud technologies and concepts, Big Data technologies and platforms (Hadoop ecosystem, Spark) will be covered in this course. By the end of the course, you should have fair amount of knowledge about how to use a Cloud, write applications on Cloud as well as manage and build applications on Big Data platform. The first part of the course covers basic building blocks such as virtualization technologies, virtual appliance, automated provisioning, elasticity, and cloud monitoring. We shall learn these concepts by using and extending capabilities available in real clouds such as Amazon AWS, Google Cloud and OpenStack. The second part of the course will focus on Big Data computing platform (Hadoop- MR and Spark) where students will learn HDFS, Map Reduce and Spark (RDD, DataFrame) concepts and programming. We will also learn various stacks used in building an extremely large scale system such as (i) Kafka for event logging and handing, (ii) Spark and Spark streaming for large scale compute, (iii) Elastic Search for extremely fast indexing and search, (iv) various database services such as DynamoDB, Cassandra, (v) MLLib, Grpahx for various Machine Learning and Deep Learning on extremely large scale data levering cloud. Several real world applications will be covered to illustrate these concepts and research innovations. Students are expected to participate in class discussions, read research papers, work on three programming assignments, and conduct a significant course project. Given that this is a very hands-on course, it is expected that students have decent programming background. Topics to include: Cloud Introduction and Programing with AWS; Virtual Machine, Containers, Serverless Lambda; Compute in a cluster: Hadoop, Spark; Cloud scale data store; Kafka; Elastic Search; Cloud devOps: End-to-end cloud based application design, deployment and monitoring; Openstack based Private Cloud; Intelligent AI Systems design on Cloud
This course will cover several topics in performance evaluation of machine learning and deep learning systems. Major topics covered in the course: Algorithmic and system level introduction to Deep Learning (DL), DL training algorithms, network architectures, and best practices for performance optimization, ML/DL system stack on cloud, Tools and benchmarks (e.g., DAWNBench) for performance evaluation of ML/DL systems, Practical performance analysis using standard DL frameworks (tensorflow, pytorch) and resource monitoring tools (e.g., nvidia-smi), Performance modeling to characterize scalability with respect to workload and hardware, Performance consideration with special techniques like transfer learning, semi-supervised learning, neural architecture search. Emphasis will be on getting working knowledge of tools and techniques to evaluate performance of ML/DL systems on cloud platforms. The assignments will involve running experiments using standard DL frameworks (tensorflow, pytorch) and working with open source DL technologies. The students will gain practical experience working on different stages of DL life cycle (development and deployment) and understanding/addressing related system performance issues.
Empirical Methods of Data Science is a seminar for students seeking an in depth understanding of how to conduct empirical research in computer science. In the first part of the seminar, we will discuss how to critically examine previous research, build and test hypotheses, and collect data in the most ethical and robust manner. As we explore different means of data collection, we will dive into ethical concerns in research. Next, we will explore how to most effectively analyze different data sets and how to present the data in engaging and exciting ways. In the last part of the seminar, we will hear from different researchers on the methods they use to conduct research, lending to further conversations and in class debates about when and how to use particular research methods. The focus will be primarily on relatively small data sets but we will also address big data.
Fundamentals of Speech Recognition is a comprehensive course, covering all aspects of automatic speech recognition from theory to practice. In this course such topics as Anatomy of Speech, Signal Representation, Phonetics and Phonology, Signal Processing and Feature Extraction, Probability Theory and Statistics, Information Theory, Metrics and Divergences, Decision Theory, Parameter Estimation, Clustering and Learning, Transformation, Hidden Markov Modeling, Language Modeling and Natural Language Processing, Search Techniques, Neural Networks, Support Vector Machines and other recent machine learning techniques used in speech recognition are covered in some detail. Also, several open source speech recognition software packages are introduced, with detailed hands-on projects using Kaldi to produce a fully functional speech recognition engine. The lectures cover the theoretical aspects as well as practical coding techniques. The course is graded based on a project. The Midterm (40% of the grade is in the form of a two page proposal for the project and the final (60% of the grade) is an oral presentation of the project plus a 6-page conference style paper describing the results of the research project. The instructor uses his own Textbook for the course, Homayoon Beigi, “”Fundamentals of Speaker Recognition,”” Springer-Verlag, New York, 2011. Every week, the slides of the lecture are made available to the students.
This course covers the fundamentals underlying information diffusion and incentives on networked applications, with an emphasis on topics that are currently in phase with most recent research in the areas (as opposed to the “intro to network and crowds” version). Applications include but are not limited to social networks, crowdsourcing, online advertising, rankings, information networks like the world wide web, as well as areas where opinion formation and the aggregate behavior of groups of people play a critical role. Among structural concepts introduced and covered in class feature random graphs, small world, weak ties, structural balance, cluster modularity, preferential attachments, Nash equilibrium, Potential Game and Bipartite Graph Matching. The class examines the following dynamics: link prediction, network formation, adoption with network effect, spectral clustering and ranking, spread of epidemic, seeding, social learning, routing game, all-pay contest and truthful bidding.
Prerequisites: There are no formal prerequisites other than permission of the instructor. Some knowledge of programming and how the Internet works is helpful but not required.
Summary: This seminar brings together professors and select students from three schools to discuss how different disciplines solve cybersecurity issues. Classes will cover the technical underpinnings of the Internet and computer security; the novel legal aspects from technology, crime and national security; and the various policy problems and solutions involved in this new field.
To unite the concepts in the course, this semester we will focus on a recently released report from the Cyberspace Solarium Commission, which brings together findings and recommendations from across technology, law, and policy.
The core of the class is a group project. Students will come together in teams with students from each school to complete a project proposed by the commissioners and staff of the CSC and which will be partly judged by them in the final class or two.
Course website: https://www.proditus.com/mlpp2020. The world is full of noise and uncertainty. To make sense of it, we collect data and ask questions. Is there a tumor in this x-ray scan? What is the root cause of the quality issues at a manufacturing plant? How old is this planet I see through the telescope? Does this drug actually work? To pose and answer such questions, scientists must iterate through a cycle: probabilistically model a system, infer hidden patterns from data, and evaluate how well our model describes reality.
By the end of this course, you will learn how to use probabilistic programming to effectively iterate through this cycle. Specifically, you will master
modeling real-world phenomena using probability models,
using advanced algorithms to infer hidden patterns from data, and
evaluating the effectiveness of your analysis.
You will learn to use (and perhaps even contribute to) Pyro throughout this course.