Course Schedule
COURSE SCHEDULE: fall 2018
COMP 5-01
Computational Methods for the Humanities

Introduction to computational methods as applied to Humanities data. Data preparation, natural language processing, probability and statistics, visualization, machine learning, and prediction. Datasets for demonstrations and projects include texts, geographical, archaeological, and numerical data. Lab session and report each week and requires hands-on computing. The class will focus on Classical studies problems when taught by a Classics faculty member and on other areas of the Humanities when taught by others. Graduate students will demonstrate originality in their research by acquiring and preparing their own data and executing thorough cross-checking and assessment of their results. Graduate students taking the class as part of the MA in Digital Tools for PreModern Studies will need to integrate a language component to their research by operating on Latin, Greek, or other texts in an approved language. Cross-listed as CLS 160

Anthony Bucci, Marie-Claire Beaulieu
MW 8:05a-9:20
Room To Be Announced
COMP 5-01
Computational Methods for the Humanities

Introduction to computational methods as applied to Humanities data. Data preparation, natural language processing, probability and statistics, visualization, machine learning, and prediction. Datasets for demonstrations and projects include texts, geographical, archaeological, and numerical data. Lab session and report each week and requires hands-on computing. The class will focus on Classical studies problems when taught by a Classics faculty member and on other areas of the Humanities when taught by others. Graduate students will demonstrate originality in their research by acquiring and preparing their own data and executing thorough cross-checking and assessment of their results. Graduate students taking the class as part of the MA in Digital Tools for PreModern Studies will need to integrate a language component to their research by operating on Latin, Greek, or other texts in an approved language. Cross-listed as CLS 160

COMP 5-01
Computational Methods for the Humanities

Introduction to computational methods as applied to Humanities data. Data preparation, natural language processing, probability and statistics, visualization, machine learning, and prediction. Datasets for demonstrations and projects include texts, geographical, archaeological, and numerical data. Lab session and report each week and requires hands-on computing. The class will focus on Classical studies problems when taught by a Classics faculty member and on other areas of the Humanities when taught by others. Graduate students will demonstrate originality in their research by acquiring and preparing their own data and executing thorough cross-checking and assessment of their results. Graduate students taking the class as part of the MA in Digital Tools for PreModern Studies will need to integrate a language component to their research by operating on Latin, Greek, or other texts in an approved language. Cross-listed as CLS 160

Anthony Bucci, Marie-Claire Beaulieu
MW 8:05a-9:20
Eaton Hall 333
COMP 5-02
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.

Donna Qualters
T 3:00-4:15
Halligan Hall 108
COMP 10-01
Computer Science for All

These days computers are indispensable tools for research. This does not only hold for “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 to perform useful tasks that are tailored to what we want it to do for us.

This course is aimed at people who have no (or very little) previous experience in computer programming, and who not necessarily want to major in computer science (but may find out during the course that they do want to). It will cover some elementary principles of computer science, and writing basic and useful programs in the computer language Python.

Samuel Guyer
TR 9:00-10:15
Room To Be Announced
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.

Mark Sheldon, Samuel Guyer
TR 3:00-4:15
Robinson Hall 253
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.

Mark Sheldon, Samuel Guyer
TR 3:00-4:15
Braker Hall 001
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.
Matias Korman
MW 1:30-2:45
Aidekman Complex Cohen Auditorium
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.
Matias Korman
MW 3:00-4:15
Aidekman Complex Cohen Auditorium
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.
Ming Chow
TR 12:00-1:15
Anderson Hall 112
COMP 40-01
Machine Structure & Assembly-Language Programming

Structure and function of the main components of computer systems: processors, main memory, and disk storage devices. Processor design, including instruction set design and interpretation. Assembly language programming. Implementation issues for high-level languages. Mandatory lab will be held Fridays: sign up in SIS.

Prerequisite: COMP 15.
Noah Mendelsohn
TR 1:30-2:45
Cabot Auditorium
COMP 50-01
Concurrent Programming

When we learn to program, we specify problem solutions as a single sequence of computations in a fixed, determined order. But the world isn’t like that. Deer run into the woods, people talk on their phones, it rains. Nothing forces these things to happen one at a time, in a fixed order. They happen concurrently. We want to write concurrent programs, because we want to model the real world, because our computer systems actually have concurrent activities, and also to improve the performance or usability of our programs. The ubiquity of distributed applications and modern, multicore processors makes concurrent programming an essential skill. This course explores different models of concurrent programming: students will gain competence in conventional shared-memory threads programming, and at least one natively concurrent programming model (actors or CSP). Time permitting, we may look at other models. We’ll look at classic problems (like deadlock) and synchronization mechanisms (semaphores, locks, barriers). Students will complete a substantial team programming project using these tools and techniques, and they will present their work to the class.

Prerequisite: Comp 15
Mark Sheldon
MW 3:00-4:15
Halligan Hall 108
COMP 50-02
Game Design

Game Development provides a rich opportunity to learn about software development methodologies such as managing teamwork, project scope, and user experience. In this course students will learn to develop fun and meaningful interactive experiences using paper and digital prototyping, including the use of programming, art, and audio production software. Comp 15 recommended.

Upon successful completion of this team-based course students will be able to use computer programs and both paper and computer production pipelines to bring a game from design and planning through production to a final playable product.

Prerequisite: COMP 15.
Jason Wiser
T 6:00p-9:00p
Halligan Hall 111A
COMP 61-01
Discrete Mathematics (formerly Comp 22)

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

Prerequisite: Math 11 or 32 or Computer Science 11 or permission of instructor.
Staff
TRF 12:00-1:15
Bromfield-Pearson 005
COMP 61-03
Discrete Mathematics (formerly Comp 22)

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

Prerequisite: Math 11 or 32 or Computer Science 11 or permission of instructor.
Karen Edwards
MWF 10:30-11:20
Pearson 106
COMP 61-04
Discrete Mathematics (formerly Comp 22)

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

Prerequisite: Math 11 or 32 or Computer Science 11 or permission of instructor.
Karen Edwards
TR 1:30-2:20
F 2:30-3:20
Anderson Hall 112
COMP 86-01
Object-Oriented Programming for Graphical User Interfaces (formerly Comp 106)

Object-oriented programming (OOP) and design, using the Java language. General OOP concepts (classes and instances, methods, inheritance) plus specifics of programming in Java, with emphasis on application to graphical user interfaces (GUIs). Design and programming projects using Java and toolkits.

Prerequisite: Comp 15 or permission of the instructor.
Robert J. K. Jacob
MW 1:30-2:45
Halligan Hall 111A
COMP 87-01
Senior Capstone Project in Data Science I

Application of data science and analytic principles to the solution of a real-world problem in a group setting. Requirements analysis, review of available data sources, and proposal of a solution strategy to the problem.

Prerequisite: Senior standing
Alva Couch
TR 3:00-4:15
Terrace Room, Paige Hall
COMP 97-01
Senior Capstone Project I

Requirements analysis and design of a senior capstone project. Requirements analysis and elicitation methods, and prototyping. Design principles and methods, including designing for usability, security, testability, performance, and scaling. Project management and planning, including cost and effort estimation. Writing effective documentation.

Prerequisite: COMP40 and Senior Standing.
Ming Chow
TR 3:00-4:15
Terrace Room, Paige Hall
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
MW 3:00-4:15
Robinson Hall 253
COMP 111-01
Operating Systems

(Crosslisted as EE 128). Fundamental issues in operating system design. Concurrent processes: synchronization, sharing, deadlock, scheduling. Relevant hardware properties of uniprocessor and multiprocessor computer systems.

Prerequisite: Recommendations: COMP 15 and either COMP 40 OR EE 14.
Alva Couch
MW 4:30-5:45p
Crane Room, Paige Hall
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.
Jack Orenstein
TR 6:00p-7:15p
Anderson Hall 212
COMP 116-01
Introduction to Computer 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
Anderson Hall 112
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
MW 6:00p-7:15p
Halligan Hall 111A
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).
Liping Liu
MW 4:30-5:45p
Robinson Hall 253
COMP 146-01
Computer Engineering with Lab

(Cross-listed w/ EE 126.) This course teaches advanced concepts of modern computer architecture, starting from the basic 5-stage pipelines and progressing to out-of-order superscalar processors. This course introduces the techniques used to maximize single-thread performance within the constraints of memory technology, power consumption, and the inherent instruction-level parallelism of applications. Students will also gain hands on hardware experience by implementing a 5-stage MIPS processor in VHDL. Recommendations: EE 14 or COMP 40; and ES4.

Prerequisite: ES4 and either EE14 or COMP 40 with a ‘C’ or better This course assumes that undergraduate students have taken an undergraduate-level introduction to assembly programming (EE14 or COMP40) and are also proficient in digital logic design (ES4 recommended). In addition, this course (EE 126/COMP 46) will be required to take Advanced Computer Architecture (EE 156 and COMP 140) which is typically offered in the spring semester.
Joel Grodstein
TR 9:00-10:15
Anderson Hall 211
COMP 150-01
Working with Corpora

Cross-listed as CLS 191

This course introduces students to methods for working with corpora and more generalized collections of text. The course builds particularly upon services available in the Natural Language Toolkit, but considers as well other workflows (such as https://weblicht.sfs.uni-tuebingen.de/, https://nlp.stanford.edu/software/, https://gate.ac.uk/, etc.). We will consider how NLP can address the two dimensions of scale: working with more materials than humans can read and working with materials in more languages than human beings can learn. The challenge is not simply to work with large bodies in a handful of languages such as English, Chinese, Spanish and Arabic but in the 24 official languages of the EU, the 22 languages with official standing in India, and historical languages of the human cultural record. “Language wrangling” involves the application of all available methods to push beyond translations, whether produced by machines or humans, and to explore the language directly. Linguists have done this for centuries by adding rich annotation to individual texts. NLP and crowd-sourcing allow us to scale these methods up to large collections.

Who this course is for:

- Computer Science students who want to familiarize themselves with the methods and open questions associated with corpora.
- Students from the Humanities and Social sciences who wish to analyze textual sources. While this course will serve students interested in Premodern studies, it can also be of particular interest to students in International Relations who wish to develop research projects working with current sources in various languages as well

Prerequisite: COMP 10, COMP 11, or instruction permission.
Gregory Crane
M 6:00p-9:00p
Eaton Hall 124
COMP 150-02
Program Analysis, Verification, and Synthesis

The idea of software—the interchangeable instructions that control general-purpose computing devices—is one of the major breakthroughs of Computer Science. While we often think of software as human-generated text, in fact from the earliest days of computing, when compiler technology was first developed, researchers have been exploring ways to manipulate and reason about software algorithmically.

In this class, we will study three closely related topics that arose out of this research. We will begin with program analysis, which initially was developed to enable compilers to perform optimization. Today, program analyses are also used to solve a range of software engineering problems, including finding bugs and security vulnerabilities. Next, we will study program verification, which aims to prove that programs are correct. In recent years, researchers have built verified compilers, operating systems, cryptography libraries, and others. Finally, we will study program synthesis, which searches for a program satisfying a specification. Researchers have demonstrated synthesis of synchronization for high-performance parallel code, program inverses, fast Fourier transforms, and more. Program synthesis even underlies the Flash Fill feature of Microsoft Excel.

Each of these topics could be a course on its own, so the goal of this class is to give students a broad overview of these areas and the relationships between them. Throughout the course, students will design an implement basic program analysis, verification, and synthesis tools, and study the theory behind them.

Prerequisite: COMP 105, graduate standing, or instructor consent.
Jeff Foster
MW 3:00-4:15
Halligan Hall 111A
COMP 150-03
Bayesian Deep Learning

The emerging research area of Bayesian Deep Learning seeks to combine the benefits of modern deep learning (scalable gradient-based training of flexible neural networks for regression and classification) with the benefits of modern Bayesian statistical methods to estimate probabilities and make decisions under uncertainty. The goal of this course is to bring students to the forefront of knowledge in this area through coding exercises, student-led discussion of recent literature, and an in-depth project. Covered topics include key modeling innovations (e.g. function approximation and deep generative models), learning paradigms (e.g. variational inference), and implementation using modern automatic differentiation frameworks. By completing a 2-month self-designed research project, students will gain experience with designing, implementing, and evaluating new contributions in this exciting research space.

Prerequisite: COMP 135 (Introduction to Machine Learning) or COMP 136 (Statistical Pattern Recognition) or permission of the instructor
Michael Hughes
TR 3:00-4:15
Halligan Hall 111A
COMP 150-04
Reinforcement Learning

"Reinforcement learning problems involve learning what to do --- how to map situations to actions --- so as to maximize a numerical reward signal." - Sutton and Barto ("Reinforcement Learning: An Introduction", course textbook)

This course will focus on agents that much learn, plan, and act in complex, non-deterministic environments. We will cover the main theory and approaches of Reinforcement Learning (RL), along with common software libraries and packages used to implement and test RL algorithms. The course is a graduate seminar with assigned readings and discussions. The content of the course will be guided in part by the interests of the students. It will cover at least the first several chapters of the course textbook. Beyond that, we will move to more advanced and recent readings from the field (e.g., transfer learning and deep RL) with an aim towards focusing on the practical successes and challenges relating to reinforcement learning.

There will be a programming component to the course in the form of a few short assignments and a final projects.

Prerequisite: tudents are expected to be proficient programmers in at least one of the following languages: C++, Java, or Python. Prior coursework (or experience) in Artificial Intelligence and/or Machine Learning is highly recommended, but not required.
Jivko Sinapov
TR 1:30-2:45
Halligan Hall 108
COMP 150-06
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.

Prerequisite: Completion of COMP 15 or graduate standing
Fahad Dogar
W 1:20-4:20
Halligan Hall 102
COMP 150-07
Computational Models in Cognitive Science

This course will provide an overview of different computational models and modeling techniques in cognitive science. Students will work with different kinds of computer simulation to develop models and study their properties. A term project will require students to develop and implement their own model for a task of their choice.

Prerequisite: COMP15, COMP/MATH 22 or 61
JP de Ruiter
TR 10:30-11:45
Halligan Hall 111A
COMP 150-08
Cyberlaw and Cyberpolicy

This course is an introduction to the legal issues of cyberspace. Legal issues in this domain are complex. Technology has been evolving faster than the law's ability to handle the changes, so partially this course will be an education in the legislating and policy making of moving targets. It will also be an education in jurisdiction, privacy, surveillance, and copyright as it relates to the Internet. The perspective will be from US law and jurisprudence, although there will be periodic forays into international issues. Topics covered will include cyberlaw and cybergovernance, the Digital Revolution and its impact on First, Fourth, and Fifth Amendment issues, copyright in the Digital Age, and the Computer Fraud and Abuse Act.

Susan Landau
MW 3:00-4:15
Science and Technology 135
COMP 150-09
Software Engineering

Software engineering is an engineered discipline in which the aim is the production of software products, delivered on time and within a set budget, that satisfies the client’s needs. It covers all aspects of software production ranging from the early stage of product concept to design and implementation to post-delivery maintenance. This course covers the major concepts and techniques of software engineering including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools so that students can prepare for their future careers as software engineers. The course will combine a strong technical focus with a project providing the opportunity to obtain hands-on experiences on entire phases and workflow of the software process

Khaled ElMahgoub
TR 6:00p-7:15p
Halligan Hall 108
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.
Karen Edwards
TR 10:30-11:45
Pearson 104
COMP 160-03
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.
Matias Korman
TR 4:30-5:45p
Robinson Hall 253
COMP 163-01
Computational Geometry

(Cross-listed as MATH 163.)Design and analysis of algorithms for geometric problems. Topics include proof of lower bounds, convex hulls, searching and point location, plane sweep and arrangements of lines, Voronoi diagrams, intersection problems, decomposition and partitioning, farthest-pairs and closest-pairs, rectilinear computational geometry.

Prerequisite: COMP 160 or permission of the instructor
Diane Souvaine
T 9:00-11:30
Anderson Hall 312
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.
Lenore Cowen
R 6:30p-9:00p
Halligan Hall 111A
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.
Megan Monroe
TR 12:00-1:15
Robinson Hall 253
COMP 177-01
Visualization

Visualization as a tool for data analysis, recall, inference, and decision-making. Tools for visual description and presentation. Principles of effective visualization, including data-visual mapping, interaction techniques, color theory, cognitive and perceptual psychology, and human factors of visual depictions of data.

Prerequisite: Comp15 and Comp61, or permission of instructor.
Megan Monroe
TR 10:30-11:45
Halligan Hall 108
EN 1-01
Intro to Computational Design

Can we be inspired by caterpillars to design useful robots? Can we use computers to deduce the neuro-mechanical commands that make a caterpillar move forward? What do caterpillars and soft-tissue robots have in common? This class brings such interdisciplinary research experiences to first-year Engineering students through the lens of computational design. We learn in this course about computational modeling, the meaning of computational design and how it can help engineers in making best design decisions. The course will use MATLAB as a computational platform, and cover fundamentals such as a solution space, design decision variables, constraints, optimal points within the space and searching the design space using efficient algorithms, exhaustive enumeration, and approximate algorithms.

Soha Hassoun
MW 1:30-2:45
Halligan Hall 108
EN 1-04
Simple Robotics

Introduction to robot construction, programming, computer vision, event-based programming, artificial intelligence, and elementary controls. Basic principles of robotics for students with minimal or no prior programming/building background. In-class competition-based laboratories and hands-on group projects using the LEGO MINDSTORMS platform.

Ethan Danahy
MW 3:00-4:15
Anderson Hall 208