| COMP 5-01 |
Computational Methods for the HumanitiesIntroduction 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 |
MW 1:30-2:45 Eaton Hall 333 |
| COMP 5-02 |
Teaching Computer ScienceThis 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. |
T 10:30-11:45 Halligan Hall 102 |
| COMP 11-01 |
Introduction to Computer ScienceThe 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. |
TR 3:00-4:15 Barnum/Dana Hall 08 |
| COMP 11-02 |
Introduction to Computer ScienceThe 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. |
TR 4:30-5:45p Barnum/Dana Hall 08 |
| COMP 15-01 |
Data StructuresA 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. |
TR 1:30-2:45 Robinson Hall 253 |
| COMP 15-02 |
Data StructuresA 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. |
TR 3:00-4:15 Robinson Hall 253 |
| COMP 20-01 |
Web ProgrammingAn 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. |
TR 12:00-1:15 Anderson Hall Nelson Auditorium |
| COMP 40-01 |
Machine Structure & Assembly-Language ProgrammingStructure 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: 1:30-2:45 PM or 3-4:15 PM. Sign up during the first week of class. Prerequisite: COMP 15. |
TR 1:30-2:45 Cabot Auditorium |
| COMP 46-01 |
Computer Engineering with Lab(Cross-listed w/ EE 126.) Topics covered include computer abstractions, performance measurements, instruction set architectures, designing processor datapath and control, pipelining, memory hierarchy, I/O, multiprocessors. The associated lab consists of designing, implementing, and validating a simplified MIOS processor using VHDL, a hardware description language. Prerequisite: Recommendations: EE 14 |
TR 1:30-2:45 Halligan Hall 108 |
| COMP 50-01 |
Concurrent ProgrammingWhen 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 |
MW 3:00-4:15 Anderson Hall 212 |
| COMP 50-02 |
Game DesignGame 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. |
T 6:00p-9:00p Halligan Hall 102 |
| 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. |
TRF 12:00-12:50 Bromfield-Pearson 005 |
| COMP 61-02 |
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. |
TR 1:30-2:20 F 2:30-3:20 Bromfield-Pearson 101 |
| 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. |
MW 3:00-4:15 Robinson Hall 253 |
| 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. |
MW 3:00-4:15 Anderson Hall Nelson Auditorium |
| COMP 97-01 |
Senior Capstone Project IRequirements 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. |
MW 3:00-4:15 Eaton Hall 206 |
| COMP 105-01 |
Programming LanguagesPrinciples 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). |
MW 9:00-10: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. |
MW 4:30-5:45p Lane Hall 100 |
| COMP 116-01 |
Introduction to Computer SecurityA 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. |
TR 4:30-5:45p Barnum/Dana Hall 104 |
| COMP 135-01 |
Introduction to Machine LearningAn 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). |
MW 4:30-5:45p Robinson Hall 253 |
| COMP 136-01 |
Statistical Pattern RecognitionStatistical 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. |
MW 1:30-2:45 Barnum/Dana Hall 104 |
| COMP 150-01 |
Machine Learning for Ecology and SustainabilityThis course will focus on machine learning methods for ecological and environmental study. We will cover three topics: data collection with learning system, data modeling in ecosystem, and policy making for sustainability. Data collection needs machine learning in tasks like noise reduction, sensor data processing, and effort allocation. Data modeling builds statistical/ML models to answer our ecological questions about the ecosystem. Policy making aims to optimize a policy of management through mathematical optimization with uncertainty. In this course, we will mainly read papers from related fields after a short tutorial of machine learning at the beginning. Basic statistics is necessary. Prerequisite: Previous courses in machine learning or artificial intelligence are helpful but not required. |
MW 1:30-2:45 Collaborative Learning and Innovation Complex 204 |
| COMP 150-02 |
Developmental RoboticsThis class serves as an introduction to the interdisciplinary field of Developmental Robotics, which crosses the boundaries between robotics, artificial intelligence, and developmental psychology. The goal of the field is to create autonomous robots that are intelligent and adaptable in the real world rather than in very limited domains, situations and environments. The class will focus on representations and algorithms that enable a robot to continuously learn about its physical or social environment through its own interaction with it. Topics include overview of robotics; robotics cognitive architectures; deep learning for visual and non-visual sensory data; unsupervised, self-supervised, and reinforcement learning in robotics; learning object affordances; and, theories of cognitive development and their applications to robotics. There will be several small homework assignments and one large class project, with the goal of producing work worthy of publication. You will use physics-based robot simulators as well as real robots as part of the final project. By the end of this class you will have an understanding of the current state of the art of the field and will be able to conduct original research within it. |
TR 3:00-4:15 Science and Technology 136 |
| COMP 150-03 |
Computational Models in Cognitive ScienceThis 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 |
TR 10:30-11:45 Halligan Hall 111A |
| COMP 150-04 |
Algorithms and Data StructuresThis course offers an opportunity to expand your knowledge on various topics involving algorithms, data structures and graphs. Often these topics are intertwined; e.g., to create efficient algorithms, it may be useful to design data structures or use existing ones. We will cover a range of topics, such as network and path approximation, all-pairs shortest paths, near-planarity, string matching, linear programming, Fibonacci heaps, balanced trees (Splay, WAVL, Suffix), skip lists, fractional cascading, high-dimensional range counting, etc. These are topics that are useful to know, as one prepares for advanced interviews and/or further graduate work. As an elective, this course will aim to let each student focus more on topics that they are interested in. Evaluation will be primarily based on participation and a project. Prerequisite: Completion of COMP 160, or permission of instructor. |
TR 7:30p-8:45p Robinson Hall 253 |
| COMP 150-05 |
Mobile DevelopmentMobile has an enormous impact on our lives and it is linking virtually the entire human population. Students will work in pairs to design, implement, test, publish, and support mobile applications including web-based APIs. The Android mobile platform will be predominately used. Topics include constraints in mobile development, app lifecycle, permissions model, widgets, layouts, event handling, 2D graphics, networking, geolocation, threat landscape. There will also be an exercise to reverse engineer mobile apps. Lower-level topics including the Android kernel and the radio layer will also be discussed. |
TR 1:30-2:45 Halligan Hall 111A |
| COMP 150-06 |
Natural Language ProcessingIntroduction to natural language processing, the field of computer science that is concerned with the interactions between computers and human languages. We will develop a toolbox of building-block models, algorithms and data structures for the syntactic and semantic processing of natural language data, which will then allow the development of applications such as summarization, question-answering and translation. Hands-on experience via problem sets and final project using the Natural Language Toolkit (NLTK) platform for development in Python. Prerequisite: Comp 40 required and ES56 or Math 161 recommended. |
TR 9:00-10:15 Halligan Hall 111A |
| COMP 150-07 |
Computer VisionThis course is an introduction to low and intermediate level Computer Vision. We will learn how to design algorithms that process visual scenes to automatically extract information. The course will cover fundamental principles and important applications of computer vision, including image formation, processing, detection and matching features, image segmentation, and multiple views. |
TR 6:00p-7:15p Halligan Hall 111A |
| COMP 150-08 |
The Discrepancy MethodThe Discrepancy Method is one of the most exciting and beautiful recent developments in mathematics and theoretical computer science. Closely related to the probabilistic method and derandomization, it touches areas as diverse as machine learning, number theory, computational geometry, circuit complexity, and linear programming. The probabilistic method was developed by Paul Erdos to demonstrate the existence of certain objects by showing that they have a positive probability of existence, and derandomization attempts to make this practical by converting the probability calculation into a construction algorithm. We will be using Bernard Chazelle's "The Discrepancy Method", available at his web site at Princeton. We hope to bring together computer science and mathematics students through readings, discussions, and student papers or presentations. Prerequisite: The ideal participant should have done well in COMP 160 or be a mathematics senior or graduate student. |
TR 10:30-11:45 Room To Be Announced |
| COMP 150-09 |
Cloud ApplicationsCloud computing powers the Internet presence and applications of established and younger companies such as BMW, GE, Netflix, and Spotify. Shouldn't you add cloud computing to your development toolbox? In this course, you will learn how to leverage cloud computing for the development of applications by writing and running code on cloud providers. An application, for the purpose of this course, can be a web application, the backend of a smartphone or desktop application, or a big data analysis. We will start with an overview of cloud computing fundamentals and infrastructure (e.g. VM/container, storage, network, and datacenter), then move on to the architecture of a typical cloud application, the essential data stores (i.e. relational, key-value, and object stores), MapReduce, and how to meet production demands such as elasticity, fault-tolerance, and operational cost. Your semester-long project may also explore cloud services such as CDN, third-party RESTful APIs, and machine learning. At the end this Fall, you will be able to choose the cloud platform that best meets the demands of your applications, to balance the trade-offs between competing, non-equivalent cloud services such as relational databases and key-value stores, and to implement applications employing a number of cloud services. |
MW 6:00p-7:15p Halligan Hall 111A |
| COMP 160-01 |
AlgorithmsIntroduction 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. |
TR 6:00p-7:15p 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 |
|
| COMP 167-01 |
Computational BiologyComputational 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. |
MW 10:30-11:45 Halligan Hall 111A |
| COMP 170-01 |
Computation TheoryModels 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. |
TR 12:00-1:15 Robinson Hall 253 |
| COMP 177-01 |
VisualizationVisualization 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. |
TR 10:30-11:45 Anderson Hall 208 |
| COMP 250-01 |
Run-Time SystemsProgramming-language run-time systems have grown increasingly capable, to a point where a modern run-time system performs many of the same tasks as a 1970s operating system, and can even be used as the basis for an operating system. COMP 250RTS is intended to help us understand the current states of art and practice in the design and implementation of run-time systems. The course is structured as a reading course: participants will meet each week to discuss a paper. Each discussion will be guided by questions to be disseminated in advance. Students will take turns helping to prepare the questions. At the end of term, each student will have the option of delivering either a professional review of one paper or of writing a short position paper (2 to 4 pages) identifying an interesting problem to be worked on in the future. Reviews must be individual work; position papers may have multiple authors. There are no homeworks, projects, or exams. Enrollment is by permission of instructor. To enroll, a student must be able to read research papers of the sort found in PLDI, OOPSLA, ICFP, ISMM, ESOP, Compiler Construction, and the like. Graduate standing is encouraged. |
MW 3:00-4:15 Halligan Hall 111A |
| EN 1-04 |
Intro to Computational DesignCan 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. |
MW 1:30-2:45 Halligan Hall 108 |
| EN 1-06 |
Simple RoboticsIntroduction 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. |
MW 3:00-4:15 Bromfield-Pearson 101 |
summer 2017