Course Schedule
COURSE SCHEDULE: spring 2017
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.

Laney Strange
TR 3:00-4:15
Barnum/Dana Hall 008
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.

Laney Strange
TR 4:30-5:45p
Barnum/Dana Hall 008
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
TR 1:30-2:45
Braker Hall 001
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
TR 3:00-4:15
Braker Hall 001
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
Cabot Auditorium
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: 1:30-2:45 PM or 3-4:15 PM. Sign up during the first week of class.

Prerequisite: COMP 15.
Mark Sheldon
MW 4:30-5:45p
Pearson 104
COMP 50-01
Cyber Security and Cyber Warfare

Interdisciplinary analysis of cybersecurity in the United States and other countries, intended to introduce engineering students to policymaking and intelligence aspects of cybersecurity and liberal arts students to the technical constraints of computer networks and software. Hands-on activities including packet analysis, exploiting a vulnerable system, password cracking, social engineering, reconnaissance, and malware analysis. Examination of state and non-state actors engaged in cyber-espionage, counterintelligence, deterrence, and offensive cyber operations. Guest speakers from private sector, civil liberties groups, and intelligence community.

Prerequisite: PS 61: Introduction to International Relations (for PS and IR majors) or COMP 15: Data Structures (for CS majors in A&S or SOE)
Ming Chow, Jeffrey Taliaferro
TR 3:00-4:15
Crane Room, Paige Hall
COMP 50-07
Introduction to VLSI CAD Algorithms

Introduction to VLSI CAD Algorithms will be a class to learn the challenges and algorithms of CAD for VLSI – i.e., learn to use algorithms from computer science to automatically create and validate VLSI circuits. We will use techniques such as DFS and BFS search, dynamic programming, and branch & bound to solve problems in VLSI timing, logic/layout synthesis and post-silicon test. Depending on student interest, we may also apply the same algorithms to other fields. This class will not use commercial CAD tools (though we will have guest lectures from people in the local CAD industry). Prerequisites are COMP160, or graduate standing, or consent of the instructor.

Prerequisite: Completion of COMP 160 recommended.
Joel Grodstein
TR 4:30-5:45p
Halligan Hall 108
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.
Jessica Dyer
M 9:30-10:20
TR 10:30-11:20
Bromfield-Pearson 006
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.
Moon Duchin
MW 10:30-11:45
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.
Lenore Cowen
TR 10:30-11:45
Halligan Hall 111A
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.
Laney Strange
MW 3:00-4:15
Anderson Hall Nelson Auditorium
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.
Samuel Guyer
TR 12:00-1:15
Halligan Hall 111A
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 1:30-2:45
Barnum/Dana Hall 008
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.
Manos Athanassoulis
MW 4:30-5:45p
Anderson Hall 206
COMP 117-01
Internet-Scale Distributed Systems: Lessons from the World Wide Web

Please note that this course was formerly numbered COMP 150-IDS. The World Wide Web, one of the most important developments of our time, is a unique and in many ways innovative distributed system. This course will explore the design decisions that enabled the Web's success, and from those will derive important and sometimes surprising principles for the design of other modern distributed systems. We will introduce and draw comparisons with more traditional distributed system designs, including distributed objects, client/server, pub/sub, reliable queuing, etc. We will also study a few (easily understood) research papers and some of the core specifications of the Web. Specific topics to be covered include: global uniform naming; location-independence; layering and leaky abstractions; end-to-end arguments and decentralized innovation; Metcalfe's law and network effects; extensibility and evolution of distributed systems; declarative vs. procedural languages; Postel's law; caching; and HTML/XML/JSON document-based computing vs. RPC. The purpose of this course is not to teach Web site development, but rather to explore lessons in system design that can be applied to any complex software system. More detailed course information can be found at http://www.cs.tufts.edu/comp/150IDS/shouldItakeit

Prerequisite: Comp 40 or permission of the instructor.
Noah Mendelsohn
TR 4:30-5:45p
Halligan Hall 111B
COMP 120-01
Web Engineering

Web applications are complex systems that deliver a plethora of functionality to a large number of users, and also exhibit unique behaviors and demands in terms of performance, scalability, usability, and security. Web engineering is an emerging and multidisciplinary process that is used to create quality web applications. This course will discuss the limits of current web technologies, the similarities and differences between web and software engineering, design, information and service architectures, content management, and testing disciplines. Frameworks such as Rails, Spring, and Symfony will be emphasized and used. Projects will involve search, cloud computing, location-based services, and mobile web development.

Prerequisite: Comp 15 and Comp 20, or Consent of Instructor.
Ming Chow
TR 4:30-5:45p
Anderson Hall Nelson Auditorium
COMP 128-01
Numerical Linear Algebra

The two basic computation problems of linear algebra; solution of linear systems and computation of eigenvalues and eigenvectors. (Cross Listed as MATH 128 Numerical Linear Algebra)

Prerequisite: Math 46 and Comp 11.
Misha Kilmer
TR 3:00-4:15
Bromfield-Pearson 101
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.
Thomas Williams
TR 10:30-11:45
Anderson Hall 312
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).
Anselm Blumer
MW 6:00p-7:15p
Halligan Hall 111A
COMP 150-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.

Prerequisite: Completion of COMP 15 or graduate standing
Fahad Dogar
T 6:00p-9:00p
Halligan Hall 111A
COMP 150-02
Deep Learning for Computer Vision

This course investigates current research topics in data-driven object detection, scene recognition, and image-based graphics. We will examine large-scale datasets, convolutional neural networks, and several algorithms useful for understanding and manipulating visual data. These topics will be pursued through independent reading, discussions, student presentations, and projects involving current research problems. Students will train deep networks from scratch and fine-tune popular pre-trained networks. Students will gain experience with commonly used deep learning packages and learn practical techniques for network training. In the final project, students will implement and test their own improvements to state of the art networks.

Prerequisite: At least one of COMP 135 or COMP 136 or COMP 150-NLP.
Genevieve Patterson
TR 7:30p-8:45p
Halligan Hall 111B
COMP 150-03
Experimental Methods for Computer Scientists

Many computer scientists will at some time in their career have to perform experiments, e.g. for usability testing or evaluating human-machine interaction. Although the principles behind it are simple, experimentation is a skill that needs to be learned. This course introduces the basic background knowledge and skills for conducting a proper experiment. It will address the philosophical background, design, planning, execution, statistical analysis, and reporting of experiments involving noisy data sources like humans. Towards the end of the course, the students will perform a small experiment themselves.

JP de Ruiter
TR 10:30-11:45
Barnum/Dana Hall 114
COMP 150-04
Hot Topics in Networking

This course will cover some hot topics in networking, including software-defined networking, network function virtualization, scheduling and resource management for cloud systems, and network support for Internet of Things (IoT). Course will involve reading and presenting research papers, and a semester long research project.

Prerequisite: Completion of COMP 112.
Fahad Dogar
W 6:30p-9:00p
Halligan Hall 108
COMP 150-05
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
T 6:00p-9:00p
Halligan Hall 108
COMP 150-07
Introduction to VLSI CAD Algorithms

Introduction to VLSI CAD Algorithms will be a class to learn the challenges and algorithms of CAD for VLSI – i.e., learn to use algorithms from computer science to automatically create and validate VLSI circuits. We will use techniques such as DFS and BFS search, dynamic programming, and branch & bound to solve problems in VLSI timing, logic/layout synthesis and post-silicon test. Depending on student interest, we may also apply the same algorithms to other fields. This class will not use commercial CAD tools (though we will have guest lectures from people in the local CAD industry). Prerequisites are COMP160, or graduate standing, or consent of the instructor.

Prerequisite: Completion of COMP 160 or graduate standing.
Joel Grodstein
TR 4:30-5:45p
Halligan Hall 108
COMP 150-08
Algorithms and Data Structures

This 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
Greg Aloupis
TR 6:00p-7:15p
Braker Hall 001
COMP 150-09
The Engineering Method of Technical Writing

This course is for graduate and undergraduate students who want to improve their technical writing or who want to learn to write more easily. The course is a full-year, half-credit course, which means that it meets only once per week, and over the course of the year you will earn one full credit.

Participants will read, analyze, and revise their own work, each others' work, and published papers in computer science. The workload is expected to start at 4 to 5 hours per week; as your skills improve, the workload should decline steadily. Grades will be based on in-class exercises and on a portfolio of work done outside of class.

The syllabus and methods for the course are explained at length in my short monograph Learning Technical Writing Using the Engineering Method (http://www.cs.tufts.edu/~nr/pubs/learn.pdf). The books by Williams and Boice will be required.

Prerequisite: This course involves small-group instruction and enrollment is limited; to take the course you must have the consent of the instructor. To obtain the instructor's consent, please send the following information:

  • A short statement of why you are interested in the course and what you hope to get out of it

  • A one-page sample of something you have written on a technical topic

  • Evidence that you can read technical papers in computer science, such as successful completion of at least two of the four courses 40, 105, 160, and 170

Norman Ramsey
F 1:30-2:45
Halligan Hall 111B
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.
Greg Aloupis, Anselm Blumer
TR 4:30-5:45p
Braker Hall 001
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 10:30-11:45
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.
Ben Hescott
MW 9:00-10:15
Cabot Auditorium
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
Anderson Hall Nelson Auditorium