Course Schedule
COURSE SCHEDULE: spring 2018
COMP 5-
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
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.

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.

Donna Qualters
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.

JP de Ruiter
MW 10:30-11:45
Anderson Hall 309
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
TR 1:30-2:45
Barnum/Dana Hall 08
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
TR 3:00-4:15
Barnum/Dana Hall 08
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.
Laney Strange
TR 3:00-4:15
Robinson Hall 253
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.
Laney Strange
TR 4:30-5:45p
Robinson Hall 253
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 1:30-2:45
Anderson Hall Nelson Aud.
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.
Mark Sheldon
MW 4:30-5:45p
Robinson Hall 253
COMP 50-01
Autonomous Intelligent Robots

What is intelligence and how can it be implemented in a physical robot? If this question sparks your curiosity, then this course is for you. We will cover algorithms and representations that allow robots to operate autonomously and intelligently in the real world. Topics include mapping and localization, 2D and 3D visual perception for robots, planning and control, machine learning for robots, and human-robot interaction. Through the course, you will learn to program robot applications using the Robot Operating System (ROS), the largest and most popular open-source framework for autonomous robots (http://www.ros.org/). Assignments will include several small C++ programming projects aimed at learning ROS, followed by a team final project on a topic of your choosing. For the assignments and final projects, you will use the TurtleBot2 mobile robots (http://www.turtlebot.com/turtlebot2). At the end of the course, 1) you will have been exposed to the state-of-the-art in autonomous robotics; 2) you will have an understanding of the current research areas, challenges, and open problems; and 3) you will be able to write applications and software modules for robots using ROS.

Jivko Sinapov
MW 3:00-4:15
Halligan Hall 111A
COMP 50-02
Methods of Data Science

Introduction to techniques utilized on a daily basis by a Data Scientist. Modeling techniques for recommendation and search engines, collaborative filtering, text analytics, visualization, and visual analytics. Implications of big data and scalability in data analysis. Laboratory exercises will give practical experience in applying these techniques to real world data in Python and/or R.

Staff
MW 6:00p-7:15p
Room To Be Announced
COMP 50-04
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
Bromfield-Pearson 02
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 06
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.
Zachary Faubion
MW 3:00-3:50
F 3:30-4:20
Bromfield-Pearson 05
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.
Laney Strange
MW 3:00-4:15
Barnum/Dana Hall 08
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
Anderson Hall 312
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 112-01
Networks & Protocols

Design and implementation of computer communication networks, protocols, and applications, with an emphasis on the Internet protocol suite. Network architectures and programming interfaces. Data link, transport, and routing protocols. Congestion sources and remedies. Addressing and naming in local area and wide area networks. Network security and network management.

Fahad Dogar
MW 10:30-11:45
Halligan Hall 111A
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
Pearson 106
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 Nelson Aud.
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 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
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
Halligan Hall 111A
COMP 140-01
Advanced Computer Architecture

This course teaches advanced concepts of modern computer architecture, starting from the basic 5-stage pipelines and progressing to out-of-order superscalar processors, multicore processors, and power-aware computing. 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. In addition, this course describes the current challenges faced by computer architects. These challenges include: power consumption, transistor variability, parallelism, and processor heterogeneity.

Prerequisite: EE 126 or COMP 40
Mark Hempstead
MW 1:30-2:45
Halligan Hall 111B
COMP 150-02
Computational Systems Biology

This course will provide an overview of computational systems biology focusing on select topics such as Flux Balance Analysis, Modularity Analysis, and Metabolomics analysis. Students will explore these concepts by using example cases and writing their own software to collect and analyze data from various biological databases. A term project will require students to define a computational challenge in systems biology and implement and evaluate a solution.

Soha Hassoun
F 9:30-12:00
Halligan Hall 111A
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
T 6:00p-9:00p
Collaborative Learning and Innovation Complex 401
COMP 150-04
Mobile Medical Devices and Apps

Team-based projects to design, build, and present a working medical device prototype. Devices are constructed using Android, iOS, and Arduino based components, using appropriate software for designated functionality and user-interface requirements. Project specification with imposed requirements and constraints, sensor/data acquisition, software architecture, hardware integration, working prototype demonstration, final presentation, and project report are course assignments.

Prerequisite: ES03, ES04, COMP11, COMP 15, junior or higher standing, and permission of instructor. This is an elective for the ECE and CS programs only.
To apply for consideration to take this course, please put your information on the sign-up sheet in the CS front office.
Ming Chow
TR 12:00-1:15
Halligan Hall 111A
COMP 150-05
Natural Language Processing

Natural language processing toolkits such as NLTK, Apache OpenNLP, and Stanford CoreNLP are in wide use as opaque boxes that mysteriously transform text into presumably useful data structures for working with text. In this course we will study the mathematics and algorithms behind these and other NLP toolkits to better understand how they do what they do. We will meet the Singular Value Decomposition and Conditional Random Fields, among other bits of mathematics. We will code several topic modeling and tagging algorithms that use these bits of math--from scratch--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: Linear algebra (MATH 0070, MATH 0072 or equivalent). Statistics (ES 56 or equivalent). Computer programming. Or consent of instructor.
Anthony Bucci
MW 6:00p-7:15p
Halligan Hall 108
COMP 150-06
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
M 9:30-12:00
Halligan Hall 108
COMP 150-07
Information Theory

Information theory as a systematic framework to address fundamental laws and limits of data compression and digital communication. Source coding/data compression; information measures on discrete memory-less sources; practical schemes and algorithms for lossless data compression such as Huffman coding, arithmetic coding, Lempel-Ziv Coding; channel coding for reliable communication and rate distortion for lossy source compression. Advanced topics such as information theoretic cryptography.

Prerequisite: Recommendations: Undergraduate Probability OR EE 104 OR Permission of instructor.
Shuchin Aeron
TR 3:00-4:15
Halligan Hall 111A
COMP 150-08
Cyber in the Civil Sector

There is a myth that the Internet erases borders. But as Internet companies' ability to place localized ads show, that's false. What's more accurate is that the Internet complicates a nation's ability to control of the flow of information within its borders. (This is not a new challenge for sovereign nations; consider the telegraph.) This fluidity has created great economic opportunity and simplified trans-border access, the latter potentially threatening security and other basic state functions. With bits increasingly controlling the world around us, the Digital Revolution poses a highly disruptive threat. In this course, well explore cyber clashes in the civilian sector: from jurisdictional issues and the challenges posed by new technologies to criminal activities and impacts on civil infrastructures. While several of the topics are also covered in International Cyber Conflict: An Introduction to Power and Conflict in Cyberspace, DHP P249, the intersection between the two courses will be relatively minimal. Cyber in the Civilian Sector will have a greater focus on technology and, naturally enough, on the civilian, as opposed to national-security, side of the house.

This course is cross listed in Computer Science, but their primary home is Fletcher. That means it will be taught on the Fletcher academic calendar. It is limited enrollment (thirty students), with half the enrollment from Fletcher and half from AS&E. Students from AS&E admitted by permission of the instructor, with preference for students majoring in computer science and/or political science/IR. If you would like to take Cyber in the Civil Sector, please send a paragraph to Professor Susan Landau, susan.landau@tufts.edu, explaining your interest in the course and your background. You'll be informed of admittance on November 21.

Susan Landau
MW 11:05-12:20
Room To Be Announced
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
TR 10:30-11:45
Cohen Auditorium
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 9:00-10:15
Braker Hall 01
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
Collaborative Learning and Innovation Complex 401
COMP 175-01
Computer Graphics

This course explores the fundamentals of computer graphics, including representing digital images, 2D rasterization and anti-aliasing, 3D rendering via ray casting, ray tracing and radiosity, viewing transformations, 3D shape representation, and an introduction to modeling and computer animation. Assignments and projects require a good working knowledge of the C programming language.

Erik Anderson
MW 3:00-4:15
Anderson Hall 206
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 1:30-2:45
Halligan Hall 111A
COMP 250-01
Privacy in the Digital Age

This module will provide an introduction to the threats to and protections for privacy in the digital age, examining public and private sector threats, and looking at issues from an international point of view. Topics to be covered include privacy threat models, location tracking and first and third party collection by private parties, government threats to privacy, and privacy protective technologies. No programming background needed, but a willingness and interest to play with digital tools is required.

This course is cross listed in Computer Science, but their primary home is Fletcher. That means it will be taught on the Fletcher academic calendar. It is limited enrollment (thirty students), with half the enrollment from Fletcher and half from AS&E. Students from AS&E admitted by permission of the instructor, with preference for students majoring in computer science and/or political science/IR. If you would like to take Privacy in the Digital Age, please send a paragraph to Professor Susan Landau, susan.landau@tufts.edu, explaining your interest in the course and your background. You'll be informed of admittance on November 21.

Susan Landau
T 3:20-5:20p
Room To Be Announced
COMP 260-01
Advanced Algorithms

If you loved your algorithms class and can't wait for more, this is the class for you. In this pleasant and fun class, we will look at some more modern algorithms, some beautiful algorithms gems, and some areas of current research in algorithms. Topics will include using randomness in the design and analysis of algorithms, approximation algorithms, and online algorithms.

Prerequisite: Comp 160 or permission of the instructor.
Lenore Cowen
T 6:30p-9:00p
Halligan Hall 108