| COMP 5-01 |
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. |
|
| COMP 5-01 |
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. |
R 4:30-7:30p Room To Be Announced |
| COMP 5-02 |
Exploring Computer ScienceHow does one translate a strategy written in English into executable computer code written in the C++ programming language or some other high-level language? How does one evaluate two different strategies for solving the same problem? What sorts of problems are solved well by computers? How can the solutions be displayed graphically? This course is intended for those who have NO programming experience. This sampling of various topics within the field of computer science will give the student a taste of the broader spectrum that constitutes computer science. The course will include a general introduction to the field of computer science, to the emacs editor, to the C++ programming language, and to the Linux operating system. Prerequisite: A sincere interest in learning more about computer science and NO prior programming experience. |
F 10:30-11:45 Online (synchronous) |
| COMP 10-01 |
Computer Science for AllComputers are indispensable tools for research. This does not only hold for more technical fields such as physics or chemistry but also for the Humanities and the Social Sciences. While most students are competent users of standard software such as word processing or spreadsheets, the real power of the computer is unleashed when we are able to program it ourselves and make it do exactly what we want it to do.
|
TR 9:00-10:15 Online (synchronous) |
| 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 1:30-2:45 Online |
| 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 3:00-4:15 Online |
| COMP 12-01 |
Computer Science for Future Presidents |
TR 9:00-10:15 Online (synchronous) |
| COMP 13-01 |
How Systems Work |
MWF 10:30-11:45 Online (synchronous) |
| 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. |
MW 3:00-4:15 Online (synchronous) |
| 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. |
MW 4:30-5:45p Online (synchronous) |
| 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. |
MW 4:30-5:45p Online (synchronous) |
| COMP 23-01 |
Game DesignPrinciples, design, and development of games. Game structure, engineering, physics, testing, 2D and 3D rendering, user interfaces, sound, and animation. Security of online games. Applications of Economics, Music, and Psychology in crafting games. Projects include writing game design documents, developing an interactive fiction game, and building a functional game in a team. Prerequisite: Recommended: Comp 15. |
T 6:00p-9:00p Online (synchronous) |
| COMP 40-01 |
Machine Structure & Assembly-Language ProgrammingIn COMP 40, you will learn about both high-level programming design principles and the low-level structure of computing machines. Design strategies will focus on modularity, abstraction, and separation of interface from implementation. The following topics on machine structure are covered: memory, caches, registers, machine arithmetic, and bitwise operations. We will also investigate the structure of assembly code, relocatable object code, binary machine code, and the translations between them. You will gain a deep understanding of all of these concepts via large-scale, realistic programming projects.
|
TR 1:30-2:45 Online (synchronous) 104 |
| COMP 61-01 |
Discrete Mathematics(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs. Prerequisite: Math 32 or Computer Science 11 or permission of instructor. |
MW 12:00-1:15a Barnum/Dana Hall 008 |
| COMP 61-02 |
Discrete Mathematics(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs. Prerequisite: Math 32 or Computer Science 11 or permission of instructor. |
MWF 10:30-11:20 Online (synchronous) |
| COMP 61-03 |
Discrete Mathematics(Cross-listed as Mathematics 61.) Sets, relations and functions, logic and methods of proof, combinatorics, graphs and digraphs. Prerequisite: Math 32 or Computer Science 11 or permission of instructor. |
MWF 1:30-2:20 Online (synchronous) |
| 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 1:30-2:45 Online (synchronous) |
| COMP 87-01 |
Senior Capstone Project in Data Science IApplication 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 |
TR 3:00-4:15 Online |
| 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. |
TR 3:00-4:15 Online (asynchronous) |
| 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 3:00-4:15 Online (asynchronous) |
| 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 Online |
| COMP 112-01 |
Networks & ProtocolsDesign 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. Prerequisite: Comp 15 and one of EE 14 or Comp 40 |
MW 10:30-11:45 Online |
| COMP 115-01 |
Database SystemsFundamental 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. |
MW 6:00p-7:15p Online |
| COMP 116-01 |
Computer System 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 Online |
| COMP 117-01 |
Internet-Scale Distributed Systems: Lessons from the World Wide WebPlease 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 https://www.cs.tufts.edu/comp/117/shouldItakeit Prerequisite: Comp 40 or permission of the instructor. |
TR 4:30-5:45p Online (synchronous) |
| COMP 118-01 |
Cloud ComputingCloud computing fundamentals, including cloud architecture, scalability, elasticity, and metrics of cloud performance including service-level objectives (SLOs) and service-level agreements (SLAs). Cloud programming models and abstractions including Map/Reduce. Persistent storage mechanisms, including key/value stores and cold storage. Geo-distributed cloud systems. Cloud networking, including data center architecture, software defined networking, and middleboxes. Cloud security. Prerequisite: COMP 15 and (COMP 40 or EE 14) or CS Grad standing or CS postbac |
TR 1:30-2:45 Online (synchronous) |
| COMP 119-01 |
Big Data "Big Data" deals with techniques for collecting, processing, analyzing and acting on data at internet scale: unprecedented speed, scale, and complexity.
|
TR 3:00-4:15 Online (synchronous) |
| COMP 125-01 |
Numerical Analysis(Cross-listed as MATH 125.) Analysis of algorithms involving computation with real numbers. Interpolation, methods for solving linear and nonlinear systems of equations, numerical integration, numerical methods for solving ordinary differential equations. Prerequisite: Recommendations: MATH 51 and programming ability in a language such as C, C++, Fortran, or Matlab. |
MW 1:30-2:45 Room To Be Announced |
| COMP 131-01 |
Artificial IntelligenceHistory, 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. |
TR 6:00p-7:15p Online (synchronous) |
| COMP 133-01 |
Human-Robot InteractionThis course will provide an overview of the up and coming field of human-robot interaction (HRI) which is located squarely in the intersection of psychology, human factors engineering, computer science, and robotics. HRI has become a major research focus recently with the NSF's National Robotics Initiative and the push countries around the globe to develop robots for various societal tasks, from new flexible and adaptive robots for industrial manufacturing, to socially assistive robots for eldercare. In this course, we will examine this field from an interdisciplinary perspective, reading key papers in HRI that intersect computer science, robotics, cognitive and social psychology (since there is no suitable textbook yet, all reading materials will be made available). Students will give short presentations on HRI studies and designs and work in interdisciplinary groups on a term project which will require them to design and conduct an HRI study. Prerequisite: Senior or graduate standing in Computer Science, or permission of instructor. |
MW 3:00-4:15 Online (synchronous) |
| COMP 134-01 |
Computational Models in Cognitive Science |
TR 10:30-11:45 Online (synchronous) |
| 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 Online (synchronous) |
| COMP 137-01 |
Deep Neural Networks |
TR 10:30-11:45 Online (synchronous) |
| COMP 138-01 |
Reinforcement Learning |
TR 1:30-2:45 Online (synchronous) |
| 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. |
MW 1:30-2:45 Room To Be Announced |
| COMP 150-01 |
Network ScienceMathematical foundations of the study of graphs and networks that arise as social, biological and Internet networks. Random graph models, community structure and inference problems, network dynamics, cascading. Example networks drawn from the application domains will be case studies as a companion to the general mathematical theory. Approved as a category 2 elective in Data Science (analysis and interfaces). Prerequisite: Prerequisites: Comp 15 and either Math 61 or any mathematics class numbered 100 or higher, or graduate standing. |
TR 12:00-1:15 Online (synchronous) |
| COMP 150-02 |
Simple Virtual Machines |
MW 1:30-2:45 Online (synchronous) |
| COMP 150-04 |
Software Testing |
MTWRF 12:00a-12:00a Online (asynchronous) |
| COMP 150-05 |
Intro to Mobile App Dev with iOS & Swift |
T 6:30p-9:00p Online (synchronous) |
| COMP 150-06 |
Ethical Issues in Computer Science and TechnologyA study of ethical issues connected with computer science and computing technology. We will read in the original philosophical literature of ethics to examine various theories of what is or is not ethical, and look at justifications for ethical behavior. These readings will be paired with case studies examining ethical or non-ethical uses of computing technology. Cross-listed with COMP 155-01 |
TR 12:00-1:15 Online (asynchronous) |
| COMP 151-01 |
Principles of Internet CommunicationThis course focuses on three aspects of the Internet: how it works (design of key protocols and applications), why it works like that (design trade-offs and alternate solutions), and how can you make it better (proposals to make the Internet better). A major emphasis will be on the basic performance and engineering tradeoffs underlying the design of the Internet. Topics to be covered include: networked applications (e.g., web, p2p), reliability, congestion and flow control, routing, addressing, naming, wireless, security, and new Internet architectures. We will also cover several classic and recent research papers in networking. Prerequisite: This course should be accessible to anyone with some background in CS and programming -- the recommended pre-requisite is COMP-15. Also note that this course shares its lectures and exams with COMP 112 - Networking; the only difference is in the programming assignments/projects. Students should only enroll in one of these two courses. |
MW 10:30-11:45 Online (synchronous) |
| COMP 152-01 |
Statstical Bioinformatics in RThe analysis and interpretation of multivariate biological data sets requires an understanding of statistical and computational methods and tools. This course will introduce students to underlying concepts and specific tools for working with several types of high-dimensional biological data using the R programming language. Topics include probabilistic distributions, statistical modeling, hypothesis testing, data visualization and cleaning, supervised and semi-supervised learning, network and graph representations of biomedical data. Applications include RNA-sequencing, metagenomics, phylogenetics, and disease informatics. Learning will be supported through regular computational homework assignments and a final project including computational and written components and a project presentation. Prerequisite: Comp 15 or equivalent, or graduate standing (with permission of instructor); some prior experience in R. |
MW 10:30-11:45 Online (synchronous) |
| COMP 152-02 |
Data Science for SustainabilityCrosslisted as ME 193. This course explores emerging topics in data science and statistical learning with applications to the three pillars of sustainability (environmental, economic, and social). Students learn to build, estimate, and interpret models that describe phenomena in the broad area of energy and environmental decision-making with an emphasis on social justice. Students leave the course as both critical consumers and responsible producers of data-driven analysis. The objectives of this class include i) learning a suite of data-driven modeling and prediction tools, ii) building the programming and computing expertise to use those tools, and iii) developing the ability to formulate an analysis to answer sustainability questions of interest to industry and/or government partners. Prerequisite: This course uses Python. Prior experience with statistics and programming is required. |
TR 1:30-2:45 Online |
| COMP 155-01 |
Ethical Issues in Computer Science and TechnologyA study of ethical issues connected with computer science and computing technology. We will read in the original philosophical literature of ethics to examine various theories of what is or is not ethical, and look at justifications for ethical behavior. These readings will be paired with case studies examining ethical or non-ethical uses of computing technology. |
TR 12:00-1:15 Online (asynchronous) |
| COMP 156-01 |
Software EngineeringSoftware 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. Prerequisite: COMP 40, graduate standing, or instructor consent. |
MW 6:00p-7:15p Online (asynchronous) |
| 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. |
MW 9:00-10:15 Online (asynchronous) |
| COMP 160-02 |
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. |
MW 10:30-11:45 Online (asynchronous) |
| 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. |
MW 9:00-10:15 Online (synchronous) |
| COMP 181-01 |
CompilersTranslation and implementation of programming languages. Parsing, code generation, and optimization. Compiler design projects for simple block-structured programming languages are used to illustrate the concepts and methods. Prerequisite: COMP 40, COMP 105, and COMP 170. |
TR 10:30-11:45 Online (synchronous) |
| COMP 205-01 |
Principles of Data Science in PythonFundamentals of python programming for data analysis. Common python data structures and algorithms. Design of python programs. Coding standards and practices. Use and creation of software libraries. Examples drawn from data preparation and transformation, statistical data analysis, machine learning, deep learning, and deep data science including recommendation systems and trend analysis. Labs utilizing iPython and the Jupyter data analysis workflow framework. |
TR 6:00p-7:15p Online (synchronous) |
| COMP 250-02 |
Visualization SeminarVisual analytics is the science of combining interactive visual interfaces and information visualization techniques with automatic algorithms to support analytical reasoning through human-computer interaction. People use visual analytics tools and techniques to synthesize information and derive insight from massive, dynamic, ambiguous, and often conflicting data, and to communicate their findings effectively for decision-making. This course assumes the student to have some knowledge in building interactive visual interfaces (in 2D or 3D), and will examine recent papers in perceptual theories, cognitive principles, data storage methods, and interactive machine learning techniques related to using visualizations to analyze and explore data. The goal of the course is to gain an understanding of the state-of-the-art in these areas and to identify potential new research projects and directions. |
TR 1:30-2:45 Online (synchronous) |
| COMP 291-01 |
Seminar in Computer ScienceA weekly seminar with guest speakers discussing research challenges and recent advances in Computer Science. Pass/fail only. To receive credit, students must attend and provide feedback for at least 50% of the seminars. Prerequisite: Ph.D. standing in Computer Science |
R 3:00-4:15 Online (synchronous) |
| EN 1-01 |
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 Online (synchronous) |
| EN 1-04 |
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. |
TR 12:00-1:15 Science and Technology 136 |
summer 2020