Course Schedule
COURSE SCHEDULE: spring 2021
COMP 5-01
Teaching Computer Science

This course will prepare undergraduates to function effectively and efficiently as undergraduate teaching assistants. Through this course, students will learn pedagogical techniques that match learner needs; discuss ethical and social concerns that UTAs face in the course of a semester; and problem solve together issues that arise as teaching assistants. This course is designed in a learner centered model requiring your active and engaged participation. Through your willingness to share your experiences and expertise and your collaboration with your fellow UTA we will together construct meaningful solutions to difficulty situations. Faculty from Computer Science will participate in some of the sessions as co-facilitators. Students will be expected to complete short readings; keep a reflective blog of your learning as a teacher; give a short final presentation on a topic of interest that you want to explore in more depth to help you in your TA class.

Megan Monroe
W 4:30-7:30p
Collaborative Learning and Innovation Complex 401
COMP 5-02
Beyond Translation

Digital Analysis and Publication of Historical Sources for a Global Audience. All meetings are available via Zoom; some classes include an in person component (primarily in the opening six weeks of the semester).

Gregory Crane
TR 2:00-4:30
Anderson Hall 210
COMP 10-01
Computer Science for All

Computers are indispensable tools for research. This does not only hold for more technical fields such as physics or chemistry but also for the Humanities and the Social Sciences. While most students are competent users of standard software such as word processing or spreadsheets, the real power of the computer is unleashed when we are able to program it ourselves and make it do exactly what we want it to do.

This course is aimed at people who want to learn how to use computer science to solve basic information processing problems, such as analyzing text data and performing elementary statistics on them. It will cover elementary principles of computer science and will teach the student to independently write their own programs in the computer language Python.

This course is meant for people who have little or no previous experience in computer science. Therefore, in this course we do not assume that the students already know how to write computer programs. However, computer programming is a skill, and learning a new skill takes substantial amounts of effort and time. So the fact that this course is aimed at beginners does not mean that it is easy, or that it will involve less work than our other introduction courses, like e.g. COMP 11. On the contrary, it is very likely the case that this course will involves more effort than other introductory programming courses, if only because the fact that we do not assume any previous experience means that the road to our goal is going to be longer.

IMPORTANT NOTE: Passing this course does NOT fulfill the A&S Mathematics distribution requirement.

JP de Ruiter
TR 10:30-11:45
Online
COMP 11-01
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Noah Mendelsohn, Mark Sheldon
TR 12:00-1:15
Online
COMP 11-02
Introduction to Computer Science

The study of computer science centers on two complementary aspects of the discipline. First, computer science is fundamentally concerned with the problem-solving methodologies it derives from its foundational fields: the design principles of engineering, mathematical theory, and scientific empirical study. Second, these methodologies are applied in the complex context of a modern day computing system. In this course we will address both of these important aspects. As a means for developing your design skills, we will discuss the fundamental features of a high level, general purpose programming language -- namely C++-- and learn how to use it as a tool for problem solving. We will also consider the performance of solutions, and how to apply both analytical and empirical assessment techniques. Finally, we will explore the Unix operating system as a context for problem solving. (Additional 2 hr weekly lab time scheduled at first class meeting.) Recommendations: High school algebra. No prior programming experience is necessary.

Noah Mendelsohn, Mark Sheldon
TR 1:30-2:45
Online
COMP 15-01
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Mark Sheldon
MW 3:00-4:15
Online
COMP 15-02
Data Structures

A second course in computer science. Data structures and algorithms are studied through major programming projects in the C++ programming language. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion.

Prerequisite: COMP 11 or consent. This course and COMP 50-01 (COMP 50-PSS) may not both be taken for credit.
Mark Sheldon
MW 4:30-5:45p
Online
COMP 20-01
Web Programming

An introduction to techniques, principles, and practices of writing computer programs for the World Wide Web. Server and browser capabilities and limits. Media types, handlers, and limitations. Web programming languages and techniques. Web security, privacy, and commerce. Lectures augmented with programming projects illustrating concepts and current practice.

Prerequisite: COMP 11; or COMP 10 and consent.
Lisa DiOrio
MW 6:00p-7:15p
Online
COMP 23-01
Game Design

Principles, design, and development of games. Game structure, engineering, physics, testing, 2D and 3D rendering, user interfaces, sound, and animation. Security of online games. Applications of Economics, Music, and Psychology in crafting games. Projects include writing game design documents, developing an interactive fiction game, and building a functional game in a team.

Prerequisite: Recommended: Comp 15.
Jason Wiser
T 6:00p-9:00p
Online
COMP 27-01
How Systems Fail

Samuel Guyer
TR 9:00-10:15
Online
COMP 40-01
Machine Structure & Assembly-Language Programming

In COMP 40, you will learn about both high-level programming design principles and the low-level structure of computing machines. Design strategies will focus on modularity, abstraction, and separation of interface from implementation. The following topics on machine structure are covered: memory, caches, registers, machine arithmetic, and bitwise operations. We will also investigate the structure of assembly code, relocatable object code, binary machine code, and the translations between them. You will gain a deep understanding of all of these concepts via large-scale, realistic programming projects.

Mandatory lab will be held Fridays: sign up in SIS.

Prerequisite: COMP 15.
Megan Monroe, Richard Townsend
TR 10:30-11:45
Online
COMP 61-02
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Karen Edwards
MWF 10:30-11:20
Online
COMP 61-03
Discrete Mathematics

(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs.

Prerequisite: Math 32 or Computer Science 11 or permission of instructor.
Karen Edwards
MWF 1:30-2:20
Online
COMP 98-01
Senior Capstone Project II

Implementation and testing of the project designed in COMP97. Implementation tools, strategies, and platforms. Testing and debugging methodologies. Maintenance and release management. Legal, ethical, and social impacts of computing.

Prerequisite: COMP97.
Ming Chow
COMP 105-01
Programming Languages

Principles and application of computer programming languages. Emphasizes ideas and techniques most relevant to practitioners, but includes foundations crucial for intellectual rigor: abstract syntax, lambda calculus, type systems, dynamic semantics. Case studies, reinforced by programming exercises. Grounding sufficient to read professional literature.

Prerequisite: COMP 15 (Data Structures) and one semester of Discrete Mathematics (COMP/MATH 22 or 61).
Norman Ramsey
MTWRF 12:00a-12:00a
Online (asynchronous)
COMP 115-01
Database Systems

Fundamental concepts of database management systems. Topics include: data models (relational, object-oriented, and others); the SQL query language; implementation techniques of database management systems (storage and index structures, concurrency control, recovery, and query processing); management of unstructured and semistructured data; and scientific data collections.

Prerequisite: COMP 15.
David Lillethun
TR 4:30-5:45p
Online
COMP 116-01
Computer System Security

A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks. Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects.

Prerequisite: Comp 40.
Ming Chow
TR 4:30-5:45p
Online
COMP 126-01
Numerical Linear Algebra

(Cross-listed as MATH 126)The two basic computational problems of linear algebra: solution of linear systems and computation of eigenvalues and eigenvectors.

Prerequisite: Recommendations: MATH 70 or 72 and COMP 11.
Misha Kilmer
TR 9:00-10:15
Online
COMP 131-01
Artificial Intelligence

History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning.

Prerequisite: Comp 15 and either COMP/MATH 22 or 61 or familiarity with both symbolic logic and basic probability theory.
Fabrizio Santini
TR 6:00p-7:15p
Online (synchronous)
COMP 135-01
Introduction to Machine Learning

An overview of methods whereby computers can learn from data or experience and make decisions accordingly. Topics include supervised learning, unsupervised learning, reinforcement learning, and knowledge extraction from large databases with applications to science, engineering, and medicine.

Prerequisite: Comp 15 and COMP/MATH 22 or 61 or consent of instructor. (Comp 160 is highly recommended).
Martin Allen
TRF 12:00-1:15
Online
COMP 136-01
Statistical Pattern Recognition

Statistical foundations and algorithms for machine learning with a focus on Bayesian modeling. Topics include: classification and regression problems, regularization, model selection, kernel methods, support vector machines, Gaussian processes, Graphical models.

Prerequisite: Prerequisites: MATH 13 or 42; MATH 46 or 70; EE 104 or MATH 162; COMP 40 or COMP 105 or a programming course using Matlab. COMP 135, or COMP 131 are recommended but not required. Or permission of instructor.
Michael Hughes
MW 4:30-5:45p
Online
COMP 137-01
Deep Neural Networks

Peter Chin
TR 4:30-5:45p
Online
COMP 139-01
Ethics for AI, Robotics, and Human Robot Interaction

This course will provide an overview of the ethical problems and challenges prompted by current and future technological advances in AI, robotics, and human-robot interaction. It will start by reviewing the philosophical foundations of the main ethical theories (virtue ethics, deontology, utilitarianism) and link them to different algorithmic approaches in artificial agents (rule-based, utility-based, behavior-based, etc.). Explicating and contrasting the assumptions underlying each algorithmic approach (e.g., policy-based decision-making vs. rule-based reasoning), functional tradeoffs and implications for autonomous robots and AI systems will be discussed. The scope will then be widened to moral psychology and human-robot/human-technology interaction to move beyond individual autonomous systems into the realm of social interactions between humans and autonomous systems, discussing the societal implications of AI and robot technology. Social, economical, legal, and military ramifications will be considered, with the aim of exposing the unique challenges AI and robot technology pose for humanity, compared to other disruptive technologies, but also they unique opportunities these technologies enable for current and future generations.

Matthais Scheutz
COMP 140-01
Advanced Topics Computer Architecture

(Cross-listed w/ EE 156) Modern computer architecture, starting from basic 5-stage pipelines and progressing to out-of-order superscalar processors, multicore processors, and heterogeneous processors. Techniques to maximize single-thread performance within the constraints of memory technology, power consumption, and the inherent instruction-level parallelism of applications. Current and future challenges faced by computer architects and computer-system designers. Discussion of research papers.

Prerequisite: Recommendation: EE126/COMP146 or COMP40
Mark Hempstead
TR 10:30-11:45
Robinson Hall 253
COMP 150-01
Cryptography

This is an introduction to cryptography, starting with the first ciphers, and leading up to present day issues. We will discuss how codes and ciphers work, and how they can be broken. We will cover both Private key (Symmetric) and Public Key (Asymmetric) cryptography. Topics include: cryptographic protocols using block ciphers. Methods for key exchange, hashing, message authentication, and digital signatures. Cryptographic protocols regarding secret sharing and digital cash. We will use a mathematical approach to prove properties about the crypto systems we study.

Prerequisite: Requirements: completion of COMP 15 and COMP/MATH 61, or grad standing. Recommendations: Comp 160, or Comp 170, or any 100 level Math course
David Wittenberg
MW 6:00p-7:15p
Online
COMP 150-02
Accessible and Assistive Computing

This course will focus on developing accessible and assistive computational systems. That is, systems that are usable by and helpful to users with disabilities. In addition to learning about accessible and universal design (for example for web accessibility) we will also discuss computational approaches to providing assistance to human users: sensing their behaviors, modeling their goals and plans, and intelligently choosing appropriate (including socially appropriate) actions. We will study these challenges through a series of case studies on state-of-the-art approaches to these problems, from web accessibility and universal design to socially assistive robotics. This course requires some prior programming experience and an exposure to basic algorithms (ME 80 OR (COMP 15 and COMP/MATH 61) OR grad standing), and will focus on the practice of designing accessible and/or assistive systems, with a small project and skill-building through homework assignments and exams.

Elaine Short
MW 3:00-4:15
Online
COMP 150-03
Entrepreneurship for Computer Scientists

(Cross listed with ELS 194-02) 150 ECS is an introductory entrepreneurship course for Computer Science students. The course provides an overview of entrepreneurship, develops an entrepreneurial perspective, and provides a framework for learning the fundamentals of the essential elements of entrepreneurial ventures, specifically directed toward software-related industries and products. Students learn how to develop their technical ideas into potential business opportunities, and to explore their likelihood of becoming viable businesses. They learn how to do market research, to develop go-to-market strategies, value propositions and to differentiate their products or services from actual or potential competitors. The course consists of a balance of lectures, projects, case studies and interaction with entrepreneurs and computer scientists who participate in entrepreneurial organizations.

Gavin Finn
W 6:00p-9:00p
Online
COMP 150-04
Human Factors in Security and Privacy

Does requiring users to change their passwords regularly make them more secure? In theory it should. If passwords are changed regularly, then a stolen credential is only good until the next update. Unfortunately, in practice, users struggle to come up with and remember complex passwords. This leads users to settle for weaker passwords when they know regular updates are required. Further, password updates are generally derivative of the earlier password. This makes them easy to remember, but voids the security benefits of password updates. This is just one example of the need to consider human factors when making security and privacy design decisions. This course is designed as an introduction to a variety of human-interaction problems for security and privacy. The course will cover topics from password management and access control to challenges in online privacy and secure software development. Students will be given an overview and be introduced to relevant literature for each topic. This course will also give students practical experience designing studies to evaluate security and privacy usability issues in system design. Students will be introduced to a variety of methods common in human factors research (e.g., interviews, surveys, diary studies). Throughout the course, students will be expected to complete a group project, piloting a small study.

Daniel Votipka
TR 10:30-11:45
Online
COMP 150-05
Debugging Cloud Computing

Cloud computing, which is the practice of renting software and hardware services from providers who run large-scale data centers, has become critical to modern society. We rely on software running within cloud data centers when shopping (e.g., at Amazon), when conducting financial transactions (e.g., at an online broker), when collaborating at work (e.g., using Google Docs), and even when playing games (e.g., Fortnite). Failures or performance problems within these data centers or the software running on them can have widespread effects and be devastating.

In this course, we will examine failures in cloud environments and discuss important research on tools that use systems knowledge, machine learning, and statistics to help engineers diagnose them. To provide students with necessary background, we will start with a brief introduction to cloud computing and the software systems that make cloud computing possible. The course will involve reading research papers, homework assignments, and coding-based projects. It is recommended for graduate students and advanced upper-level undergraduates.

Prerequisite: Comp 15 and Comp 40 or graduate standing required; Comp 111 recommended.
Raja Sambasivan
TR 1:30-2:45
Online
COMP 151-01
Computing for Developing Regions

The course will cover a series of case studies on the use of computing to solve important problems in the developing regions, such as healthcare, education, and governance. The course will involve a semester long hands-on project which will focus on one of the above challenges. This term's projects will focus on the COVID-19 crisis -- the new challenges and opportunities around using technology to face this pandemic.

Prerequisite: Completion of COMP 15 or graduate standing
Fahad Dogar
MW 1:30-2:45
Online
COMP 151-02
Introduction to Quantum Information and Quantum Computation

This class will provide a first introduction to quantum information and quantum computation. This is a field that is rapidly advancing, with quantum computers with 50-100 noisy qubits expected to appear in the next five years. The class is aimed at students from Chemistry, Computer Science, Mathematics and Physics with sufficient mathematical background. The class will introduce the basic ideas of quantum information and computation: qubits, quantum gates, measurements and simple quantum algorithms. We will cover the no-cloning theorem, quantum cryptography, super-dense coding, teleportation, and, Grovers search. We will also describe the leading hardware implementations of quantum computing – superconducting qubits, ion trap qubits and photonic qubits. The class will include some programming of a simulated quantum computer.

Prerequisite: Math 70 or 72 or consent of instructor.
Peter John Love
TR 12:00-1:15
Online
COMP 152-01
Probabilistic Robotics

Jivko Sinapov
TR 1:30-2:45
Online
COMP 152-02
Visual Analytics

Approved as a category 2 elective in Data Science (analysis and interfaces).

Remco Chang
TR 1:30-2:45
Online
COMP 152-03
Natural Language Processing

An enormous amount of text (news articles, weblog, tweets) is created every day. Natural language processing transforms text into presumably useful data structures, enabling many applications such as real-time event tracking and question answering. In this course, we will study the mathematics and algorithms in NLP to better understand how they do what they do. We will cover a wide range of text analysis methods, include word level (topic and sentiment analysis), syntactical (grammars and parsing), semantic (meanings of words and phrases), and discourse (pronoun resolution and text structure). We will cover both rule-base systems and statistical models. We will code several algorithms applying what we learn in hands-on projects. We will come away with a deeper understanding of how text is processed by a computer.

Prerequisite: Completion of COMP 15, COMP 61, linear algebra (MATH 70, MATH 72, or equivalent), and statistics (ES 56, EE 24, or equivalent); or consent of instructor. Completion of COMP 135, COMP 136, or COMP 131 recommended but not required.
Bonan Min
M 6:30p-9:00p
Online
COMP 152-04
Machine Learning with Limited Annotation

This course will cover the latest research on machine learning in settings where labeled data is not available. In such settings, classical methods are not necessarily the best approaches for algorithms to learn from data. Students will lead and participate in discussions on recent research publications. Students will also complete a research project applying these new methods. In addition to the specific knowledge about the topic area, students will also gain experience reading and understanding research literature, planning and executing research projects, and communicating about machine learning research. Students are expected to have taken COMP 135 or have equivalent experience, broadly defined. We will read about ongoing research on how to solve the challenging task of doing machine learning with limited labeled data. We will read a lot of papers and try to understand the problems they solve and their methods. You will do a mini research project during the semester where you either apply an existing method to an application you are interested in or work on developing and evaluating new methods.

Bert Huang
MW 1:30-2:45
Online
COMP 152-05
Sports Analytics

Megan Monroe
TR 9:00-10:15
Collaborative Learning and Innovation Complex 401
COMP 152-06
Explainable Artificial Intelligence

As machine learning systems are increasingly being considered for employments in contexts where their decisions can have real (positive and negative) impacts on people's lives, scholars and activists have increasingly raised concerns about the transparency and accountability of such systems and their designers. The field of explainable artificial intelligence (XAI) has sprung up in recent years to address some of these concerns by developing systems which can explain the reasons behind their decisions and outputs to users. In this course, we explore this up-and-coming subfield of AI by learning the basic concepts and ideas, and then discussing recent research papers in the field. We will study both the central ideas and concrete systems constructed using these ideas. We will also think more broadly about the assumptions underlying the field of XAI and the ethical debates within the field.

Daniel Kasenberg
MW 10:30-11:45
Online
COMP 160-01
Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Diane Souvaine
MW 9:00-10:15
Online
COMP 160-02
Algorithms

Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Diane Souvaine
MW 10:30-11:45
Online
COMP 167-01
Computational Biology

Computational challenges in molecular biology, including sequence alignment and comparison, genomic annotation, micro array data analysis, and proteomics. Underlying computational techniques such as dynamic programming, hidden Markov models, statistical analyses, and search and optimization procedures. Prerequisites: Comp15 and at least one CS course numbered 100 or higher.

Prerequisite: Comp15 and at least one CS course numbered 100 or higher.
Donna Slonim
MW 3:00-4:15
Online
COMP 168-01
Convex Optimization

(Cross-listed with EE 109) Convex optimization theory and algorithms. Convex sets, convex functions and convex optimization problems; duality theory and optimality conditions; algorithms for solving convex problems including descent, gradient descent, Newton and interior point methods. Examples of application taken from communications, signal processing and other fields. Project.

Prerequisite: Math 70 or graduate standing.
Mai Vu
MW 10:30-11:45
Online
COMP 170-01
Computation Theory

Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages including context-free languages and regular sets. Important problems including the halting problem and language equivalence theorems.

Prerequisite: COMP 15 and COMP/MATH 22 or 61.
Lenore Cowen
TR 12:00-1:15
Online
COMP 171-01
Human-Computer Interaction

Introduction to human-computer interaction, or how computers communicate with people. Methodology for designing and testing user interfaces, interaction styles (command line, menus, graphical user interfaces, virtual reality), interaction techniques (including use of voice, gesture, eye movement), design guidelines, and user interface management software system. Students will design a small user interface, program a prototype, and test the result for usability.

Prerequisite: COMP 15
Robert J. K. Jacob
MW 1:30-2:45
Online
COMP 180-01
Software Engineering

Core principles and ideas that enable development of large-scale software systems, with a focus on programming. Abstraction, modularity, design patterns, specification, testing, verification, and debugging.

Prerequisite: Recommendations: COMP 40
Jeff Foster
MW 3:00-4:15
Online
COMP 181-01
Compilers

In COMP 181, you will learn about the design and implementation of modern compilers. The course will focus on the main steps of general compilation (Scanning, Parsing, Semantic Checking, and Code Generation), while also introducing some specific compilation techniques for language-specific features. Traditional compiler optimizations may also be introduced. Outside the classroom, the focus of the course is an intensive, semester-long project: you and a team will design a small programming language and implement a compiler for it using the OCaml language. The algorithms and concepts you will learn have broad application outside of the course: many programming tasks can be understood as variations of interpretation or translation, and understanding how a compiler operates will further develop your abstract thinking skills and make you a better programmer.

Prerequisite: COMP 40, COMP 105, and COMP 170.
Richard Townsend
TR 1:30-2:45
Tisch Library 302
COMP 205-01
Principles of Data Science in Python

Fundamentals of python programming for data analysis. Common python data structures and algorithms. Design of python programs. Coding standards and practices. Use and creation of software libraries. Examples drawn from data preparation and transformation, statistical data analysis, machine learning, deep learning, and deep data science including recommendation systems and trend analysis. Labs utilizing iPython and the Jupyter data analysis workflow framework.

J Singh
TR 1:30-2:45
Online